允许在表格中使用 [ 字符而无需进入数学模式(来自 R)

允许在表格中使用 [ 字符而无需进入数学模式(来自 R)

我有 R 代码,可以生成如下乳胶代码:

\begin{tabular}{D{.}{.}{7}D{.}{.}{7}}
\toprule
\multicolumn{1}{c}{x} & \multicolumn{1}{c}{y} \\
\midrule
[1, 5) &  1 \\
[1, 5) &  2 \\
[5, 8) &  5 \\
[5, 8) &  7 \\
[8,10] &  8 \\
[8,10] & 10 \\
\bottomrule
\end{tabular}

这会产生数学错误:

! LaTeX Error: Bad math environment delimiter.

我该如何防止这种情况发生?我希望方括号按原样打印,因为它们代表间隔 - 以前在办公室里已经完成了切换到 { 的解决方法,但看起来很糟糕!

我读过一些资料,但没有看到任何关于防止 latex 进入数学模式的具体内容。不过,我对此并不熟悉,所以我可能使用了错误的关键字!

例子

我正在使用以下参数在 knitr chunks 中生成代码:

<<tab-example,echo=FALSE,cache=FALSE,results='asis'>>=
example<-data.frame(cbind(x=1:10,y=1:10))
example$x<-cut(example$x,3)
toLatex(example)
@

当前使用的软件包

\usepackage{fancyhdr,dcolumn,booktabs,float,titlesec}
\usepackage[margin=0.7in]{geometry}
\usepackage[us,12hr]{datetime}

答案1

您对(片段)的使用

%...
[1, 5) &  2 \\
[5, 8) &  5 \\
%...

(视觉上)被解释为

%...
       &  1 \\[1, 5) 
       &  2 \\[5, 8)
       &  5 \\[5, 8)
%...

因为 LaTeX 要求可选参数 after\\包含长度/维度。最简单的解决方法是插入非[after \\,例如{}(一个空组)。例如:

\begin{tabular}{D{.}{.}{7}D{.}{.}{7}}
  \toprule
  \multicolumn{1}{c}{x} & \multicolumn{1}{c}{y} \\
  \midrule
  {}[1, 5) &  1 \\
  {}[1, 5) &  2 \\
  {}[5, 8) &  5 \\
  {}[5, 8) &  7 \\
  {}[8,10] &  8 \\
  {}[8,10] & 10 \\
  \bottomrule
\end{tabular}

第一个{}不是需要的,但是我将其插入以使代码看起来一致。

答案2

作为@Werner 出色解释的后续,当我使用 RI 时,创建了一个sanitise函数来代替默认xtable::sanitize函数,以适当地转义这些内容。

包裹奥普蒂朗姆酒即可下载sanitise使用相应功能。

相关内容