{latex-kernel} is about the inner workings of the LaTeX kernel. Do not use this tag for general questions about LaTeX or {macros}.

learn more… | top users | synonyms

23
votes
6answers
2k views

Where can I find help files or documentation for commands like \@startsection for LaTeX?

I can't find official documentation for the \@startsection command. I already looked in: LaTeX Wikibook LaTeX: Structured document for TEX, 2008 beginLatex — a book that comes with ProTeX in the ...
50
votes
2answers
2k views

Documentation reference for LaTeX internal commands?

This question led to a new package: macros2e Is there a place where I can find a reference of LaTeX internal commands? For example, just a few months ago I saw an answer using \@for and today I ...
79
votes
2answers
5k views

What are penalties and which ones are defined?

Very often you can find solutions by changing the penalty. One is widowpenalty. However what are penalties and is there a small list of every defined penalty. There is a German site which does ...
29
votes
4answers
1k views

What do \@firstoftwo and \@secondoftwo do?

The LaTeX kernel uses these two all over the place. For example, apparently the correct way of defining something like \ifeq{\macro 1}{\macro 2}{true}{false} is (note Martin's response: each case ...
38
votes
1answer
1k views

An explanation of LaTeX's output routine

Is there a good reference for LaTeX's output routine? The documented source is confused and confusing. The authors seem confused as to why parts are the way they are and wonder if maybe things should ...
37
votes
2answers
2k views

What does \z@ do?

in parcolumns it has \z@ all over the space. I don't see it define it anywhere so I assume it is some internal command or something? I can't really make heads or tails of it though and I can't really ...
17
votes
3answers
487 views

What is the exact purpose of \ftype@<TYPE>?

I currently working on some float related code an saw that the standard float environments figure and table define (beside others) the macros \def\ftype@figure{1} and \def\ftype@table{2}. The LaTeX ...
13
votes
1answer
512 views

Why is \input not expandable?

In latex.ltx I found \def\input{\@ifnextchar\bgroup\@iinput\@@input} where \@@inputis expandable. I would like to know if there is an expandable version of \input. The problem comes from an example ...
23
votes
2answers
415 views

Redefining \include

A puzzling choice made by Leslie Lamport was to define \include in such a way as to issue a \clearpage before reading the file. This has been puzzling me for sometime as it is not a very good choice ...
16
votes
1answer
491 views

What exactly does \@doendpe do?

Quoting from the LaTeX2e sources: [\@endparenv, \@doendpe] To suppress the paragraph indentation in text immediately following a paragraph-making environment, \everypar is changed to remove ...
7
votes
2answers
542 views

Where can I find an online manual for low-level LaTeX commands?

Is there an online manual for low-level LaTeX commands I can download? I am looking for something which would have, for example: \newif\ifportrait \newif\ifcustomsize \newif\ifdebug \makeatletter ...
18
votes
2answers
342 views

How can I detect if I'm inside or outside of a float environment?

I am trying to detect whether I am inside or outside a float. I know the way how caption works. It uses the internal \@captype. But in the example below you see that this test failed by using ...
16
votes
3answers
428 views

What's the use of the @compatibility condition?

All of the standard LaTeX document classes (article, book and report) declare some basic functionality and parameters based on the condition @compatibility. Here's an extract from from article.cls ...
14
votes
2answers
395 views

What does the command \@dblarg in a class?

In the definition of a command appears the declaration of \@dblarg, as follows: \def\title{\@dblarg\CJ@title}. What exactly does \@dblarg do?
34
votes
2answers
2k views

Understanding \@ifnextchar

I understand the definitions of the \makeatletter and \makeatother commands and also \def and \newcommand somewhat. But, explained in a simple way, what is happening in the following line? ...
15
votes
1answer
424 views

Are there guidelines on how to read commented sources of LaTeX packages?

I'm trying to read source2e.pdf (texdoc source2e on the command line), but I'm stumped. It seems a rather mysterious tome to me. As I understand from this answer about what arguments a command ...
19
votes
1answer
501 views

Why \( and \) were not defined as robust commands in the first place?

I am aware of the difference between using \(...\) and $...$ (in moving arguments, for example), and yes, I've read the answers to this question: Are \( and \) preferable to $?). I also know the ...
18
votes
4answers
648 views

How exactly does \def\p@figure{Figure~} work?

I took this line from my thesis style and added it into my document (preceded by \makeatletter) and what it does that whenever I used \ref{figureid} instead of putting just the figure number, it puts ...
12
votes
1answer
709 views

Use of \trivlist and \list in defining environments

I did ask a similar question a bit back here but never really had a satisfactory technical answer. Reading through the documentation of xdoc Lars Hellstrom pretty much asked the same question and ...
26
votes
4answers
964 views

Why does the LaTeX kernel define \usepackage *and* \RequirePackage?

The ubiquitous \usepackage command is used to load packages in the preamble of a document; the command syntax is \usepackage[<package-option-list>]{<package-list>}[<version>] ...
16
votes
4answers
873 views

Understanding a \@for loop

I'm having trouble with a \@for loop. I've got a macro that takes a comma delimited list and puts each element into a row of an array. When I do this using a \@for loop, I get an extra row that I ...
11
votes
1answer
382 views

Use of \@texttop and \@textbottom for vertical positioning

There are two macros defined in the LaTeX kernel named \@texttop and its opposite \@textbottom. The first is a bit of a mystery command in that in the source it is let to \relax. There is a note that ...
23
votes
1answer
1k views

Check if next char is {

Using \@ifnextchar one can detect if e.g. the next Character is a [, e.g.: \@ifnextchar[% { %% code to execute if [ scanned. }{ %% code to execute if [ scanned. } However, I can’t seem to ...
23
votes
1answer
500 views

What does \@let@token do?

In source2e.pdf I've seen \@let@token used in several places, for example in the definition of \@ifnextchar: \long\def\@ifnextchar#1#2#3{% \let\reserved@d=#1% \def\reserved@a{#2}% ...
26
votes
1answer
208 views

Why is there no \provideenvironment?

LaTeX2e provides a \providecommand but there is no \provideenvironment which defines an environment only if it (or a macro with the same name) was not defined before. Is there a specific reason why it ...
22
votes
6answers
777 views

\@ifnextchar and friends documentation

While reading this question and its answers I tried to find where, for instance, \@ifnextchar is documented. I'm afraid I couldn't... I looked in TeX: The Program and TeX for the Impatient which can ...
24
votes
3answers
516 views

Saving a 100 tokens worth, is it worth it?

The LaTeX kernel defines a number of tokens that are used throughout the LaTeX source and the standard LaTeX classes. For example: \def\hb@xt@{\hbox to} This particular one is commented as: ...
15
votes
1answer
441 views

What does \p@ mean in some code?

I have found the source code within octavo.dtx (from the octavo package) and it has some parts called \p@. I have searched throughout the document, but cannot understand what this is defined as or ...
14
votes
1answer
457 views

What is a BANG float?

This question follows up on What is the exact purpose of \ftype@<TYPE>?. The LaTeX kernel source refers to a BANG float in the ltoutput.dtx, but there is no explanation for it. Anybody knows ...
14
votes
3answers
3k views

What is the default \parskip in memoir?

Everywhere the usual word is that it is 0. But that is clearly wrong, it is 0 + some rubber length. But how is that rubber length defined? In my search I found the following definition in the memoir ...
13
votes
2answers
252 views

Why is \thepage set to \relax in a \protected@write?

In the kernel the definition of protected@write includes the setting of the \thepage to \relax. Why is this and are there other means to ensure that thepage is not expanded? \long\def ...
12
votes
1answer
241 views

Counters and their “partners”

A counter created via \newcounter{<counter>} is stored internally as \c@<counter>, just like a reference made using \label{<label>} is stored internally using \r@<label>. ...
6
votes
1answer
492 views

Why does LaTeX make \DeclareMathSymbol and \DeclareSymbolFont preamble-only?

Is there any good and convincing reason to explain why LaTeX restricts usage of \DeclareSymbolFont and \DeclareMathSymbol to the preamble? and I could also ask the question for many other macros. ...
1
vote
1answer
73 views

What is LaTeX's \if@nobreak mechanism for and how does it work?

many LaTeX sectioning-related commands have a block in manipulating the \@nobreak flag. Taking the following example for the sake of example: \begingroup \parindent \z@ \rightskip \@pnumwidth ...