I'm currently reading the TeXbook, and I use \show
a lot to see how Knuth defined plain-TeX macros in terms of TeX primitives. For instance, to have access to the definition of \centerline
, I would write \show\centerline
in my input file. When I compile that file with pdftex
in interactive mode from the command line (a Unix terminal, in my case), TeX generates an error message that shows me the definition of \centerline
in the terminal and offers me a menu of options (as described in Chapter 6: Running TeX in the TeXbook).
I understand that design choice by Knuth of having TeX generate an error message for each instance of \show
: he probably wanted to leave the user some time to read what \show...
prints in the terminal before letting TeX resume execution, instead of having to open the log file only after the end of the compilation.
However, instances of \show...
in the input file have the undesirable side-effect of raising "errors" (false alarms, really) when pdftex
is called from within an IDE such as TeXmaker with option -interaction=nonstopmode
. For example,
\show\centerline
\bye
when compiled with pdftex -interaction=nonstopmode
causes TeXmaker to report
Obviously, those false alarms prove really annoying when debugging. I always have to ask myself: Wait... are those errors due to instances of \show
in my input file, or are they bona fide errors? On the other hand, my understanding is that you have to specify
-interaction=nonstopmode
if you want to call pdftex from within an IDE. Therefore, my question is:
Is there any way of preventing TeXmaker from reporting those "false alarms"?
Note: the problem I describe may be present in IDEs other than TeXmaker as well.
\show
uses the same routine as error messages. Use it only in interactive sessions.\texttt{\meaning\foo}
prints (almost) the same information. But for looking at meanings I prefer running interactively, so I can add other commands to look at. Alsotexdef
is good for this. However, error lines start with!
, while\show
lines start with>
; if Texmaker doesn't distinguish between the two cases it's its fault.\typeout{\meaning<cs>}
.texdef
andlatexdef
are very handy in a command line console. Ah, sorry already inegreg
's comment! Besides withemacs/auctex
there is no problem; only\showbox
is truly a pain there.typeout
solution addresses both): expl3 - How can I make TeX stop on the first error, but do not stop on \show (or \tl_show:n)? - TeX - LaTeX Stack Exchange