FancyHdr 非全宽顶部规则

FancyHdr 非全宽顶部规则

默认情况下,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}

相关内容