文件输入和输出

文件输入和输出

是否有任何 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以便能够更广泛地操纵数据。

相关内容