我有一个单元格数组,名为\SingleCell
,使用arrayjobx
,我已将值“R11”分配给该数组。我有一个 1 × 2 tabular
,\SingleCell(1)
第一列带有 ,第二列带有逗号“,” 。我还有一个计数器someCounter
,其值为 1。
我认为\SingleCell(1)
应该在所有方面都将其视为SingleCell(\value{someCounter})
。但事实并非如此:在第一个带有 的表格中\SingleCell(1)
,两个单元格共享相同的基线。在第二个带有 的表格中,其他方面都相同的表格中SingleCell(\value{someCounter})
,“R11”出现在逗号基线的下方。
什么可能不同\SingleCell(1)
,SingleCell(\value{someCounter})
导致这种行为? MWE 及其输出如下:
\documentclass{article}
\usepackage{array}
\usepackage{ragged2e}
\usepackage{arrayjobx}
\newcolumntype{Q}{>{\leavevmode\RaggedLeft\arraybackslash}p{0.75cm}}
\newcounter{someCounter}
\newarray\SingleCell
\begin{document}
\setcounter{someCounter}{1}
\SingleCell(1)={R11}
% Table where array element is referenced by "(1)"
\begin{tabular}{|Q c|}
\hline
\SingleCell(1) &,\\
\hline
\end{tabular}
\bigskip
% Table where array element is referenced by "\value{counter}"
\begin{tabular}{|Q c|}
\hline
\SingleCell(\value{someCounter}) &,\\
\hline
\end{tabular}
\end{document}
答案1
正如@Mico 在评论中所说,\value{someCounter}
在涉及条件的操作之外使用(例如,\ifnum\value{someCounter}>0...\fi
或直接计算(例如,添加两个计数器的值))是错误的。
这是对 的误用,因为如果您使用、或,\value
问题就会消失。\the\value{someCounter}
\thesomeCounter
\arabic{someCounter}
显然,该问题不会发生在以下 MWE 中:
\documentclass{article}
\usepackage{array}
\usepackage{ragged2e}
\usepackage{arrayjobx}
\newcolumntype{Q}{>{\leavevmode\RaggedLeft\arraybackslash}p{0.75cm}}
\newcounter{someCounter}
\newarray\SingleCell
\begin{document}
\setcounter{someCounter}{1}
\SingleCell(1)={R11}
\begin{tabular}{|Q c|}
\hline
\SingleCell(1) &,\\
\hline
\end{tabular}
\bigskip
\begin{tabular}{|Q c|}
\hline
\SingleCell(\arabic{someCounter}) &,\\
\hline
\end{tabular}
\bigskip
\begin{tabular}{|Q c|}
\hline
\SingleCell(\thesomeCounter) &,\\
\hline
\end{tabular}
\bigskip
\begin{tabular}{|Q c|}
\hline
\SingleCell(\the\value{someCounter}) &,\\
\hline
\end{tabular}
\end{document}
产生