Specific uses

Photocopied subject

As explained in Printing and exam, it is not always possible to photocopy one answer sheet to give to several students. However, when using a separate answer sheet and when questions and answers are not to be shuffled, you can photocopy the subject, and print all the answer sheets separately. We detail here the proper way to follow.

  • Use separateanswersheet package option (see Package options).

  • Write the subject before calling \onecopy command or outside examcopy environment.

  • Use \AMCformS to output answer boxes in each answer sheet, inside \onecopy/examcopy.

Here is a minimal example:

\documentclass[a4paper]{article}
\usepackage[separateanswersheet]{automultiplechoice}
\begin{document}

\noindent{\bf Subject}

\begin{question}{sum}
  How much are one plus one?
  \begin{choices}
    \wrongchoice{1}
    \correctchoice{2}
    \wrongchoice{3}
  \end{choices}
\end{question}

\begin{question}{k2}
  How high is the K2?
  \begin{choices}
    \wrongchoice{around 8000m}
    \correctchoice{around 8600m}
    \wrongchoice{around 9000m}
  \end{choices}
\end{question}

\AMCcleardoublepage

\onecopy{5}{

\AMCformBegin

{\large\bf Answer sheet:}
\hfill \namefield{\fbox{
    \begin{minipage}{.5\linewidth}
      Name:

      \vspace*{.5cm}\dotfill
      \vspace*{1mm}
    \end{minipage}
  }}

\AMCformS

}

\end{document}

You will get from this LaTeX file one subject (sheet numbered 0) to print and photocopy to all students, and several answer sheets to print (one for each student).

Post correcting

Suppose you want to use a single generic answer sheet for all your exams. You simply print answer boxes on it (say 5 for each questions, and 40 questions), and give the students a subject that you wrote somewhere else. The point here is that the correct choices are not pointed out in the LaTeX file, so that AMC does not know about them. The solution is to give one answer sheet to the teacher to fill correct choices. Then, after scanning and AMC analysis, you simply have to tell AMC which is the teacher completed answer sheet.

To implement this idea, follow these rules:

  • Use postcorrect, insidebox and noshuffle package options (see Package options).

  • Only use \wrongchoice for all your choices (never \correctchoice).

Here is a minimal example:

\documentclass[a4paper]{article}
\usepackage{multicol}
\usepackage[insidebox,noshuffle,postcorrect]{automultiplechoice}

\begin{document}

\onecopy{5}{

\noindent
\begin{tabular}{|l|l|l|}
\hline
student number & class & subject\\
\hline
 \vspace{-0.25cm}
 & &\\
\AMCcode{StudentNum}{10}&
\AMCcode{class}{2}&
\AMCcode{subject}{3}
\\
\hline
\end{tabular}
\hfill\namefield{\fbox{
    \begin{minipage}{.25\linewidth}
      Name:

      \vspace*{.5cm}\dotfill

      \vspace*{.5cm}\dotfill
      \vspace*{1mm}
    \end{minipage}
  }}\hfill


\vspace{.5cm}
\noindent\hrulefill

\begin{multicols}{2}\columnseprule=.4pt

\begin{question}{01}
\begin{choicescustom}
\wrongchoice{}%
\wrongchoice{}%
\wrongchoice{}%
\wrongchoice{}%
\wrongchoice{}%
\end{choicescustom}
\end{question}

\begin{question}{02}
\begin{choicescustom}
\wrongchoice{}%
\wrongchoice{}%
\wrongchoice{}%
\wrongchoice{}%
\wrongchoice{}%
\end{choicescustom}
\end{question}

% continue here to get as many questions as needed...

\end{multicols}

}

\end{document}

You can then process the LaTeX file in AMC, print the sheets, scan them after the exam, and start AMC automatic data capture (including the teacher sheet). When you click on Mark in the Marking tab, letting Update marking scale ticked, you will be prompted for the teacher answer sheet number. You can then continue as usual.

