[tex-live] File issue with TL2012 on Windows

Joseph Wright joseph.wright at morningstar2.co.uk
Sun Aug 5 18:33:01 CEST 2012


Hello all,

A question came up on TeX-sx which I've been able to cut down to the
following example

  \documentclass{article}
  \usepackage{comment}
  \includecomment{foo}
  \includecomment{fuu}
  \includecomment{figurer}
  \begin{document}
  \begingroup
  \tracingall
  \begin{foo}
  \begin{fuu}
  \begin{figurer}
  A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  B%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  C%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  D%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  E%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  F%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  G%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  H%%%%%
  \end{figurer}
  \end{fuu}
  \end{foo}
  \endgroup
  \end{document}

This compiles fine on Unix, or on Windows with MiKTeX 2.9, but fails
with an up-to-date TL2012 (or indeed with TL2011): see the attached log
file. The key in seeing what might be up seems to be line 1144 in the
log, where you'll see

  \next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment
  Test}\test \edef \next {\noexpand \EndOfComment {\CurrentComment
  }}\else \ThisComment {#1}\let \next \ProcessCommentLine \fi \next
  #1<-\end{fuu
  {\def}

Notice the missing closing brace. Crucial to seeing the issue is the
number of tokens read: if you add another one to for example line 'H'
you loose other token during the read.

To see the issue, you seem to need both the multiple read/write steps
used by comment and an appropriate number of tokens in the comments, and
as I say this only shows up on Windows. You can move the tokens around
within the processed material, and it does not matter what they are: the
letters are there so the lines can be picked out in the log.

Anyone got any idea what is up?
-- 
Joseph Wright
-------------- next part --------------
This is pdfTeX, Version 3.1415926-2.3-1.40.12 (Web2C 2011) (format=pdflatex 2012.4.30)  5 AUG 2012 17:06
entering extended mode
 restricted \write18 enabled.
 %&-line parsing enabled.
**test
(./test.tex
LaTeX2e <2011/06/27>
Babel <v3.8m> and hyphenation patterns for english, dumylang, nohyphenation, ge
rman-x-2011-07-01, ngerman-x-2011-07-01, afrikaans, ancientgreek, ibycus, arabi
c, armenian, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danis
h, dutch, ukenglish, usenglishmax, esperanto, estonian, ethiopic, farsi, finnis
h, french, friulan, galician, german, ngerman, swissgerman, monogreek, greek, h
ungarian, icelandic, assamese, bengali, gujarati, hindi, kannada, malayalam, ma
rathi, oriya, panjabi, tamil, telugu, indonesian, interlingua, irish, italian, 
kurmanji, lao, latin, latvian, lithuanian, mongolian, mongolianlmc, bokmal, nyn
orsk, polish, portuguese, romanian, romansh, russian, sanskrit, serbian, serbia
nc, slovak, slovenian, spanish, swedish, turkish, turkmen, ukrainian, uppersorb
ian, welsh, loaded.
(c:/texlive/2011/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(c:/texlive/2011/texmf-dist/tex/latex/base/size10.clo
File: size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
)
\c at part=\count79
\c at section=\count80
\c at subsection=\count81
\c at subsubsection=\count82
\c at paragraph=\count83
\c at subparagraph=\count84
\c at figure=\count85
\c at table=\count86
\abovecaptionskip=\skip41
\belowcaptionskip=\skip42
\bibindent=\dimen102
)
(c:/texlive/2011/texmf-dist/tex/latex/comment/comment.sty
\CommentStream=\write3

Excluding comment 'comment') Include comment 'foo' Include comment 'fuu'
Include comment 'figurer' (./test.aux)
\openout1 = `test.aux'.

LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 6.
LaTeX Font Info:    ... okay on input line 6.
LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 6.
LaTeX Font Info:    ... okay on input line 6.
LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 6.
LaTeX Font Info:    ... okay on input line 6.
LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 6.
LaTeX Font Info:    ... okay on input line 6.
LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 6.
LaTeX Font Info:    ... okay on input line 6.
LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 6.
LaTeX Font Info:    ... okay on input line 6.
{vertical mode: \tracingstats}
{\tracingpages}
{\tracinglostchars}
{\tracingmacros}
{\tracingparagraphs}
{\tracingrestores}
{\errorcontextlines}

\loggingoutput ->\tracingoutput \@ne \showboxbreadth \maxdimen \showboxdepth \m
axdimen \errorstopmode 
{\tracingoutput}
{\showboxbreadth}
{\showboxdepth}
{\errorstopmode}


\showoverfull ->\tracingonline \@ne 
{\tracingonline}

\begin #1->\@ifundefined {#1}{\def \reserved at a {\@latex at error {Environment #1 u
ndefined}\@eha }}{\def \reserved at a {\def \@currenvir {#1}\edef \@currenvline {\
on at line }\csname #1\endcsname }}\@ignorefalse \begingroup \@endpefalse \reserve
d at a 
#1<-foo

\@ifundefined #1->\expandafter \ifx \csname #1\endcsname \relax \expandafter \@
firstoftwo \else \expandafter \@secondoftwo \fi 
#1<-foo
{\expandafter}
{\csname}
{\ifx}
{false}
{\expandafter}
{\fi}

\@secondoftwo #1#2->#2
#1<-\def \reserved at a {\@latex at error {Environment foo undefined}\@eha }
#2<-\def \reserved at a {\def \@currenvir {foo}\edef \@currenvline {\on at line }\csn
ame foo\endcsname }
{\def}

\@ignorefalse ->\global \let \if at ignore \iffalse 
{\global}
{\begingroup}

\@endpefalse ->\let \if at endpe \iffalse 
{\let}

\reserved at a ->\def \@currenvir {foo}\edef \@currenvline {\on at line }\csname foo\
endcsname 
{\def}
{\edef}

\on at line -> on input line \the \inputlineno 
{\csname}

\foo ->\BeforeIncludedComment \ProcessComment {foo}

\BeforeIncludedComment ->\immediate \openout \CommentStream =\CommentCutFile \l
et \ThisComment \WriteCommentLine 
{\immediate}

\CommentCutFile ->comment.cut
\openout3 = `comment.cut'.

{\let}

\ProcessComment #1->\begingroup \def \CurrentComment {#1}\let \do \makeinnocent
 \dospecials \makeinnocent \^^L\endlinechar `\^^M \catcode `\^^M=12 \xComment 
#1<-foo
{\begingroup}
{\def}
{\let}

\dospecials ->\do \ \do \\\do \{\do \}\do \$\do \&\do \#\do \^\do \_\do \%\do \
~

\do #1->\catcode `#1=12 
#1<-\ 
{\catcode}

\do #1->\catcode `#1=12 
#1<-\\
{\catcode}

\do #1->\catcode `#1=12 
#1<-\{
{\catcode}

\do #1->\catcode `#1=12 
#1<-\}
{\catcode}

\do #1->\catcode `#1=12 
#1<-\$
{\catcode}

\do #1->\catcode `#1=12 
#1<-\&
{\catcode}

\do #1->\catcode `#1=12 
#1<-\#
{\catcode}

\do #1->\catcode `#1=12 
#1<-\^
{\catcode}

\do #1->\catcode `#1=12 
#1<-\_
{\catcode}

\do #1->\catcode `#1=12 
#1<-\%
{\catcode}

\do #1->\catcode `#1=12 
#1<-\~
{\catcode}

\makeinnocent #1->\catcode `#1=12 
#1<-\^^L
{\catcode}
{\endlinechar}
{\catcode}

\xComment #1^^M->\expandafter \ProcessCommentLine 
#1<-
{\expandafter}

\ProcessCommentLine #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}
\test \edef \next {\noexpand \EndOfComment {\CurrentComment }}\else \ThisCommen
t {#1}\let \next \ProcessCommentLine \fi \next 
#1<-\begin{fuu}
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->foo
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-\begin{fuu}
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-\begin{figurer}
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->foo
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-\begin{figurer}
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->foo
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-B%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->foo
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-B%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-C%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->foo
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-C%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-D%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->foo
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-D%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-E%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->foo
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-E%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-F%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->foo
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-F%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-G%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->foo
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-G%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-H%%%%%
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->foo
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-H%%%%%
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-\end{figurer}
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->foo
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-\end{figurer}
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-\end{fuu}
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->foo
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-\end{fuu}
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-\end{foo}
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->foo
{\ifx}
{true}
{\edef}
{\noexpand}

\CurrentComment ->foo
{\else}

\next ->\EndOfComment {foo}

\EndOfComment #1->\endgroup \end {#1}\csname After#1Comment\endcsname 
#1<-foo
{\endgroup}
{restoring \next=undefined}
{restoring \CStmp=undefined}
{restoring \test=undefined}
{restoring \catcode13=5}
{restoring \catcode12=13}
{restoring \catcode126=13}
{restoring \catcode37=14}
{restoring \catcode95=8}
{restoring \catcode94=7}
{restoring \catcode35=6}
{restoring \catcode38=4}
{restoring \catcode36=3}
{restoring \catcode125=2}
{restoring \catcode123=1}
{restoring \catcode92=0}
{restoring \catcode32=10}
{restoring \do=\noexpand}
{restoring \CurrentComment=undefined}

\end #1->\csname end#1\endcsname \@checkend {#1}\expandafter \endgroup \if at endp
e \@doendpe \fi \if at ignore \@ignorefalse \ignorespaces \fi 
#1<-foo
{\csname}
{\relax}

\@checkend #1->\def \reserved at a {#1}\ifx \reserved at a \@currenvir \else \@badend
 {#1}\fi 
#1<-foo
{\def}
{\ifx}
{true}
{\else}
{\expandafter}
{\iffalse}
{false}
{\endgroup}
{restoring \reserved at a=macro:->\def \@currenvir {foo}\edef \@currenvline \ETC.}
{restoring \endfoo=undefined}
{restoring \ThisComment=undefined}
{restoring \@currenvline=macro:->}
{restoring \@currenvir=macro:->document}
{\iffalse}
{false}
{\csname}

\AfterfooComment ->\immediate \closeout \CommentStream \input {\CommentCutFile 
}\relax 
{\immediate}

\input ->\@ifnextchar \bgroup \@iinput \@@input 

\@ifnextchar #1#2#3->\let \reserved at d =#1\def \reserved at a {#2}\def \reserved at b 
{#3}\futurelet \@let at token \@ifnch 
#1<-\bgroup 
#2<-\@iinput 
#3<-\@@input 
{\let}
{\def}
{\def}
{\futurelet}

\@ifnch ->\ifx \@let at token \@sptoken \let \reserved at c \@xifnch \else \ifx \@let
@token \reserved at d \let \reserved at c \reserved at a \else \let \reserved at c \reserve
d at b \fi \fi \reserved at c 
{\ifx}
{false}
{\ifx}
{true}
{\let}
{\else}
{\fi}

\reserved at c ->\@iinput 

\@iinput #1->\InputIfFileExists {#1}{}{\filename at parse {#1}\edef \reserved at a {\
noexpand \@missingfileerror {\filename at area \filename at base }{\ifx \filename at ext
 \relax tex\else \filename at ext \fi }}\reserved at a }
#1<-\CommentCutFile 

\InputIfFileExists #1#2->\IfFileExists {#1}{#2\@addtofilelist {#1}\@@input \@fi
lef at und }
#1<-\CommentCutFile 
#2<-

\IfFileExists #1#2#3->\openin \@inputcheck #1 \ifeof \@inputcheck \ifx \input at p
ath \@undefined \def \reserved at a {#3}\else \def \reserved at a {\@iffileonpath {#1
}{#2}{#3}}\fi \else \closein \@inputcheck \edef \@filef at und {#1 }\def \reserved
@a {#2}\fi \reserved at a 
#1<-\CommentCutFile 
#2<-\@addtofilelist {\CommentCutFile }\@@input \@filef at und 
#3<-\filename at parse {\CommentCutFile }\edef \reserved at a {\noexpand \@missingfil
eerror {\filename at area \filename at base }{\ifx \filename at ext \relax tex\else \fil
ename at ext \fi }}\reserved at a 
{\openin}

\CommentCutFile ->comment.cut
{\ifeof}
{false}
{\closein}
{\edef}

\CommentCutFile ->comment.cut
{\def}
{\fi}

\reserved at a ->\@addtofilelist {\CommentCutFile }\@@input \@filef at und 

\@addtofilelist #1->
#1<-\CommentCutFile 
{\input}

\@filef at und ->comment.cut 
(./comment.cut
\begin #1->\@ifundefined {#1}{\def \reserved at a {\@latex at error {Environment #1 u
ndefined}\@eha }}{\def \reserved at a {\def \@currenvir {#1}\edef \@currenvline {\
on at line }\csname #1\endcsname }}\@ignorefalse \begingroup \@endpefalse \reserve
d at a 
#1<-fuu

\@ifundefined #1->\expandafter \ifx \csname #1\endcsname \relax \expandafter \@
firstoftwo \else \expandafter \@secondoftwo \fi 
#1<-fuu
{\expandafter}
{\csname}
{\ifx}
{false}
{\expandafter}
{\fi}

\@secondoftwo #1#2->#2
#1<-\def \reserved at a {\@latex at error {Environment fuu undefined}\@eha }
#2<-\def \reserved at a {\def \@currenvir {fuu}\edef \@currenvline {\on at line }\csn
ame fuu\endcsname }
{\def}

\@ignorefalse ->\global \let \if at ignore \iffalse 
{\global}
{\begingroup}

\@endpefalse ->\let \if at endpe \iffalse 
{\let}

\reserved at a ->\def \@currenvir {fuu}\edef \@currenvline {\on at line }\csname fuu\
endcsname 
{\def}
{\edef}

\on at line -> on input line \the \inputlineno 
{\csname}

\fuu ->\BeforeIncludedComment \ProcessComment {fuu}

\BeforeIncludedComment ->\immediate \openout \CommentStream =\CommentCutFile \l
et \ThisComment \WriteCommentLine 
{\immediate}

\CommentCutFile ->comment.cut
\openout3 = `comment.cut'.

{\let}

\ProcessComment #1->\begingroup \def \CurrentComment {#1}\let \do \makeinnocent
 \dospecials \makeinnocent \^^L\endlinechar `\^^M \catcode `\^^M=12 \xComment 
#1<-fuu
{\begingroup}
{\def}
{\let}

\dospecials ->\do \ \do \\\do \{\do \}\do \$\do \&\do \#\do \^\do \_\do \%\do \
~

\do #1->\catcode `#1=12 
#1<-\ 
{\catcode}

\do #1->\catcode `#1=12 
#1<-\\
{\catcode}

\do #1->\catcode `#1=12 
#1<-\{
{\catcode}

\do #1->\catcode `#1=12 
#1<-\}
{\catcode}

\do #1->\catcode `#1=12 
#1<-\$
{\catcode}

\do #1->\catcode `#1=12 
#1<-\&
{\catcode}

\do #1->\catcode `#1=12 
#1<-\#
{\catcode}

\do #1->\catcode `#1=12 
#1<-\^
{\catcode}

\do #1->\catcode `#1=12 
#1<-\_
{\catcode}

\do #1->\catcode `#1=12 
#1<-\%
{\catcode}

\do #1->\catcode `#1=12 
#1<-\~
{\catcode}

\makeinnocent #1->\catcode `#1=12 
#1<-\^^L
{\catcode}
{\endlinechar}
{\catcode}

\xComment #1^^M->\expandafter \ProcessCommentLine 
#1<-
{\expandafter}

\ProcessCommentLine #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}
\test \edef \next {\noexpand \EndOfComment {\CurrentComment }}\else \ThisCommen
t {#1}\let \next \ProcessCommentLine \fi \next 
#1<-\begin{figurer}
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->fuu
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-\begin{figurer}
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->fuu
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-B%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->fuu
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-B%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-C%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->fuu
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-C%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-D%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->fuu
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-D%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-E%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->fuu
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-E%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-F%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->fuu
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-F%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-G%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->fuu
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-G%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-H%%%%%
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->fuu
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-H%%%%%
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-\end{figurer}
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->fuu
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-\end{figurer}
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
#1<-\end{fuu
{\def}

\csarg #1#2->\expandafter #1\csname #2\endcsname 
#1<-\ifx 
#2<-End\CurrentComment Test
{\expandafter}
{\csname}

\CurrentComment ->fuu
{\ifx}
{false}

\ThisComment #1->\def \CStmp {#1}\immediate \write \CommentStream {\CSstringmea
ning \CStmp }
#1<-\end{fuu
{\def}
{\immediate}
\write->\CSstringmeaning \CStmp 

\CSstringmeaning #1->\expandafter \CSgobblearrow \meaning #1
#1<-\CStmp 
{no mode: \expandafter}
{\meaning}

\CSgobblearrow macro:->->
{vertical mode: \let}
{\fi}

\next #1^^M->\def \test {#1}\csarg \ifx {End\CurrentComment Test}\test \edef \n
ext {\noexpand \EndOfComment {\CurrentComment }}\else \ThisComment {#1}\let \ne
xt \ProcessCommentLine \fi \next 
)
Runaway argument?
! File ended while scanning use of \next.
<inserted text> 
                \par 
\@filef at und ->comment.cut 
                          
\AfterfooComment ...ream \input {\CommentCutFile }
                                                  \relax 
l.22 \end{foo}
              
? 
{\relax}
{the character \}
{horizontal mode: the character \}
)
*
(Please type a command or say `\end')
*
(Please type a command or say `\end')
*
! Emergency stop.
<*> 
    
End of file on the terminal!

 
Here is how much of TeX's memory you used:
 253 strings out of 493610
 2858 string characters out of 3145852
 49291 words of memory out of 3000000
 3644 multiletter control sequences out of 15000+200000
 3640 words of font info for 14 fonts, out of 3000000 for 9000
 831 hyphenation exceptions out of 8191
 23i,0n,17p,151b,82s stack positions out of 5000i,500n,10000p,200000b,50000s
!  ==> Fatal error occurred, no output PDF file produced!


More information about the tex-live mailing list