从外部文件组织表格

从外部文件组织表格

我想创建一个包含有关音乐专辑信息的选项卡(例如,一列包含艺术家的信息,一列包含专辑标题的信息,一列包含备注的信息等)。

我不想做这样的事情

\begin{tabular}{c|c|c}
Artist & Album & Remark\\
MyArtist1 & MyAlbum1 & MyRemark1\\
MyArtist2 & MyAlbum2 & MyRemark2
\end{tabular}

因为这是一个我会经常更新的列表,而且我希望它被排序(按字母顺序、按年份等)。

我的想法是将专辑的所有信息存储在外部文件中,并使用它来创建我的标签(例如参考资料)。比如

@album{Name
\title='MyTitle',
\year='1968',
\artist='MyArtist'
}

是否已经存在一个可以执行此操作的包,还是我需要自己编写代码?如果是这样,我会采纳你的每一个想法。

答案1

如果你做的事情并不比你展示的更复杂,我只会制作一个 CSV 文件:

测试.csv:

Artist,Album,Remark
MyArtist1, MyAlbum1, MyRemark1
MyArtist3, MyAlbum2, MyRemark1
MyArtist1, MyAlbum3, MyRemark2
MyArtist2, MyAlbum4, MyRemark2

优点:可以在任何文本编辑器、任何电子表格,甚至命令行中轻松更新:

echo "MyArtist4, MyAlbum5, MyRemark3" >> test.csv

然后可以用不同的方式用 LaTeX 工具导入(例如,参见这里datatool对这些数据进行排序很简单:

mew.tex:

\documentclass{article}
\usepackage{datatool}
\begin{filecontents}{test.csv}
Artist,Album,Remark
MyArtist1, MyAlbum1, MyRemark1
MyArtist3, MyAlbum2, MyRemark1
MyArtist2, MyAlbum3, MyRemark2
MyArtist1, MyAlbum4, MyRemark2
\end{filecontents}
\begin{document}
\DTLloaddb[keys={Artist,Album,Remark}]{test}{test.csv}
\DTLsort{Artist}{test}
\begin{table} \caption{Test}
\medskip\centering
\DTLdisplaydb{test}
\end{table}
\end{document}

如果您需要更多对小表进行排序的功能,另一种选择是在 R 中加载 csv 文件,以任何方式进行管理(按艺术家排序、按某些注释选择子集等),然后通过 生成表格xtable

平均体重

\documentclass{article}
\usepackage{booktabs}\belowcaptionskip1ex 
\begin{document}
<<Mytable,results="asis",echo=F>>=
x <- read.csv("test.csv",header = T)
library(xtable)
print(xtable(x[order(x$Artist),],caption="Test"), 
      include.rownames=F, booktabs=T, caption.placement="top" )
@
\end{document}

如果您不了解knitr.Rnw 文件,请安装 Rstudio,或者在 Overleaf 中将其作为 mwe.Rtex 加载,结果必须是:

姆韦

答案2

我想要一些类似的东西,虽然不是表格形式,用于我的书和其他收藏。我基于此bibtex;输入书籍数据库文件并对其进行排序。我将其写为 Peter Wilson,个人图书目录:bookdb, TUGboat, 第 1 期,第 67-71 页,2016 年。

可在以下网址获取https://tug.org/TUGboat/tb37-1/tb115wilson.pdf

也许它会给你或其他人一两个想法。

相关内容