我正在使用该pbox
包的命令来测量包含明确换行符的文本的排版宽度(这是标准 LaTeX不起作用\settominwidth
的情况)。settowidth
在以下 MWE 中,我添加了一个括号组来本地化颜色开关 ( ) 的效果\color{red}
。当将该命令传递给 时,添加括号组会导致错误\settominwidth
:Missing } inserted.
我想知道添加括号组有什么不合理之处。(请注意,在 中,没有添加括号组的颜色切换\textA
不会引起投诉。)
我也很好奇为什么报告的宽度比大约\settominwidth
大 2pt ,但这不是解决方案的强制性部分。\widthB
\widthA
我意识到,在这个有限的 MWE 中,我可以通过使用来避免这个问题\textcolor{red}{someText}
,但是这个 MWE 是从更大的上下文中抽象出来的,在这个上下文中最好使用 switch。
Stack Exchange 建议将其作为“类似问题”:“为什么不能在 \if… \fi 组中使用括号?“。也许这是关键,但我对此了解得还不够\settominwidth
。
\documentclass{article}
\usepackage{pbox}
\usepackage{xcolor}
\setlength{\parindent}{0pt}
\newlength{\widthA}
\newlength{\widthB}
\newcommand{\textA}{\color{blue} One \\ Two}
\newcommand{\textB}{{\color{red} One \\ Two}}
\settominwidth{\widthA}{\textA}
\settominwidth{\widthB}{\textB}
\begin{document}
\texttt{\textbackslash{}widthA}: \the\widthA\\
\texttt{\textbackslash{}widthB}: \the\widthB
\textA
\textB
After text
\end{document}
答案1
\settominwidth
在内部使用表格。这意味着你正在做
\begin{tabular}{@{}l@{}}
{\color{red} One \\ Two}
\end{tabular}
由于细胞是群体,所以这不起作用。