在表格中使用逗号代替 &

在表格中使用逗号代替 &

我是 LaTeX 新手。在 中tabular,我们通常使用&for 分区。我想创建一个.styfor 表格环境。&用逗号分隔符替换,在这种情况下,逗号应该像&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}

它产生了这个:

spaligntabular 示例

spaligntabular 示例 2

spalign软件包还包括类似的命令,例如\spalignmat矩阵和\spalignarray通用数组的命令。

可以选择使用不同的字符来代替或补充空格、逗号和分号(参见文档)。

顺便说一句,如果您需要在表格中包含逗号、空格或分号,只需将其括在括号中即可{}

相关内容