如何在每个页面的正文底部应用 hrule

如何在每个页面的正文底部应用 hrule

\textwidth我正在制作双面文章布局,其中脚注由上下两行包围,在没有脚注的页面上,一条 h 线横跨\textwidth正文底部。但页脚本身应该\textwidth横跨\marginparwidth

我尝试过花式高清在页脚和文本主体之间的边界上创建一条线,但在偶数页上,页脚规则挂在错误的一侧:

偶数页上的小尺子挂在反面

在奇数页上它看起来应该像这样:

在此处输入图片描述

以下是 MWE:

\documentclass[a4paper,12pt,
twoside,%
]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{geometry}
\geometry{%
    inner=2cm,
    outer=4cm,
    top=2.5cm,
    bottom=2.5cm,
    marginparwidth=3cm,
}
\setlength\parindent{0pt}
\usepackage{fancyhdr}

\pagestyle{fancy}
\fancyhf{}
\fancyfoot[EL,OR]{\textbf{\thepage}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0.5pt}
\addtolength{\headwidth}{\marginparwidth}
\renewcommand\footrule{\hrule width\textwidth}
\fancypagestyle{plain}{}

\usepackage[%
hang,%
%marginal,%
bottom%
]{footmisc}
\setlength{\footnotemargin}{0.5cm} %Abstand zwischen textkörper und FN bei hang-option
%\setlength{\footnotesep}{0.35cm} %Abstand zwischen FN
\setlength{\skip\footins}{0,5cm} %Abstand zwischen FN-Nummer und FN-Text
\renewcommand{\footnoterule}{\rule{\textwidth}{0.5pt}{\vspace*{2mm}}}

\usepackage{blindtext}

\begin{document}
    \blindtext[3]\footnote{text}
    \blindtext[3]\footnote{text}
    \blindtext[4]
\end{document}

重要部分布局通常是页面上文本主体底部的水平规则 没有脚注。

我想一些更专业的 TeX 用户可以提供解决方案。

编辑:

如果有人有另一种解决方案花式高清,我也很高兴。只要它看起来像第二张图片,并提供一个跨越文本宽度的页脚marginparwidth(显示页码的位置)。

2. 编辑:

不幸的是,我用来设置 Latex 布局样式的测试页面每页都有脚注。但是布局要求在没有脚注的页面上,文本主体底部也有一个 hrule。因此,@cabohah 的出色解决方案不符合我的需求,因为只有在调用脚注命令时才会出现较低的规则。抱歉造成混淆。是否有可能放置hrule每一页正文的底部,无论是否有脚注?还根据这一要求更新了上面的初始问题。

谢谢!祝一切顺利!

答案1

您不需要尝试将脚注下方的规则添加到页脚,而是可以修补脚注的输出:

\documentclass[a4paper,12pt,twoside,]{article}
\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}% not needed with LaTeX 2018/04/01 or newer

\usepackage{geometry}
\geometry{%
    inner=2cm,
    outer=4cm,
    top=2.5cm,
    bottom=2.5cm,
    marginparwidth=3cm,
}
\usepackage{parskip}

\usepackage{fancyhdr}

\pagestyle{fancy}
\fancyhf{}
\fancyfoot[EL,OR]{\textbf{\thepage}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\addtolength{\headwidth}{\marginparwidth}
\fancypagestyle{plain}{}

\usepackage[hang,bottom]{footmisc}
\setlength{\footnotemargin}{0.5cm} %Abstand zwischen textkörper und FN bei hang-option
%\setlength{\footnotesep}{0.35cm} %Abstand zwischen FN
\setlength{\skip\footins}{0,5cm} %Abstand zwischen FN-Nummer und FN-Text

\makeatletter
\renewcommand\footnoterule{\kern-3\p@
  \hrule \@width \textwidth \kern 2.6\p@} % the \hrule is .4pt high and now it has the width of the text area
\makeatother

\usepackage{xpatch}
% NOTE: The following code depends on usage of package footmisc!
\makeatletter
\xpatchcmd{\@outputbox@appendfootnotes}{%
  \unvbox \footins
}{%
  \unvbox \footins
  \secondfootnoterule
}{}{\PAtchFailure}
\newcommand*{\secondfootnoterule}{\hrule \@width \textwidth \kern -0.4\p@}
\makeatother

\usepackage{blindtext}

\begin{document}
    \blindtext[3]\footnote{text}
    \blindtext[3]\footnote{text}
    \blindtext[4]
\end{document}

在此处输入图片描述

对于那些不使用的人,这里有一个类似的解决方案footmisc

\documentclass[a4paper,12pt,twoside,]{article}
\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}% not needed with LaTeX 2018/04/01 or newer

