summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/FAQ-en/html/FAQ-plninltxstar.html
blob: d99a905e43cad9507de124a647e4dd490004b946 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<head>
<title>UK TeX FAQ -- question label plninltx*</title>
</head><body>
<h3>Using Plain or primitive commands in LaTeX</h3>
<p/>It&rsquo;s well-known that LaTeX commands tend to be more complex, and to
run more slowly than, any Plain TeX (or primitive) command that they
replace.  There is therefore great temptation not to use LaTeX
commands when macro programming.  Nevertheless, the general rule is
that you should use LaTeX commands, if there are seeming
equivalents.  The exception is when you are sure you know the
differences between the two commands and you know that you need the
Plain TeX version.  So, for example, use <code>\</code><code>mbox</code> in place of <code>\</code><code>hbox</code>
unless you know that the extras that LaTeX provides in <code>\</code><code>mbox</code>
would cause trouble in your application.  Similarly, use
<code>\</code><code>newcommand</code> (or one of its relatives) unless you need one of the
constructs that cannot be achieved without the use of <code>\</code><code>def</code> (or friends).
<p/>As a general rule, any LaTeX text command will start a new
paragraph if necessary; this isn&rsquo;t the case with Plain TeX
commands, a fact which has a potential to confuse.
<p/>The commands <code>\</code><code>smallskip</code>, <code>\</code><code>medskip</code> and <code>\</code><code>bigskip</code> exist both
in Plain TeX and LaTeX, but behave slightly differently: in
Plain TeX they terminate the current paragraph, but in LaTeX they 
don&rsquo;t.  The command <code>\</code><code>line</code> is part of picture mode in LaTeX,
whereas it&rsquo;s defined as &ldquo;<code>\</code><code>hbox</code><code> to </code><code>\</code><code>hsize</code>&rdquo; in
Plain TeX. (There&rsquo;s no equivalent for users of the Plain TeX command in
LaTeX: an equivalent appears as the internal command <code>\</code><code>@@line</code>).
<p/>Maths setting shows a case where the LaTeX version <em>is</em>
essentially equivalent to the TeX primitive commands: the LaTeX
<code>\</code><code>(</code><code> ... </code><code>\</code><code>)</code> does essentially no different to the
TeX <code>$ ... $</code>
(except for checking that you&rsquo;re not attempting to open a maths
environment when you&rsquo;re already in one, or vice versa).  
However, <code>\</code><code>[</code><code> ... </code><code>\</code><code>]</code> <em>isn&rsquo;t</em> the same as 
<code>$$ ... $$</code>: the TeX version, used
in LaTeX, can miss the effect of the class option <code>fleqn</code>.
<p/>Font handling is, of course, wildly different in Plain TeX and
LaTeX.  Plain TeX&rsquo;s font loading command
(<code>\</code><code>font</code><code>\</code><code>foo=</code>&lt;<i>fontname</i>&gt;) and its LaTeX equivalent
(<code>\</code><code>newfont</code>) should be avoided wherever possible.  They are only
safe in the most trivial contexts, and are potential sources of great
confusion in many circumstances.   Further discussion of this issue
may be found in &ldquo;<a href="FAQ-newfontstar.html">What&rsquo;s wrong with <code>\</code><code>newfont</code>?</a>&rdquo;.








<p/><p>This question on the Web: <a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=plninltx*">http://www.tex.ac.uk/cgi-bin/texfaq2html?label=plninltx*</a>
</body>