读取外部文件失败,出现与尺寸相关的错误

读取外部文件失败,出现与尺寸相关的错误

我想读取外部文件一行,并将每行作为一个项目插入。由于维度相关错误,我未能做到这一点。如何解决?

\documentclass{article}
\def\trimtok i{}
\def\trimmer#1{\expandafter\trimtok #1}

\newread\reader

\immediate\write18{tlmgr list --only-installed > installed-packages.txt}
\begin{document}
\makeatletter
\begin{enumerate}
\openin\reader=installed-packages.txt\relax
\loop
    \read\reader to \data
    \unless\ifeof\reader
        \item \trimmer{\data}
\repeat
\closein\reader
\end{enumerate}
\makeatother
\end{document}

答案1

您创建的文本文件包含 TeX 命令,这些命令出现在某些软件包的描述中。因此,您需要在某处进行去标记化。如果您在读取后执行此操作,TeX 将在控制序列后插入空格。因此,我会将其读取为字符串,然后i在整理宏中将和行尾作为“其他”字符处理:

\documentclass{article}
\usepackage[T1]{fontenc}
\begingroup
\catcode`\^^M=12\relax%
\expandafter\gdef\expandafter\trimtok\detokenize{i}#1^^M{#1}%
\gdef\trimmer#1{\expandafter\trimtok #1}%
\endgroup

\newread\reader

\immediate\write18{tlmgr list --only-installed > installed-packages.txt}
\begin{document}
\makeatletter
\begin{enumerate}
\openin\reader=installed-packages.txt\relax
\loop
    \readline\reader to \data
    \unless\ifeof\reader
        \item \trimmer{\data}
\repeat
\closein\reader
\end{enumerate}
\makeatother
\end{document}

您得到的实际错误与第一个“有问题”的行有关

i addlines: A user-friendly wrapper around \enlargethispage.

尝试\enlargethispage在没有合适参数的情况下执行!

相关内容