部分文本与正文颜色相同的问题

部分文本与正文颜色相同的问题

我试图理解这样一种行为,即章节标题采用章节中第一个单词的颜色。

这是我的 MWE:

\documentclass{minimal}    
\usepackage{xcolor}    
\makeatletter
\newcommand\section{\@startsection{section}{1}{.25in}%
                                    {1.3ex \@plus .5ex \@minus .2ex}%
                                    {-.5em \@plus -.1em}%
                  {\reset@font\normalsize\bfseries}}
\makeatother    
\begin{document}
\section{First}
{\color{red} Hello there} More text
\end{document}

期望的结果是“Hello there”为红色,而其余文本(包括“First”)为黑色。但是,“First”是红色的。如果在“{\color”之前插入一个单词,则会发生期望的行为。这是怎么回事?答案一定是我不知道的一些关于乳胶的基本事实。

提前谢谢了。

答案1

首先,我们假设这个问题与 的定义无关\section。因此问题不在这里,而在于使用\color{red}... 而不是\textcolor{red}{...}

以下是复制该问题的 MWE

\documentclass{article}    
\usepackage{color}    

\begin{document}
\paragraph{Foo}
{\color{red}Bar} bla bla
\end{document}

为什么?

当的第五个参数\@startsection为负数时,标题将添加到命令后面的文本段落的前面\everypar。该命令\everypar以水平模式执行,即当 TeX 看到 Hello 中的字符 H 时,但此时已经太晚了,颜色变化已经完成。这是另一个例子

\documentclass{article}    
\usepackage{color}    

\begin{document}
\everypar{Foo \everypar{}}
{\color{red}\ifvmode\hrule\vskip1cm\fi Bar} bla bla
\end{document}

解决方案是使用\textcolor{red}{...}\leavevmode{\color{red}...}

相关内容