在文本文件中titles.txt
,我有希望插入 TeX 文件的所有文档的标题、类别和文件名。我可以正确插入标题和类别(与一起使用\index
),但不幸的是,我无法使用文件名,因为\includepdf
增加了额外的空间我无法删除。文本文件的结构如下:
title1
category1
filename1
tilte2
category2
filename2
etc..
以下是代码:
\newcounter{numexos}
\setcounter{numexos}{1}
\newread\myfile
\newcommand*\readfile{%
\immediate\openin\myfile=titles.txt\relax
\loop\unless\ifeof\myfile
\read\myfile to\mybtitle
\read\myfile to\mycategory
\read\myfile to\myfname
\ifeof\myfile\else
\index{\mycategory}
\includepdf[addtotoc={1, section, 1 , \mybtitle, \numexos },fitpaper=true,pagecommand={}]{\myfname.pdf}
\addtocounter{numexos}{1}
\fi
\repeat
\immediate\closein\myfile
}
如果可能的话,我可以使用计数器,而不是使用存储在 TXT 文件中的文件名:我尝试过但由于同样的原因失败了:文件名中的额外空格:
01 .pdf
答案1
首先,我会删除最后的空格:
\newread\myfile
\newcommand*\readfile{%
\begingroup\endlinechar=-1
\immediate\openin\myfile=titles.txt\relax
\loop\unless\ifeof\myfile
\read\myfile to\mybtitle
\ifx\mybtitle\empty\else
\read\myfile to\mycategory
\read\myfile to\myfname
\index{\mycategory}
\includepdf[addtotoc={1, section, 1 , \mybtitle, \thenumexos },fitpaper=true,pagecommand={}]{\myfname.pdf}
\addtocounter{numexos}{1}
\fi
\repeat
\endgroup
\immediate\closein\myfile
}
以小组形式进行阅读没有任何问题,因为您需要的所有操作都是“全局的”。
我使用了不同的内部测试:如果\myfile
为空,我假设有一个空白行分隔标题或者文件已结束。
答案2
您可以像这样删除空格:
\loop\unless\ifeof\myfile
\read\myfile to\mybtitle
\read\myfile to\mycategory
\read\myfile to\myfname
\show\myfname
\edef\myfname{\expandafter\zap@space\myfname \@empty}
\show\myfname
\show
当然,这些行只是为了调试:
注意第二个末尾的空格是如何消失的\show
> \myfname=macro:
->filename1 .
\iterate ...myfile to\myfname \par \show \myfname
\edef \myfname {\expandaft...
l.26 \readfile
?
> \myfname=macro:
->filename1.