所以我有一个 .txt 文件,我需要逐行导入数据。这应该可以正常工作。但是我需要调整加载到命令中的内容并将其写入另一个 .txt 文件,该文件稍后将由 datatool 包使用。问题是,如果我这样写:
\documentclass{article}
\begin{document}
\newopen\copyfile % open the file to write to
\openout\copyfile=copy.txt
\newread\file % open the file to read from
\openin\file=file.txt
\loop\unless\ifeof\file
\read\file to\fileline % Read one line and store it into \fileline
\fileline % print the content into the pdf
\write\copyfile{\fileline} % print the content to copy.txt
\repeat
\end{document}
输出文件如下所示:
\par
\par
\par
...
而 pdf 显示文件的实际内容。下面是用于输入的文本文件的示例。
数据.txt:
This is the first line.
And the second one.
Here is the third.
And so on...
如果有人有另一种解决方案,让数据工具跳过第一x
行,或者在读取某个字符串时效果更好,那么这也将以更有效的方式解决我的问题:)
ps:我无法调整.txt文件
答案1
你忘了\immediate
:
\documentclass{article}
\begin{document}
\newwrite\copyfile % open the file to write to
\immediate\openout\copyfile=copy.txt
\newread\file % open the file to read from
\openin\file=data.txt
\begingroup\endlinechar=-1
\loop\unless\ifeof\file
\read\file to\fileline % Read one line and store it into \fileline
\fileline\par % print the content into the pdf
\immediate\write\copyfile{\unexpanded\expandafter{\fileline}} % print the content to copy.txt
\repeat
\endgroup
\end{document}
我还添加了一个技巧来避免在扩展的末尾出现空白\fileline
。但是复制不会准确,因为 TeX 总是在读入文件的末尾添加一个空行。
这\unexpanded\expandafter{\fileline}
避免了数据文件中可能存在的命令扩展问题。
这很难理解为什么你会想要这个。