在表中使用逗號代替 &

在表中使用逗號代替 &

我是 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}

它產生這個:

分裂表格範例

分裂表格範例 2

spalign軟體包還包括類似的命令,例如\spalignmat矩陣和\spalignarray通用數組的命令。

可以選擇使用不同的字元來取代空格、逗號和分號,或除了空格、逗號和分號之外還使用不同的字元(請參閱文件)。

順便說一句,如果您需要在表格中包含逗號、空格或分號,只需將其括在大括號中即可{}

相關內容