>>>>> "Lars" == Lars Gullik Bjønnes <[EMAIL PROTECTED]> writes:

Lars> Jean-Marc Lasgouttes <[EMAIL PROTECTED]> writes: |
Lars> Lars> run_arg running_argument | | Lars> or something similar. |
Lars> | 'Running argument' is something else. I guess you mean 'moving
Lars> | argument'.

Lars> Probaly. Care to explain the difference?

'Running argument' is the error TeX gives when the argument of a macro
contains more than a paragraph. You have to define a macro with
\newcommand* to allow multi-paragraph arguments.

'Moving arguments' are arguments which will get written in auxilliary
files (.aux, .toc...). Since LaTeX does an expansion of macros
in these files (for dubious reasons) many macros have problems here
(those with optional arguments, for example). The are dubbed 'fragile'
macros.

For more information, I append the trelevant part of ltdefns.dtx

JMarc

% Fragile and robust commands are one of the thornier issues in
% \LaTeX's commands.  Whilst typesetting documents, \LaTeX{} makes use
% of many of \TeX's features, such as arithmetic, defining macros, and
% setting variables.  However, there are (at least) three different
% ocassions when these commands are not safe.  These are called
% `moving arguments' by \LaTeX, and consist of:
% \begin{itemize}
% \item writing information to a file, such as indexes or tables of
%    contents. 
% \item writing information to the screen.
% \item inside an |\edef|, |\message|, |\mark|, or other command which
%    evaluates its argument fully.
% \end{itemize}
% The method \LaTeX{} uses for making fragile commands robust is to
% precede them with |\protect|.  This can have one of five possible
% values: 
% \begin{itemize}
% \item |\relax|, for normal typesetting.  So |\protect\foo| will
%    execute |\foo|.
% \item |\string|, for writing to the screen.  So |\protect\foo| will
%    write |\foo|.
% \item |\noexpand|, for writing to a file.  So |\protect\foo| will
%    write |\foo| followed by a space.
% \item |\@unexpandable@protect|, for writing a moving argument to a
%    file.  So |\protect\foo| will write |\protect\foo| followed by a
%    space.  This value is also used inside |\edef|s, |\mark|s and
%    other commands which evaluate their arguments fully.
% \item |\@unexpandable@noexpand|, for performing a deferred write
%    inside an |\edef|.  So |\protect\foo| will write |\foo| followed
%    by a space.  If you want |\protect\foo| to be written, you should
%    use |\@unexpandable@protect|. (Removed as never used).
% \end{itemize}
%

Reply via email to