从 .txt 文件中获取特定数据

从 .txt 文件中获取特定数据

我想使用外部 .txt 文件在我的 LaTeX 文档中提供包含数据的表格。为了实现这一点,我考虑了 pgfplotstable 包和 filecontents 包。它们都使我能够根据数据创建完整的表格(但必须手动从我的 .txt 文件中移除 [] 括号)。但我只想提取某些数据并将其插入到我文档的现有表格中。

.txt 文件中有 [] 括号,可以用作新输入行的标记吗?

例子:

\documentclass{scrartcl}
\usepackage{tabularx}
\usepackage[table]{xcolor} 
\usepackage{pgfplotstable, filecontents}

\begin{filecontents*}{data.txt}
Title Data
[Name] Clarissa
[Family Name] Fray
[Age] 16
[Country] USA
[Gender] Female
[Haircolor] Red
\end{filecontents*}

\begin{document} 

%% --------------------- What it should look like (but getting data from file)
\begin{figure}
    \rowcolors{1}{gray!25}{white}
        \begin{tabularx}{\textwidth}{|>{\bfseries}l|X|} \hline
        Name & Clarissa \\ \hline
        Family Name & Fray \\ \hline
        Gender & Female \\ \hline
        Age & 16 \\ \hline
    \end{tabularx}
\end{figure}

%%% --------------------- The best I can get (doesn't compile, because of
%%% the brackets in the .txt file and the space in [Family Name])
%\pgfplotstabletypeset[
%every head row/.style = {
%   before row = {
%       \hline
%       }
%   }, 
%after row = \hline,
%every even row/.style={
%   before row = {
%       \rowcolor[gray]{0.9}
%       }
%},
%columns/Title/.style = {column type=|l, column name=First},
%columns/Data/.style = {column type=|l|, column name=Second},
%col sep = space,
%string type,
%]{data.txt}

\end{document}

非常感谢您的帮助,谢谢!

答案1

在普通的 Windows 10 PC 上,以下命令应在 PowerShell 提示符下运行。它也可能在 Windows 7 或 8 上运行,但目前我无法轻松测试:

cat .\data.txt | select -skip 1 | % { $_ -replace "\[", "" } | % { $_ -replace "\]", "," } | Out-File -encoding ascii data2.txt

注释版本:

  • cat .\data.txt获取 data.txt 的所有内容,并将其发送到管道中的下一个命令
  • | select -skip 1跳过管道输入的第一行(您的标题)
  • | % { $_ -replace "[", "" }用空字符串替换开括号字符
  • % { $_ -replace "]", "," }用逗号替换右括号字符
  • | Out-File -encoding ascii data2.txt将管道数据以计划 ASCII 格式写入文件 data2.txt

这将生成一个文件 data2.txt,其中包含:

名字,克拉丽莎
姓氏,弗雷
年龄:16岁
国家, 美国
性别女
发色,红色

并附有以下文件:

\documentclass{scrartcl}
\usepackage[table]{xcolor} 
\usepackage{pgfplotstable}

\begin{document} 

\pgfplotstabletypeset[
every head row/.style = {
   before row = {
       \hline
       }
   }, 
after row = \hline,
every even row/.style={
   before row = {
       \rowcolor[gray]{0.9}
       },
},
columns/Title/.style = {column type=|l, column name=First},
columns/Data/.style = {column type=|l|, column name=Second},
col sep = comma,
string type,
]{data2.txt}

\end{document}

你得到输出:

在此处输入图片描述

相关内容