我想知道是否可以使用管道字符|
而不是 来&
分隔单元格。
像这样:
c1 | c2 | c3 \\
c4 | c5 | c6 \\
而不是这样:
c1 & c2 & c3 \\
c4 & c5 & c6 \\
答案1
如果你不将其|
用于其他用途
\catcode`\|=4
答案2
除了使用 (本质上脆弱的) catcode 技巧 (正如 David 所建议的) 之外,您还可以定义一个带有分隔参数的简单辅助宏:
\documentclass{scrartcl}
\usepackage{array}
\begin{document}
\def\row#1|#2|#3\\{#1 & #2 & #3 \tabularnewline}
\begin{tabular}{ccc}
\row c1 | c2 | c3 \\
\row c4 | c5 | c6 \\
\end{tabular}
\end{document}
尽管\row
每行开头的额外内容需要多输入一些,但它也为您带来了一些额外的灵活性:您现在可以轻松地重新排列、跳过或格式化列,只需改变\row
:例如,\def\row#1|#2|#3\\{\textbf{#1} & & #3 \tabularnewline}
将第一列设置为粗体,并且(可能暂时)跳过第二列。
答案3
这是使用该database
模块的 ConTeXt 解决方案。其思路是定义一个分隔列表,使用竖线作为分隔符,使用表格宏作为分隔符。示例:
\usemodule [database]
\defineseparatedlist
[Table]
[separator=|,
before=\bTABLE, after=\eTABLE,
first=\bTR, last=\eTR,
left=\bTD, right=\eTD]
\starttext
\startTable
alpha | beta | gamma
first | second | third
\stopTable
\stoptext
作为分隔符,可以使用字符串comma
(默认)、、tab
或,space
或者任何字符,就像我在这里对竖线所做的那样。
由于可以配置宏、分隔符和引用,因此可以使用相同的技术来排版 CSV 数据。