我想使用外部 .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}
你得到输出: