尝试在varwidth
环境中使用颜色时,我偶然发现了来自软件包的警告varwidth
。检查问题并尝试在\parbox
环境中执行相同操作minipage
会导致以下 MWE:
\documentclass{article}
\usepackage{xcolor}
\usepackage{varwidth}
\begin{document}
\begin{tabular}{lll}
\verb|\parbox| & \verb|\minipage| & \verb|\varwidth| \\
%without color, everything works as expected.
\parbox[t]{4em}{
% \color{red}
test
}abc &
\begin{minipage}[t]{4em}
% \color{red}
test
\end{minipage}
abc &
\begin{varwidth}[t]{4em}
% \color{red}
test
\end{varwidth}
abc\\
% but using \color needs \leavevmode and breaks varwidth
\parbox[t]{4em}{
\leavevmode
\color{red}
test
}abc &
\begin{minipage}[t]{4em}
\leavevmode
\color{red}
test
\end{minipage}
abc &
% throws error (twice):
% Package varwidth Warning: Failed to reprocess entire contents on input line 45.
\begin{varwidth}[t]{4em}
\leavevmode\color{red}
test
\end{varwidth}% this is line 45
abc
\end{tabular}
\end{document}
两次产生以下警告
包 varwidth 警告:无法重新处理输入行 45 上的全部内容。
如您所见,如果插入 ,则可以在es 和s\color
中使用,但它会破坏环境并发出警告。其行为类似于不带 的。\parbox
minipage
\leavevmode
varwidth
\parbox
\leavevmode
这个问题能(轻松)解决吗?还有其他解决方法吗varwidth
?
为了澄清我想要什么:我想在varwidth
按预期工作的环境中使用颜色:放置在没有颜色的线条中。
答案1
您可以使用\textcolor
:
\begin{varwidth}[t]{4em}
\textcolor{red}{test}
\end{varwidth}
或附加组:
\begin{varwidth}[t]{4em}
\leavevmode
{\color{red}
test}
\end{varwidth}
例子:
\documentclass{article}
\usepackage{xcolor}
\usepackage{varwidth}
\begin{document}
\begin{tabular}{lll}
\verb|\parbox| & \verb|\minipage| & \verb|\varwidth| \\
\parbox[t]{4em}{
test
}abc &
\begin{minipage}[t]{4em}
test
\end{minipage}
abc &
\begin{varwidth}[t]{4em}
test
\end{varwidth}
abc\\
\parbox[t]{4em}{
\textcolor{red}{test}
}abc &
\begin{minipage}[t]{4em}
\textcolor{red}{test}
\end{minipage}
abc &
\begin{varwidth}[t]{4em}
\textcolor{red}{test}
\end{varwidth}
abc
\\
\parbox[t]{4em}{
\leavevmode
\color{red}
test
}abc &
\begin{minipage}[t]{4em}
\leavevmode
\color{red}
test
\end{minipage}
abc &
\begin{varwidth}[t]{4em}
\leavevmode
{\color{red}
test}
\end{varwidth}
abc
\end{tabular}
\end{document}
结果:
答案2
以minipage
或开头总是会产生在顶部产生空白行的副作用。您可以使用以下方法解决问题\parbox
\color
\begin{minipage}[t]{4em}
\leavevmode\color{red}% <--- don't forget
test
\end{minipage}
然而,这对 不起作用varwidth
。你可以改为开始着色外部环境varwidth
:
\documentclass{article}
\usepackage{xcolor}
\usepackage{varwidth}
\newenvironment{colorvarwidth}[1]
{\leavevmode\color{#1}\varwidth}
{\endvarwidth}
\begin{document}
\begin{tabular}{lll}
\verb|\parbox| & \verb|\minipage| & \verb|\varwidth| \\
%without color, everything works as expected.
\parbox[t]{4em}{
\leavevmode\color{red}%
test
}abc &
\begin{minipage}[t]{4em}
\leavevmode\color{red}%
test
\end{minipage}
abc &
\begin{colorvarwidth}{red}[t]{4em}
test
\end{colorvarwidth}
abc
\end{tabular}
\end{document}