You can also write the letters outside the boxes: replace the insidebox option with outsidebox, and write your questions in the following way:

\begin{question}{01}
  \begin{choicescustom}
    \wrongchoice{A }%
    \wrongchoice{B }%
    \wrongchoice{C }%
    \wrongchoice{D }%
    \wrongchoice{E }%
  \end{choicescustom}
\end{question}

To use this option only for the questions answers (and not for the student number), type, just after \begin{document}

\makeatletter
\def\setoutsidebox{\AMC@outside@boxtrue}
\makeatother

Then, use this command locally (inside braces) in the form :

{\setoutsidebox\AMCform}

Nominative sheets

In some situations, it can be useful to prepare nominative sheets for all students, from a list of students. Let us see how this can be done.

  • The students list has to be a CSV list. Suppose in the following that the file students.csv, in the project directory, is UTF8 encoded and that its content is like the following:

    name,forename,id
    Boulix,Jojo,001
    Golin,André,002
    Moniuszko,Stanisław,003

    Do not use _ (underscore) with the student’s name or forename. This would lead to compilation errors.

  • \onecopy{1} must be equal to one.

  • The number of papers must be equal to zero (graphical interface).

  • The LaTeX source file has to load csvsimple package, with:

    \usepackage{csvsimple}
  • In the LaTeX source file, define the subject as a command that produce a single subject. This command will be called once for each student by \csvreader (suppose here that the questions has already be defined and included in a group named general):

    \newcommand{\subject}{
      \onecopy{1}{
    
        \noindent{\bf AutoMultipleChoice  \hfill TEST}
    
        \vspace*{.5cm}
    
        \begin{center}\em
          Pre-filled test.
        \end{center}
    
        \hfill \namefield{\fbox{
            \begin{minipage}{.5\linewidth}
              Name:
    
              \Large\bf \name{} \surname{}
    
              \vspace*{1mm}
            \end{minipage}
          }}
    
        \noindent\hrulefill
    
        \vspace{1ex}
    
        \insertgroup{general}
    
        \AMCassociation{\id}
      %\AMCassociation[\name-\surname]{\id}
      }
    }
    
    %password protect
    %\AMCstudentslistfile{liste.csv}{id}
    
    \csvreader[head to column names]{students.csv}{}{\subject}
    %\csvreader[head to column names,separator=semicolon]{liste.csv}{}{\subject}

    The head to column names option for \csvreader defines commands \name, \surname and \id (named from the CSV headers), that can be used inside \subject. The \AMCassociation call tells AMC to associate the current sheet to student with id \id. Optional argument to \AMCassociation to suggest a file name when printing to file. To protect each file with a unique password. Use this command if the CSV file contains only one email address per student. Use this command if the CSV file contains multiple email addresses per student.

  • After printing, scanning, data capture and marking, when associating copies with students, choose value "pre-association" for field "code-name for automatic association", and "id" for field "Primary key".

Topics

The aim is to combine a set of questions to calculate a score and obtain a level of success. These indications will be displayed on the header of the corrected copy (version amc version 170 or above needed).

These groups will be described in a YAML file named topics.yml, to be placed in the AMC project directory.

AMC will require the following additional perl packages, which must be installed in your environment: YAML::Syck, Hash::Merge.

Principle

The YAML file format is very sensitive to indentation. You must then respect the number of spaces at each beginning of lines.

---
preferences:
  key level 1: value

topics:
  - key level 1 value
    key level 1:
      key level 2:
        key level 3: value

Examples

Full example

---
preferences:
  odscolumns: level  (1)
  skip_indicatives: 0 (2)
  answered_only: 1 (3)

