为什么 \paragraph{...} 之后的 \color{blue} 将段落标题染成蓝色?

为什么 \paragraph{...} 之后的 \color{blue} 将段落标题染成蓝色?

梅威瑟:

\documentclass{article}

\usepackage{color}

\begin{document}

\paragraph{Why am I blue?}

{\color{blue} Only I am supposed to be blue!}

\end{document}

输出(加上我的涂鸦):

在此处输入图片描述

问题:为什么\color{blue}段落\paragraph{...}标题变成蓝色了?

有一种解决方法是用 替换\paragraph{...}\paragraph{\color{black} ...}但这似乎不是理想的行为。

答案1

\paragraph设置在下一个段落的开头。下一个段落OOnly \color{blue}

修复:

  • \leavevmode在颜色改变之前明确开始段落:

    \paragraph{Why am I blue?}
    \leavevmode
    {\color{blue} Only I am supposed to be blue!}
    
  • \textcolor限制颜色设置的范围:

    \paragraph{Why am I blue?}
    \textcolor{blue}{Only I am supposed to be blue!}
    

两种情况下的更新文本结果如下:

结果

答案2

为了补充 Heiko(像往常一样)的精彩回答,再说一些关于运作方式的话\paragraph

该命令根据\@startsection一组特定的参数进行定义,其中一个参数作为给定的标题;其中一个参数告诉 LaTeX 标题应该以内联方式排版,因此标题会暂时存储起来。

它将重新插入时下列的段落开始。这允许更自由的语法:输入

\paragraph{Title} Some text

产生的结果与

\paragraph{Title}

Some text

并且添加\label\paragraph{Title}不会插入不需要的空格。

在这两种情况下,\paragraph{Title}都不会开始(文本)段落(不幸的名称冲突可能会分散注意力)。下一个段落的开始由触发(也S可以是\indent\noindent\leavevmode\hspace,本质上是 TeXbook 所称的水平命令)。

当 TeX 看到这个时S,它会备份它,插入 parskip 粘连和缩进框。之后它会插入已存储的内容,这不仅是标题,还有

  1. 删除缩进框的说明;
  2. 存储的标题,可能前面或后面是段落编号;
  3. 关于如何正确分隔标题与后续文本以及如何避免在标题行之后立即出现分页符的说明。

具体来说,标题作为当前(文本)段落的一部分插入。此后,S触发操作的 被重新插入,TeX 继续读取文本,以便稍后将其分成几行。

就你的情况而言水平命令O,它已经在 的范围内\color{blue},所以标题也是蓝色的。

一般来说,\color在开始(文本)段落之前应避免。

除了使用秘法,\leavevmode您还可以使用\indent\noindent\hspace{0pt}

\documentclass{article}
\usepackage{xcolor}

\begin{document}

\paragraph{Test}

{\color{blue}XXXX}

\paragraph{Test}

\indent{\color{blue}XXXX}

\paragraph{Test}

\noindent{\color{blue}XXXX}

\paragraph{Test}

\hspace{0pt}{\color{blue}XXXX}

\paragraph{Test}

\leavevmode{\color{blue}XXXX}

\paragraph{Test}

\textcolor{blue}{XXXX}

\end{document}

在此处输入图片描述

相关内容