包含文本文件中列表的 PDF 文档

包含文本文件中列表的 PDF 文档

在文本文件中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.

相关内容