为什么颜色会引起垂直偏移?

为什么颜色会引起垂直偏移?

这个 TeX 源

\documentclass[a4paper,12pt]{book}
\usepackage[usenames,dvipsnames,svgnames,table,x11names]{xcolor}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead[LO,RE]{}
\fancyhead[LE,RO]{{\large{}\color{DarkRed}\rightmark}}
\fancyfoot[C]{\thepage}
\fancyfoot[LE,RO]{\color{DarkRed}\large{}\leftmark}
\fancyfoot[LO,RE]{xxx}
\renewcommand{\headrulewidth}{0.14mm}
\renewcommand{\footrulewidth}{0.14mm}
\setlength\headheight{6mm}

\begin{document}
\markboth{A}{B}

Yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda
yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda yadda
...

\end{document}

使用 XeLaTeX 编译时,将导致以下输出:

output

如您所见,红色A与页脚的其余部分没有正确对齐。自然,我首先假设这是由于字体大小,但令人惊讶的是,改变

\fancyfoot[LE,RO]{\color{DarkRed}\large{}\leftmark}

\fancyfoot[LE,RO]{\large{}\leftmark}

不仅(自然地)给我一个黑色A,而且还给我一个正确对齐的黑色:

output

有没有什么提示说明为什么会这样?有什么解决办法吗?

答案1

fancyhdr将页脚元素放入 中\parbox[t]。开始时,您正在使用\color{...}。它不会开始新的段落,因此 的第一个顶部元素\parbox[t]是颜色 whatsit ( \special)。它与其他条目的基线对齐。A然后位于颜色 whatsit 下方。

解决方案:颜色什么的应该进入标记内容新段落的第一行,例如:

\leavevmode\color{...}...

或者更简单:\textcolor自动添加\leavevmode。它还会在文本参数周围放置一个组,因此\large可以转到那里。也\large没有参数,因此{}after\large没有任何用处。

\documentclass[12pt]{book}
\usepackage[a6paper,landscape]{geometry}% smaller image for TeX.SX
\usepackage[usenames,dvipsnames,svgnames,table,x11names]{xcolor}
\usepackage{lipsum}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead[LO,RE]{}
\fancyhead[LE,RO]{\textcolor{DarkRed}{\large\rightmark}}
\fancyfoot[C]{\thepage}
\fancyfoot[LE,RO]{\textcolor{DarkRed}{\large\leftmark}}
\fancyfoot[LO,RE]{xxx}
\renewcommand{\headrulewidth}{0.14mm}
\renewcommand{\footrulewidth}{0.14mm}
\setlength\headheight{6mm}

\begin{document}
\markboth{A}{B}

\lipsum[1-4]

\end{document}

Result

相关内容