Prev Next LatexMacro

The Latex Macro Preprocessor
Definition \newcommand{ \Name }{  Text_0 }
\newcommand{ \Name }[ M ]{  Text_0 #J(1)  Text_1 \; \ldots \; Text_{N-1} #J(N)  Text_N  }
Usage \Name
\Name{  A_1 }  \; \ldots \;  {  A_M }

Definition
When running OMhelp with the -xml command line option, Latex macros can be defined and used in latex mode.

Global Scope
Macros defined using a \newcommand in the root section have global scope; i.e., are defined for all sections. This avoids having to entirely reprocess all the macros for each section (which could be time consuming for large numbers of macros). It is suggested that you put all these macros in one file using an inline latex command. (You cannot use a displayed latex command when you are just defining macros and there is no output to be displayed.)

Section Scope
Macros defined in sections, other than the root section, are limited in scope to the section they are defined in; i.e., they do not affect any other sections.

Name
The sequence of upper or lower case letters  Name specifies the name of the macro.

Text
For  K = 0 , \ldots , N ,  Text_K is a sequence of characters. The character # does not appear in  Text_K except if directly preceded by a back slash; i.e., \#. In addition,  Text_K does not contain any } characters unless preceded by a matching { character.

M
The decimal digit  M is between one and nine inclusive. It specifies the number of arguments connected to each use of \Name. If  M is not present in the macro definition, it is implicitly zero in the discussion below.

N
The number of replacements made with each use of the macro is denoted by  N .

J(K)
For  K = 1 , \ldots , N , the decimal digit  J(K) is between one and  M . It specifies which argument is placed directly before  Text_K in the macro expansion.

Usage
If the macro Name is defined with zero arguments, the macro usage
     \
Name
has the replacement value
     
 Text_0
corresponding to the definition of Name. In general, the macro usage
     \
Name{  A_1 }  \; \ldots \;  {  A_M  }
has the replacement value
     

Text_0 \; A_{J(1)} \; Text_1 \; \cdots \; Text_{N-1} \; A_{J(N)} \; Text_N

where  M ,  N , and  Text_K for  K = 1 , \ldots , N , corresponds to the definition of Name.

Example

No Arguments
The input
$latex \[
	\newcommand{\Dx}{ \frac{d \hspace{1ex} }{d x} }
	\Dx
\] $$
results in the output  \[
     \newcommand{\Dx}{ \frac{d \hspace{1ex} }{d x} }
     \Dx
\] 


Arguments
The input
$latex \[
	\newcommand{\D}[2]{ \frac{d #1}{d #2} }
	\D{y}{x}
\] $$
results in the output  \[
     \newcommand{\D}[2]{ \frac{d #1}{d #2} }
     \D{y}{x}
\] 


Mathml
Macros combined with the mathml command can be used to define symbols not available in Standard Latex's math mode. For example, the MathML symbol Ropf is used in the input
$latex \[
	\newcommand{\Ropf}{ 
		\mathml{ <mi mathvariant='normal'> &\#x0211D; </mi> }
	}
	x \in \Ropf^n
\] $$
which results in the output  \[
     \newcommand{\Ropf}{ 
          \mathml{ <mi mathvariant='normal'> &\#x0211D; </mi> } 
     }
     x \in \Ropf^n
\] 


Restrictions
If two macros are defined with the same value of Name, an error message is printed and OMhelp stops.

Nonstandard
Latex macros in OMhelp are different from those in standard Section 3.4.1 of Lamport's book . The following is a list of these differences:
  1. It is ok (not an error) to redefine any of the standard Latex commands.
  2. Macro replacement values cannot use other macros; i.e., the values of  Text_K in an macro definition, and the value of  A_J in a macro usage, cannot use other macros.
  3. Macros defined in sections, other than the root section , have local scope; i.e., do not affect any other sections.

Input File: latex/LatexMacro.omh