我正在尝试使用文档中“真正的‘装饰线’”示例的稍微改编的版本fancyhdr
(第 17 页,底部) 在双栏书籍文档中。但是,直接从 pdf 来看,该线仅跨越一栏。因此,我尝试了以下方法来实现所需的效果,即一条线跨越整个页面宽度:
\documentclass[twocolumn]{book}
\usepackage{lipsum}
\usepackage[top=3cm,bottom=3cm,left=2cm,right=2cm]{geometry}
\usepackage{fancyhdr}
\fancyhead{}
\fancyhead[RO]{Text1}
\fancyhead[LE]{Text2}
\renewcommand\headrule{%
\onecolumn%
\vspace{-2\baselineskip}%
\vspace{1.3mm}%
\hrulefill%
\raisebox{-2.1pt}{\fbox{OK}}%
\hrulefill%
\twocolumn%
}
\pagestyle{fancy}
\begin{document}
\lipsum[1-16]
\end{document}
这看起来还不错,尽管我对 s 的摆弄不太满意\vspace
。但更糟糕的是,它只在第一页看起来符合预期。在随后的所有页面中,行和文本之间的空白太多了。
以下是“常规”行(通过注释掉\renewcommand
上例中的部分实现)与我获得的第 2 页结果的比较。
常规线路:
我的装饰线:
请注意,第二张图片中“OK”周围框底线与文本之间的空间比第一个示例中线与文本之间的空间更大。
显然,在命令\vspace
后添加更多调整\twocolumn
不会给我带来任何好处,因为目前看起来不错的第一页就会变得混乱。
对于双栏书籍文档,是否有更好的方法来获得覆盖整个页面的装饰线?如果没有,是否有办法调整我目前的代码以实现所需的结果?
答案1
我不会重新定义\headrule
。
\documentclass[twocolumn]{book}
\usepackage{lipsum}
\usepackage[top=3cm,bottom=3cm,left=2cm,right=2cm]{geometry}
\usepackage{fancyhdr}
\newcommand{\decoration}[1]{%
\raisebox{\dimexpr-\dp\strutbox-1pt}[0pt][0pt]{%
\makebox[0pt][#1]{%
\makebox[\textwidth][s]{%
\hrulefill\raisebox{-2.1pt}{\fbox{OK}}\hrulefill
}%
}%
}%
}
\fancyhead{}
\fancyhead[RO]{Text1\decoration{r}}
\fancyhead[LE]{\decoration{l}Text2}
\renewcommand{\headrulewidth}{0pt}
\pagestyle{fancy}
\begin{document}
\lipsum[1-16]
\end{document}