我是 LaTeX 新手。在 中tabular
,我们通常使用&
for 分区。我想创建一个.sty
for 表格环境。&
用逗号分隔符替换,在这种情况下,逗号应该像&
在tabular
命令中一样工作。
在.tex
文件中,输入a,b,c
和输出应该看起来像|a|b|c|
答案1
概念证明。使用时风险自负!
基本方法是更改\catcode
要用作“对齐制表符”的字符。以下是mytabular
执行此操作的环境:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentEnvironment {mytabular} { O{\,} }
{
\char_set_catcode_other:N \&
\char_set_catcode_alignment:n {`#1}
\begin{tabular}
}
{
\end{tabular}
}
\ExplSyntaxOff
\begin{document}
\pagestyle{empty}
\begin{mytabular}{l|r}
a , b & c \\
c , d \\
\end{mytabular}
\begin{mytabular}[@]{l|r}
a @ b \\
c @ d, & e \\
\end{mytabular}
\end{document}
可选参数允许您选择使用哪个字符作为对齐制表符。不会进行任何验证来查看您传递的字符是否有效。如果您未传递字符,则使用逗号。逗号的行为&
与普通字符相同。
但是,正如其他人已经警告过你的那样,这不是最好的主意。依赖于 &
对齐选项卡的包将会崩溃。
答案2
正如伯纳德所建议的,为什么不使用csvsimple
?
如果单元格中有逗号,只需将内容放在花括号内。
如果你的单元格中有 &,则只需写入\&
。
\documentclass{article}
\usepackage{filecontents}
\usepackage{csvsimple}
\begin{document}
\begin{filecontents*}{mydata.csv}
a,b,c
\end{filecontents*}
\csvreader[
tabular=|c|c|c|,
nohead
]{mydata.csv}% filename
{}{\csvcoli & \csvcolii & \csvcoliii}
\vspace{3ex}
and if you have commas or \& in your cells:
\vspace{3ex}
\begin{filecontents*}{mydata.csv}
a,b,c
{c, d},{e, f, g},{h, i, j, k}
l \& m,{n \& o, p},q \& r \& s \& t
\end{filecontents*}
\csvreader[
tabular=|c|c|c|,
nohead
]{mydata.csv}% filename
{}{\csvcoli & \csvcolii & \csvcoliii}
\end{document}
答案3
您可以使用该spalign
包(文档在此处),其中包括\spaligntabular
与表格完全相同的行为,只是它使用空格和逗号作为对齐字符&
,并使用分号作为行尾控制序列\\
:
\documentclass[12pt]{report}
\usepackage{spalign}
\begin{document}
\spaligntabular{lcr}{a b c; aa bb cc}
\spaligntabular{|c|c|c}{a,b,c}
\end{document}
它产生了这个:
和
该spalign
软件包还包括类似的命令,例如\spalignmat
矩阵和\spalignarray
通用数组的命令。
可以选择使用不同的字符来代替或补充空格、逗号和分号(参见文档)。
顺便说一句,如果您需要在表格中包含逗号、空格或分号,只需将其括在括号中即可{}
。