topics:
  - text: "Here are your topics levels" (4)
  - id: geography
    name: Geography knowledge (5)
    questions: (6)
      - "geog:*" (7)
      - Cameroon (8)
    annotate_color: "#B22222" (9)
    levels: (10)
      - min: 75 (11)
        message: Excellent (12)
        color: "#1ab407" (13)
        code: 4 (14)
      - min: 50
        message: Fair
        color: "#2aea62"
        code: 3
      - min: 25
        message: Fragile
        color: "#ffad26"
        code: 2
      - message: Insufficient
        color: "#ff262c"
        code: 1
    decimals: 0 (15)
    decimalsratio: 2 (16)
    decimalspc: 0 (17)
    floor: 0  (18)
# Comment to lighten code. (19)
  - id: history
    name: Historical knowledge
    format: "%{name} : %{score}/%{max}" (20)
    questions:
      - "hist2*"
      - "hist1*"
    annotate_color: "#006c8c"
#
  - text: "-------review--------"
  - id: global
    questions: "*"
    value: "ratio:20:0.25" (21)
    decimals: 2 (22)
    decimalspc: 2
    format: | (23)
      %{name} : %{code} %{message}
      For questions %{nums:c}, your score is %{score}
      and your mark is %{value}/20
    exclude_questions: (24)
     - bonus
     - difficultquestion
#
  - id: aggregate
    name: Aggregated value
    aggregate: xxx (25)
    value: xxx (26)
    questions:
      - "*" (27)
1 New columns (Export to ODS (OpenOffice, LibreOffice)) will be displayed for each topic. You can choose to display the value of the variable <code> .
2 To include the indicative questions.
3 Does not display topics if all answers are empty.
4 A plain text.
5 Identifier without accented or spaced letters.
6 Full topic name.
7 Questions related to the topic.
8 All questions with the identifier beginnig with add2: are included (see Identifier).
9 Only one question with a unique identifier somme2ch is included. (see Identifier).
10 Color annotation related to scores.

If a question does not be a par of id or annotate_color option is not filled out, Annotations color use default. Preferences  Annotation.

11 Topic levels (percent).
12 Minimum required for this level.
13 Text written on the first page according the level.
14 Color for the level text.
15 <code> used for the column header while exporting to ODS. See Export to ODS (OpenOffice, LibreOffice) .
16 Number of decimals for %{score} and %{code}, defaults to 0.
17 Number of decimals for %{ratio}, defaults to 2.
18 Number of decimals for %{value}, defaults to 0.
19 Floor value. If the calculation of the score in that question yields a value below the floor value, the sore is set to the floor value.
20 Comments begin with the hash symbol.
21 Formatting.

Defaults to format:\'"● %{name}: %{message} (%{value})"

22 The corresponding score will be the ratio multiplied by 20 and rounded to the nearest multiple of 0.25.
23 Number of decimals.
24 To write a text with multiple lines.
25 See Aggregation functions.
26 Can take several values: score, ratio, "ratio:a:b". The default behavior is to print the percentage.
27 Joker which selects all questions.

Variables

General topic values:

  • %{id}: topic’s id

  • %{name}: topic’s name

Relative values to student’s score :

  • %{score}: student’s total score

  • %{max}: maximum total score

  • %{ratio}: quotient of score divided by maximum score (between 0 and 1)

  • %{value}: likewise but in percent

Relative values to questions' topic :

  • %\{nums:s}: list of question numbers

  • %\{nums:c}: llist of question numbers by intervals (ex: 2-4 instead of 2,3,4)

Values derived from the level reached:

  • %{message}

  • %{code}

  • %{i}: level

Aggregation functions

sumscores

we choose the sum of the scores, and in the denominator the sum of the maximum scores.

sumratio

We take the sum of the quotients between the question score and the maximum score for the question. In the denominator, we have the number of questions.

If we want the topic to be equal to the sum of the quotients, we take <value:score>, and if we want the topic to be the average of the ratios (so between 0 and 1), we take <value:ratio> or <value:ratio>. If left empty, the percentage is displayed.

minscore

we take the minimum of the scores, and in the denominator the minimum of the maximum scores to the questions.

