是否有任何 LaTeX 软件包可以帮助读取和写入文件?我正在尝试开发以下问题的解决方案:
1) 我经常写长篇报告。报告的一部分内容包括:
Key date: 12 Sep 2010 Complete Floor 1
Key date: 18 Sep 2010 Other activity
2) 最好将所有这些日期保存到某种辅助文件中,然后稍后将其作为其自己的部分导入。它也需要进行排序。
到目前为止,我已经查看了答案包以寻找灵感,也考虑过破解索引机制。任何想法和指示都将不胜感激。
答案1
听起来这个datatool
包的任务很完美。它旨在用 TeX 创建“数据库”,然后可以将其保存到外部文件中,然后稍后读取。此外,它还提供了许多有用的数据操作命令。
答案2
你可以使用以下方式轻松写入文件
\newwrite\file
\immediate\openout\file=myfilename.txt
\immediate\write\file{A line of text to write to the file}
\immediate\write\file{Another line of text to write to the file}
\closeout\file
您可以按照类似的方式从文件中一次读取一行。
\newread\file
\openin\file=myfilename.txt
\loop\unless\ifeof\file
\read\file to\fileline % Reads a line of the file into \fileline
% Do something with \fileline
\repeat
\closein\file
编辑:请注意,这\unless
是 e-TeX 扩展。\readline
是另一个有用的扩展。它读取行并为每个字符分配一个其他 (12) 或空格 (10) 的类别代码。即使是行尾字符也是如此。
答案3
如果你的某些报告数据是表格形式,也许pgfplotstable 包是一个选项。它使得读取(部分)分隔文本文件并将数据排版为漂亮的表格变得非常容易。
答案4
我尝试了目前给出的所有答案 - 除了我没有在 Will Robertson 提到的答案上花太多时间datatool
。最后我决定破解一个简单的解决方案,如下所示:
%% Define a new command for activity key-dates
%% this can be saved for shipout later
\newcommand{\keydate}[2]{#1 #2 \\}
\newcommand{\out}[2]{\immediate\write\tempfile{\noexpand\keydate{ #1}{#2}}}
%% We open the file to to write the key-dates
%% we will use it later to import
\newwrite\tempfile
\immediate\openout\tempfile=keydates.tex
%% Example
%%
\out{Activity 1}{10 Sep 2010}
\out{Activity 2}{12 Sep 2010}
\out{Activity 3}{13 Sep 2010}
%% finally we close the file
%%
\immediate\closeout\tempfile
%% we now read the file and dostuff with it
%%
\section{Summary of Key Dates}
\input{keydates}
这个快速破解方法成功了。在下一个版本中,我将尝试使用,datatool
以便能够更广泛地操纵数据。