我目前正在尝试从文件(逗号或制表符分隔,无所谓)导入一组数据以创建表格。以下是此类数据的一个示例(如果您感兴趣,请参阅 DH 参数):
Link \alpha a \theta d
0 0 0 0 0
1 \frac{\pi}{2} 0 \theta_{1} 340
2 \frac{-\pi}{2} 0 \theta_{2} 0
3 \frac{-\pi}{2} 0 \theta_{3} 400
4 \frac{\pi}{2} 0 \theta_{4} 0
5 \frac{\pi}{2} 0 \theta_{5} 400
6 \frac{-\pi}{2} 0 \theta_{6} 0
7 0 0 \theta_{7} 0
我尝试过 pgfplots 和 csvsimple,但都没有成功。从我收到的错误来看,它们似乎总是难以处理特殊字符。有趣的是,csvsimple 的“Weißbäck”示例仅在“Weißbäck”不在标题行中时才有效。
是否有人碰巧有一个用于在表中导入带有特殊符号的非标准数据的工作流程?
*** 编辑:下面的简单测试用例...
= 给定 Tex 文件:
\documentclass{letter}
\usepackage[utf8]{inputenc}
\usepackage{csvsimple}
\begin{document}
\csvautotabular{./csv/test.csv}
\csvautotabular{./csv/test2.csv}
\end{document}
= 给定 test.csv(为了证明简单案例有效):
a,b,c
2,2,8
3,6,9
= 给定 test2.csv:
\ss,b,c
2,2,8
3,6,9
- 错误:!包 csvsimple 错误:文件“。/csv/test2.csv”以空行开头!。
= 给定 test2.csv:
$\ss$,b,c
2,2,8
3,6,9
错误:!缺少插入的 \endcsname。\OT1\ss l.9 \csvautotabular{./csv/test2.csv} 标记的控制序列不应出现在 \csname 和 \endcsname 之间。!额外的 \endcsname。
= 给定 test2.csv(类似于 csvsimple 示例,但标题行中有特殊字符):
\ss{},b,c
2,2,8
3,6,9
错误:!包 csvsimple 错误:文件“。/csv/test2.csv”以空行开头!。
= 给定 test2.csv(类似于 csvsimple 示例,正文中有特殊字符):
a,b,c
1,\ss{},8
3,6,9
按预期工作!
答案1
您的问题比较笼统,很难回答。但如果我理解正确的话,您想在表头中使用特殊字符,并且想从 csv 文件中读取它们。
该\csvautotabular
宏仅用于快速调查,而不适用于生产表,因为它受到很大限制。\csvreader
或\csvloop
缩进以供正常使用。
要使用 csv 文件的第一行作为普通的数据线,你必须说no head
,也必须给出,column count
因为第一行不是读作模式。那么,这条线可以用作数据线。
但是,现在还有并且还会有一个重要的限制:行不能以反斜杠开头\
。
现在来看一个例子:
\begin{filecontents*}{test3.csv}
Wei\ss{}b\"ack,\textbf{bold},c
2,2,8
3,6,9
\end{filecontents*}
\documentclass{letter}
\usepackage[utf8]{inputenc}
\usepackage{csvsimple}
\begin{document}
\csvloop{
file=test3.csv,
no head, % no special treatment of first line
column count=3, % since no first line is given, tell about column count
before reading=\begin{tabular}{|l|l|l|}\hline,
command=\csvlinetotablerow,
late after line=\\,
late after first line=\\\hline,
late after last line=\\\hline,
after reading=\end{tabular}
}
\end{document}