
我是 LaTeX 新手。在 中tabular
,我們一般用於&
分區。我想建立一個.sty
表格環境。替換&
為逗號分隔符,在這種情況下,逗號應該像命令&
中一樣工作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
通用數組的命令。
可以選擇使用不同的字元來取代空格、逗號和分號,或除了空格、逗號和分號之外還使用不同的字元(請參閱文件)。
順便說一句,如果您需要在表格中包含逗號、空格或分號,只需將其括在大括號中即可{}
。