默认情况下,fancyhdr
包含一个跨越页面顶部文本宽度的标题规则分隔线。 有没有(更简单的)方法可以让主规则(或脚规则)仅跨越文本宽度的 50%?
例如,考虑这个 MWE,它(大致)按照我的要求使用表格手动添加一行,并在标题周围留出一点空间:
\documentclass[12pt]{article}
\newcommand\mytitle{Title of Document}
\usepackage{fancyhdr}
\fancyhf{}
\fancyhead[c]{\begin{tabular}{c}\hspace{1in}\textsc{\mytitle}\hspace*{1in}\\\hline\end{tabular}}
\renewcommand{\headrulewidth}{0pt}
\pagestyle{fancy}
\usepackage{blindtext}
\begin{document}
\blinddocument
\end{document}
有没有更直接的方法来实现这一点?理想的解决方案是不依赖于标题的长度,并且具有可按尺寸百分比调整的宽度\textwidth
。
结语
我最终使用了
\makeatletter
\def\headrule{\nointerlineskip\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi%
{\hfil\rule{0.5\headwidth}{\headrulewidth}} \vskip-\headrulewidth}
\makeatother
fancyhdr
以尽可能接近原来的定义。
答案1
\documentclass[12pt]{article}
\newcommand\mytitle{Title of Document}
\usepackage{fancyhdr}
\fancyhf{}
\fancyhead[c]{\textsc{\mytitle}}
\renewcommand{\headrulewidth}{4pt}
\renewcommand\headrule{\makebox[\textwidth]{\rule{0.5\headwidth}{\headrulewidth}} \vskip-\headrulewidth}
\pagestyle{fancy}
\usepackage{blindtext}
\begin{document}
\blinddocument
\end{document}
使用可选参数\rule
将线上/下移动:\rule[shift]{width}{length}
答案2
使用titlesec
而不是 来做这件事相当容易fancyhdr
:它的titleps
模块有一个\widenhead
命令,允许放大标题规则(每侧独立);负值将缩小规则。它不会增加任何垂直空间。这假设您不想在标题的左侧或右侧写东西,但我不明白为什么您会使用短规则。实际上,您仍然可以在侧面书写,但这会更棘手。
下面是一个示例,其中标题规则的宽度恰好是文本宽度的一半:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{fourier, heuristica}
\usepackage[nomarginpar]{geometry}
\newcommand\mytitle{Title of Document}
\usepackage[pagestyles]{titlesec}
\newpagestyle{mine}{%
\headrule
\widenhead{-0.25\textwidth}{-0.25\textwidth}
\sethead{}{\scshape\mytitle}{}
\setfoot{}{\thepage}{}
}
\pagestyle{mine}
\usepackage{blindtext}
\begin{document}
\blinddocument
\end{document}
您还可以使用此代码制作“老式”标题,其中水平线比标题稍大。它使用makebox
包中的功能:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{fourier,heuristica}
\usepackage{makebox}
\usepackage[nomarginpar]{geometry}
\newcommand\mytitle{Title of Document}
\usepackage[pagestyles]{titlesec}
\newpagestyle{thine}{%
\sethead{}{\rlap{\raisebox{-1ex}{\makebox*{\enspace\scshape\mytitle\enspace}{\hrulefill}}}\enspace\scshape\mytitle}{}
\setfoot{}{\thepage}{\hrulefill}
}
\pagestyle{thine}
\usepackage{blindtext}
\begin{document}
\blinddocument
\end{document}
结果:
答案3
不确定你想要什么间距,但类似
\documentclass[12pt]{article}
\newcommand\mytitle{Title of Document}
\usepackage{fancyhdr}
\fancyhf{}
\fancyhead[c]{\textsc{\mytitle}}
\renewcommand{\headrulewidth}{4pt}
\setlength\headheight{15pt}
\renewcommand\headrule{%
\nointerlineskip
\hbox to \headwidth{\hss\rule{.25\headwidth}{\headrulewidth}\hss}%
\vspace{-\headrulewidth}}
\pagestyle{fancy}
\usepackage{blindtext}
\begin{document}
\blinddocument
\end{document}