\usepackage{geometry}
\geometry{%
    inner=2cm,
    outer=4cm,
    top=2.5cm,
    bottom=2.5cm,
    marginparwidth=3cm,
}
\usepackage{parskip}

\usepackage{fancyhdr}

\pagestyle{fancy}
\fancyhf{}
\fancyfoot[EL,OR]{\textbf{\thepage}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\addtolength{\headwidth}{\marginparwidth}
\fancypagestyle{plain}{}

\usepackage{xpatch}
% NOTE: The following code depends on NOT using package footmisc!
\makeatletter
\xpatchcmd{\@makecol}{%
  \unvbox \footins
}{%
  \unvbox \footins
  \secondfootnoterule
}{}{\PAtchFailure}
\renewcommand\footnoterule{\kern-3\p@\hrule \@width \textwidth \kern 2.6\p@} % the \hrule is .4pt high and has the width of the text area
\newcommand*{\secondfootnoterule}{\hrule \@width \textwidth \kern -0.4\p@}
\makeatother

\usepackage{blindtext}

\begin{document}
    \blindtext[3]\footnote{text}
    \blindtext[3]\footnote{text}
    \blindtext[4]
\end{document}

在此处输入图片描述


由于问题改变而进行编辑,变成了一个完全不同的问题

如果您只是要求在页脚上方添加一条分隔线,该分隔线应仅跨越文本区域的宽度,尽管页码应与列的外边缘对齐\marginpar,最简单的解决方案是使用包scrlayer-scrpage。它不仅可以设置与页脚宽度无关的行长,还可以将所有分隔线对齐为居中、内对齐或外对齐。所以

\documentclass[a4paper,12pt,twoside]{article}
\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}% not needed with LaTeX 2018/04/01 or newer

\usepackage{geometry}
\geometry{%
    inner=2cm,
    outer=4cm,
    top=2.5cm,
    bottom=2.5cm,
    marginparwidth=3cm,
}
\usepackage{parskip}

\usepackage[footwidth=textwithmarginpar,footsepline=0.4pt:text,ilines]{scrlayer-scrpage}
\clearpairofpagestyles
\ofoot*{\pagemark}

\usepackage{blindtext}

\begin{document}
\blinddocument
\end{document}

足以获得:

使用 scrlayer-scrpage

如果您想要粗体页码,可以使用\addtokomafont{pagefoot}{\bfseries}

如果由于某种原因您无法使用scrlayer-scrpage,则不扩展\headwidth而是将分页移至外边距将是一个建议,而无需重新定义\footrule

\documentclass[a4paper,12pt,twoside,]{article}
\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}% not needed with LaTeX 2018/04/01 or newer

\usepackage{geometry}
\geometry{%
    inner=2cm,
    outer=4cm,
    top=2.5cm,
    bottom=2.5cm,
    marginparwidth=3cm,
}
\usepackage{parskip}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyfoot[EL]{\makebox[0pt][r]{\makebox[\dimexpr\marginparwidth+\marginparsep\relax][l]{\textbf{\thepage}}}}
\fancyfoot[OR]{\makebox[0pt][l]{\makebox[\dimexpr\marginparwidth+\marginparsep\relax][r]{\textbf{\thepage}}}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0.4pt}
\fancypagestyle{plain}{}

\usepackage{blindtext}

\begin{document}
\Blinddocument
\end{document}

使用 fancyhdr

相关内容