{tex-core} is for questions that are independent of formats and macro packages. Such questions usually relate to low-level TeX programming or the behaviour of TeX at an underlying level. Note that even Plain TeX is a format in itself; for questions about it, use {plain-tex}.
8
votes
5answers
322 views
Teach me how to use \loop…\repeat constructs, etc
The following code snippet is a part of the solution given here:
\def\IncludeOutput#1{
\parskip=2mm
\def\examplename{#1}
\pdfximage{\Directory/\examplename.pdf}%
...
8
votes
1answer
221 views
Interwoven alignment preambles are not allowed - what exactly does this mean?
I admit that this post is purely idle curiosity. But I recently stumbled upon a little factoid saying that the TeX error "Interwoven alignment preambles are not allowed" has the following explanation ...
7
votes
3answers
285 views
Making mathmode obey spaces
I know this is kind of blasphemic thing to ask, but is there a way to make mathmode obey spaces? Preferably in Plain with XeTeX.
6
votes
2answers
256 views
Is there a way to dissect math lists?
In the course of trying to answer this question, I now realize that I need to be able to construct a math list and then check if it consists of a single character atom.
What I would like to be able ...
5
votes
1answer
282 views
What is the proper way to prevent text from splitting across columns and pages?
I have some description environments which I do not wish to have split across columns or pages. Is there some command which can be placed around an item to ensure that it will never be split across ...
5
votes
1answer
161 views
How can I reverse the order of letters/tokens?
I want a simple way to have:
\reverseit{abc defg \mycommand}
yield
\mycommand gfed cba
?
(Yes, the original motivation is related to Hebrew and RTL languages, but that can sort of be solved ...
4
votes
1answer
166 views
Luatex os.execute not working
I've hooked luatex's stop_run callback so I can do some processing on the output pdf after it is generated.
To process the pdf I need to call os.execute. When doing so I an error saying "All command ...
3
votes
3answers
205 views
Retain side-effects but discard command output
The following code works, although I have a feeling my \settowidth method of discarding the output is not how it should be done:
\documentclass{article}
\newlength{\trashlength}
...
2
votes
2answers
179 views
An expandable 'character scanning' command?
Please consider the following MWE, for a "character scanning" command "\looper" which utilizes \@tfor:
\documentclass{minimal}
\usepackage{trace}
\makeatletter
\newcommand\looper[1]{%
% ...
43
votes
0answers
1k views
A LaTeX log analyzer application (visualizing TeX expansion)
Consider the following MWE, test.tex:
\documentclass[12pt]{article}
\begin{document}
\tracingassigns=1
\tracingmacros=1
\def\aaa{something}
\def\bbb{else \aaa, else}
\edef\ccc{third \bbb, level}
...
43
votes
1answer
5k views
When should one use \begingroup instead of \bgroup?
Is there ever a case when the use of \begingroup is preferred to \bgroup? Obviously, \bgroup is necessary in cases where you need to have balanced braces and thus cannot use {, but when is it ...
27
votes
1answer
2k views
Is it \catcode or \catcode`?
I've noticed that \catcode is poorly documented in the TeXbook. The primitive is defined as \catcode but every time it is used, it is used as \catcode` ... the backquote is never discussed. ` itself ...
24
votes
4answers
442 views
Why isn't a command defined by \newcommand with an optional argument expandable?
In trying to fix a problem with a nested macro repeatedly calling itself, I tried expanding the inner call before passing it as an argument to the outer one. This failed miserably because the macro ...
21
votes
6answers
642 views
LaTeX Markup Options?
I was wondering what prevented the implementation of a MarkDown system in (La)TeX? I know that pandoc does a conversion of MarkDown with extra features to LaTeX. I also know that many are happy with ...
38
votes
3answers
722 views
Why no vertical-mode Knuth-Plass?
I have only basic knowledge of the TeX internals, so I hope what I am saying here is not complete nonsense. If I understand correctly, in TeX, horizontal positioning / line breaking is done using a ...
20
votes
5answers
876 views
More Modern Reimplementations of TeX
There is no doubt that the original Pascal/WEB implementation of TeX is a masterpiece and I have learnt a lot reading through the source code (both weaved and tangled) but it definitely shows its age. ...
13
votes
4answers
461 views
Detokenizing without extra spaces?
I have a need to pass through potentially arbitrary characters untouched and found this macro:
\def\test#1{\expandafter\zap@space\detokenize{#1} \@empty}
The problem is that \detokenize inserts ...
16
votes
2answers
1k views
What are the exact semantics of \detokenize?
How does \detokenize work?
The e-TeX Short Reference Manual states:
When followed by a <general text>,
expands to yield a sequence of
character tokens of \catcode 10
(space) or 12 ...
8
votes
2answers
226 views
Normal \relax vs. frozen \relax
With
\edef\x{\ifnum0=0\else\fi}
being \relax and with
\def\y{\relax}
we see that \ifx\x\y is false. Why?
See also \ifcsname when it isn't apparent that the command is \relax'ed.
29
votes
2answers
593 views
No \makeatletter required?
In typing up some small examples that might create errors in LaTeX (for Documents with typical LaTeX errors), I tried the following:
\documentclass{article}
\def\my@macro#1{-#1-}% This is magic
...
25
votes
2answers
769 views
What language is TeX implemented in?
I read on Wikipedia that the first version of TeX was written in SAIL. However, does anyone know what language later versions (i.e the current one) are implemented in?
21
votes
4answers
1k views
Test success of write18
For the new version of my package and class standalone I like to call external programs: further (pdf)latex runs to optionally compile included standalone files, and to convert the resulting PDF to ...
16
votes
2answers
320 views
When is it good practice to use \unskip
One sees in source2e the command \unskip used in various places. My understanding in general terms is that the macro is the equivalent of \ignorespacesbehind.
Where would it be recommended to use ...
16
votes
3answers
803 views
Obfuscating TeX
Given TeX's system of catcodes, I imagine that one can obfuscate TeX to a remarkable degree. With a view to learning more about the internals of TeX, I ask: How might I go about adding a block of ...
15
votes
1answer
116 views
What is the differences between mathcode and catcode and how can I use mathcode?
The command \catcode is often used to change some internals. E.g. the command \makeatletter changes the catcode @. But what is \mathcode and how does it work?
catcodes are well explained here: Wiki ...
15
votes
3answers
576 views
Starting with TeX (not LaTeX)
I've been using LaTeX for 3 years and I'm decided to switch to (plain) TeX. For the moment I'm reading The TeXbook for the third time (I quietly start to read the double-danger signed paragraphs) and ...
11
votes
2answers
159 views
What combinations of mode and \currentgrouptype exist?
I am trying to predict in any given situation what TeX does if a closing brace reaches its stomach (apart from reverting local assignments). For instance, \vbox{\tracingall H} shows that if it is in ...
11
votes
2answers
474 views
Is there a printable version of a reference manual for all TeX primitives?
Everywhere in the TeX community, I see suggestions like \parskip, \obeylines, \parindent, etc. I'd be surprised not to find them even in the most basic LaTeX packages. So I figured they must be deeper ...
10
votes
3answers
389 views
Does the \relax side-effect of \csname…\endcsname still have a use?
I find it annoying that using \csname...\endcsname will define ... to be \relax if ... is undefined, and there is no improved primitive that does not have this side-effect, though there are partial ...
9
votes
2answers
420 views
How to get the catcode of a token?
For debugging a complicated macro I would like to print out the catcode of a token. Optimally I would like to have a macro \getcatcode such that, for example, \getcatcode{a} would expand to 10. How ...
8
votes
2answers
508 views
\def taking next word as argument?
This question is a variant of my previous question requesting a macro that takes the rest of the line as argument. I would like to write a macro that would take the next word as argument, where word ...
6
votes
2answers
436 views
Replace characters in string based on preceding and following character
The following two strings are the result of the expansion of a biblatex citation command:
Unicom Computer Corp. (in re), 13 F.3d 321, 30 Collier Bankr. Cas. 2d 655, 25 Bankr. Ct. Dec. 152 (9th ...
5
votes
2answers
358 views
Wrapping \obeylines with \halign into a macro
In the TeXbook, Knuth gives an example:
Are you tired of typing \cr? You can get plain TEX to insert an automatic \cr at the end of each input line in the following way:
\begingroup \let\par=\cr ...
31
votes
2answers
379 views
What is a token?
Please forgive such a basic question, but I did some Google searching and looked around on this site, and while there are many threads and online resources that involve tokens, I can't seem to find a ...
25
votes
1answer
381 views
What exactly is a “single character” or “symbol” in math mode?
There are at least three instances where single symbols in math mode receive a special treatment by the TeX engine: 1. when accents are placed, 2. when a math operator is created with ...
20
votes
2answers
541 views
Which is better: a dimension or a macro?
When messing around with TikZ/PGF then I frequently find myself wanting to store a length for later use. By "length" here, I mean the word in its non-TeX meaning. As I'm doing stuff in TikZ/PGF then ...
16
votes
1answer
462 views
Is it still worthwhile to let TeX try line-breaking without hyphenation?
Here's TeX's line-breaking approach (as I understand it) in a nutshell:
If \pretolerance is positive, try to break a paragraph into lines without inserting discretionary hyphens and without ...
16
votes
1answer
760 views
Knuth's line breaking algorithm
I'm trying to understand the basics of Knuth's line breaking algorithm. At the beginning of Chapter 12: Glue of his TeXbook, there is a figure like the one below.
My question is: where did those ...
12
votes
1answer
123 views
How to read a stream of tokens up to one of two different delimiters
The core question
How can I process text delimited by one of two terminators? For instance, if I want to process text up to the next \A, I can just write
\def\CmdA#1\A{...}
But suppose that \A ...
12
votes
2answers
577 views
Globally redefining 1 pt to 1/72 in (PostScript point) and other similar changes
Introduction
TeX point (1 pt in TeX) equals 1/72.27 in (= 2540/7227 mm ≈ 0.35145980351 mm). Quoting part of Traditional American point system section from Wikipedia's Point (typography) entry:
In ...
12
votes
1answer
544 views
Active characters let to a (non-active) character
It seems that if I \let\amp&, the alignment tab & can be replaced by \amp everywhere (e.g., in the preamble and in the body of an \halign). It is also possible to make the character & ...
12
votes
3answers
373 views
How does one change the math style to one of the “primed” styles?
Background
TeX typesets each portion of a mathematical expression in one of 8 styles:
display,
display',
text,
text',
script,
script',
scriptscript, or
scriptscript'.
Knuth calls them, D, D', T, ...
10
votes
1answer
589 views
Simple un-obfuscation of some LaTeX internals
Here's an example of some code from LaTeX's \DeclareFontFamily:
\def\reserved@a{#3}
\global
\expandafter\let\csname #1+#2\expandafter\endcsname
\ifx \reserved@a\@empty
\@empty
...
10
votes
4answers
910 views
Generalize \@ifnextchar to consider more than one character.
I am looking for a clever way to write a switch statement based on the next input characters, ideally, one could write:
\@switchnextchars
\@case{abc}{\typeout{You gave me an abc}}%
...
9
votes
2answers
695 views
How to avoid underfull vbox in combination with \vsplit?
In the following example I am using the command \vsplit. I can't see the reason why \vsplit produced an overfull \vbox
\documentclass{article}
\parindent0pt
\def\exampletext{Text Text Text Text Text ...
8
votes
2answers
116 views
Is it possible to remove (or otherwise nullify) a whatsit node from a box?
I am aware that it is not generally possible to modify the contents of a box (as per http://tex.stackexchange.com/a/49903/17427), though I believe it is sometimes possible to "unbox" material and hack ...
8
votes
3answers
991 views
How to make a ruler
In The TeXbook (Ch. 10, after exercise 10.3), DEK shows some nice rulers. But I couldn't figure out how he did them. I'm sure I could look it up from the texbook source, but for some reason I'm ...
8
votes
2answers
293 views
Checking whether a file is empty?
Well, the obvious way to do that is with \ifeof, but for some reason, I cannot do this right. I wrote
\newread\reader
\openin\reader=empty \relax
\ifeof\reader\message{empty}\else\message{not ...
7
votes
2answers
534 views
Detecting \global, \long, \outer, \protected
Is there a way to detect whether or not the next assignment is going to be \global, \long, \outer, or \protected? That is, is it possible to write a command \detectmodifiers such that code like
...
5
votes
1answer
347 views
How to vanish \relax inserted by TeX itself
TeX inserts \relax when it suddenly finds \else or \fi while expanding a conditional (eg, looking for a number). TeX by Topic says much. But how do you get rid of the \relax in a situation like the ...
