I apologise in advance if this is a bad question but I have been trying to read up macros in Latex with the TeX-book but I just cannot work out why this doesn't work.

So I have a 'working' macro (pasted below) which lets you wrap \ans{<answer>} around answers in a tutorial sheet to save the answer to an 'array' of sorts; the answers in the array are then used to create an answer sheet with the command \s. 'Working' macro code:

        \renewcommand{\thesection}{{\noindent\hrulefill}\\ Problem \arabic{section}.} 
    %%%%%%%Each problem label generated with \section{}

        \global\expandafter\def\csname Prob\the\value{section}\endcsname{\the\value{Questionpart}}
    %%%An attempt to count the parts in each problem but \csname Prob<number> \endcsname doesnt work with \foreach \y in {1,...,\csname Prob<number> \endcsname}
    %%%%%Parts a),b).....e), generated by \Qpart.

%%%%%%%Command of interest%%%%%%%%%%%%%%%%%
            \expandafter\global\expandafter\def\csname ans\the\value{section}\the\value{Questionpart} \endcsname{\item\quad#1}
            }%An 'array' structure which names each element as ans<problem_number><problem_part_in_numbers>


            \csname ans#1 \endcsname
    }%lets \s call the elements in the 'array'

            \foreach \x in {1,...,\value{section}}
               \textbf{Problem \x}\par
               \foreach \y in {1,...,10}
    %couln't count the parts in a problem so set to 10 as a general size.


I would like to implement a concatenate feature to the \ans{} command so that each \ans{} in the same Problem part will add together to create a full answer. (sometimes it may be a 'prove that' question and the key points are spread out)

I tried something like this (which didn't work):

    \long\def\ans#1{% if \DP@#1 is defined append to it otherwise create it
      \if\csname ans\the\value{section}\endcsname
        \edef\DP@tmp{\csname ans\the\value{section}\endcsname,#1}%
      \global\expandafter\let\csname ans\the\value{section}\endcsname\DP@tmp

I will greatly appreciate help or any pointers.

  • 1
    \if\csname and \ifcsname are very different! – egreg Oct 3 at 11:20
  • \if\csname ans\the\value{section}\endcsname compares the first two characters in the expansion of the macro you might write informally as \ans1 and is true if they are the same. – David Carlisle Oct 3 at 11:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.