我正在使用 PHP 生成 Tex 文件,并将几个变量传递到要呈现的模板文件中。
我想创建一个包含多列的表格,但有一个横跨这些列的标题。在本例中,标题是费用的名称:里程、酒店等。
我想我可能会使用该\multicolumn
命令作为表格标题,如下所示:
\begin{longtabu} to \textwidth { X[2,l] X[3,l] X[1,l] X[1,l] X[1,r] X[5,l] }
\arrayrulecolor{medium-gray}
\multicolumn{5}{ l }{\large{\textbf{%=expense=%}}} & \\
\textbf{Date} & \textbf{Employee} & \textbf{Quantity} & \textbf{Cost} &
\textbf{Total} & \textbf{Notes} \tabcr
\endhead
%=date=% & %=employee=% & %=qty=% & %=cost=% & %=total=% & %=note=% \tabcr
\end{longtabu}
一切运行良好,除非费用名称中有一个与号......在这种情况下\multicolumn
会有点混乱(可能是因为它试图转到下一列?),就像expense = "Copies 11x17 (B&W)"
是的,那是不行的。
我的问题是,我能以某种方式避开那个 & 符号吗?我尝试过将 添加\verb|...|
到变量,然后\texttt{...}
添加到它。没有运气。现在,我正在考虑我的两个选择是要么摆脱这种\multicolumn
方法,要么禁止在费用名称中使用 & 符号。我还有其他选择吗?有没有办法使用\multicolumn
?
注意:发布后,我发现我们的代码中还有另一个表,它使用预处理器(在 PHP 中)来处理/转义特殊字符。对于我的目的来说,这是一个足够好的解决方案,但还有其他选择吗?
答案1
如果您正在使用任何将字符串传递给 LaTeX 的脚本语言,那么您绝对应该对其进行转义,因为您可能无法控制将传递的所有数据,并且您的系统应该是故障安全的。
这意味着您应该\
在&
、#
、等前面放置一个,否则会导致错误或在输出中不可见。如果您知道其他特殊符号,例如,{
您可能还应该将它们替换为等,因为它们也可能是一个问题。}
\
\textbackslash
就我个人而言,我会避免在绝对过度的环境中使用逐字文本。处理文本应该尽可能简单。用保存的框替换一个字符会很复杂。
顺便说一句:所提到的\texttt
并不执行任何操作,例如转义(或切换到逐字),它只是切换到另一种字体。