If we want the topic to be equal to the min of the scores we choose <value:score>, and if we want the topic to be equal to the ratio of the two, we take <value:ratio>.

maxscore

we take the maximum of the scores, and in the denominator the maximum of the maximum scores to the questions.

If we want the topic to be equal to the max of the scores we choose <value:score>, and if we want the topic to be equal to the ratio of the two, we take <value:ratio>.

maxratio

we take the maximum value of the ratio, for each question, between the score obtained for the question and the optimal score that can be obtained for the question. With this aggregate value, <value:score> and <value:ratio> give the same thing.

minratio

we take the minimum value of the ratio, for each question, between the score obtained for the question and the optimal score that can be obtained for the question. With this aggregate value, <value:score> and <value:ratio> give the same thing.

count(a)

number of questions with score <a>.

count(a,b)

number of questions with score between <a> and <b>.

Shared levels

You can define a set of levels that will be used for several different topics, as in this example:

---
conf:
  standardlevels: (1)
    levels:
      - min: 75
        message: Excellent
        color: "#1ab407"
      - min: 50
        message: Fair
        color: "#2aea62"
      - min: 25
        message: Fragile
        color: "#ffad26"
      - message: Insufficient
        color: "#ff262c"
    decimals: 2
    decimalsratio: 2
    decimalspc: 0
    floor: 0

topics:
  - id: geography
    name: Geography knowledge
    questions:
      - "geog:*"
      - Cameroon
    conf: standardlevels (2)
  - id: history
    name: Historical knowledge
    format: "%{name} : %{score}/%{max}"
    questions:
      - "hist2:*"
      - "hist1:*"
    conf: standardlevels
1 We define a configuration, called standardlevels, which can be used for several topics.
2 Calling up this configuration.

Include file

Create a levels.yml file located in the parent directory of the project directory (therefore the directory common to all AMC projects).

levels.yml
# file levels.yml
preferences:
  odscolumns: level
#
conf:
  standardlevels:
    levels:
      - min: 75
        message: Excellent
        color: "#1ab407"
      - min: 50
        message: Fair
        color: "#2aea62"
      - min: 25
        message: Fragile
        color: "#ffad26"
      - message: Insufficient
        color: "#ff262c"
    decimals: 2
    decimalsratio: 2
    decimalspc: 2
    floor: 0
Project topics.yml
---
include:
  - ../levels.yml

topics:
  - id: geography
    name: Geography knowledge
    questions:
      - "geog:*"
      - Cameroon
    conf: standardlevels
  - id: history
    name: Historical knowledge
    format: "%{name} : %{score}/%{max}"
    questions:
      - "hist2:*"
      - "hist1:*"
    conf: standardlevels

Copy anonymity

In conventional use, this option is not recommended. It requires the use of a source file in LaTeX format, and version amc version 160 or above.

Start anonymous mode

Select Preferences  Features  Anonimization  Display anonymization panel.

How to create anonymous pdf files

  • Prepare your subject (Preparing the subject).

  • Input students' copies (Reading the copies)

  • Data capture tab , a new menu is displayed : click on Anonymize.

  • Open to access anonymized pdf files.

  • Manually correct some questions from these PDFs.

  • Marks are passed to AMC by the csv file.

This files are uneditable; do notrerun a automatic recognition.

Useful commands with this option

  • AMCzone[id]{}

    The command \AMCzone[id]{LaTeX code} is used to hide a defined area.

    After anonymization, the \namefield zone is hidded.

  • \AMCexternalQuestion

    The command AMCexternalQuestion{identifier to choose}{score maximal} allows to brand an external question that will be scored outside AMC, with a maximum score.

    When using this command, you can freely handle the question number and the question text (AMC will not do this). (AMC will not do this)

    It is not possible to add this command after the subject has been fully prepared.

    During anonymization, a csv file is created. This file will have to be filled in with the marks and then read by AMC to continue with the correction (see Correction).