如何将页码放置在任意位置(例如,真正位于最右下角)

如何将页码放置在任意位置(例如,真正位于最右下角)

关于如何放置页码存在一些问题和答案(我引用)“在右下角”但不同的人似乎对此有不同的(和多个)定义角落

我想把页码放在最右下角,可理解为尽可能靠右和靠下(仍然清晰可见)

这只是一个有点有趣的练习,但出于严肃的目的,我当然不想将页码全部放在那里。

出于严肃的目的,我正在寻找如何将页码放在任意位置(或应用,几乎在最右下角)。这需要回答两个部分:

  • 如何转移垂直的组件:这看起来很容易(就我所知的目的而言)使用\geometry{footskip=...pt}
  • 如何转移水平的组件:这可以(在某种程度上)用\usepackage{geometry}&完成\hoffset=50pt...但还不够 -> 它还会将页面上的所有内容移到右侧。具体来说,我正在寻找解决此问题的方法(除非您这些好学的人知道一个解决方案,您当然不想使用它\hoffset)。

这里有一个动物西工作(更确切地说:不工作)示例:

\documentclass{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage{fancyhdr}
\usepackage{lipsum} % only for showing some sample text
\fancyhf{} % clear all header and footers
\renewcommand{\headrulewidth}{0pt} % remove the header rule
\rfoot{\thepage}
\pagestyle{fancy}

\hoffset=50pt
\geometry{footskip=50pt}

\begin{document}
\lipsum
\end{document}

看到所有东西都向右移动了 50pt 吗?不太理想!

答案1

这是使用包的建议scrlayer-scrpage而是fancyhdr。然后您可以定义一个新图层并将该新图层添加到现有的页面样式中。

\documentclass{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage{lipsum} % only for showing some sample text

\usepackage{scrlayer-scrpage}% sets pagestyle scrheadings automatically
\clearpairofpagestyles% clear all headers and footers
\DeclareNewLayer[
  foreground,
  align=br,
  hoffset=\paperwidth,
  voffset=\paperheight+\dp\strutbox,
  contents={\vfill\hfill\pagemark}
]{pagenumberbottomright}

\AddLayersToPageStyle{scrheadings}{pagenumberbottomright}
\begin{document}
\lipsum\lipsum
\end{document}

在此处输入图片描述

如果也可以只加载scrlayer并定义新的图层页面样式。

\documentclass{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage{lipsum} % only for showing some sample text

\usepackage{scrlayer}
\DeclareNewLayer[
  foreground,
  align=br,
  hoffset=\paperwidth,
  voffset=\paperheight+\dp\strutbox,
  contents={\vfill\hfill\pagemark}
]{pagenumberbottomright}
\DeclareNewPageStyleByLayers{pnbr}{pagenumberbottomright}
\pagestyle{pnbr}

\begin{document}
\lipsum\lipsum
\end{document}

结果和上面一样。


更新

您可以将图层添加到不同的页面样式。如果页码也应位于plain具有章节和部分页面所用样式的页面上,则可以使用

\documentclass{report}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage{blindtext} % only for showing some sample text

\usepackage{scrlayer-scrpage}% sets pagestyle scrheadings automatically
\clearpairofpagestyles% clear all headers and footers
\DeclareNewLayer[
  foreground,
  align=br,
  hoffset=\paperwidth,
  voffset=\paperheight+\dp\strutbox,
  contents={\vfill\hfill\pagemark}
]{pagenumberbottomright}

\AddLayersToPageStyle{scrheadings}{pagenumberbottomright}
\AddLayersToPageStyle{plain}{pagenumberbottomright}

\begin{document}
\part{A part}
\blinddocument
\end{document}

如果页码确实应该出现在每一页上(包括使用页面样式的页面),empty则将图层添加到页面样式中@everystyle@

\documentclass{report}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage{blindtext} % only for showing some sample text

\usepackage{scrlayer-scrpage}% sets pagestyle scrheadings automatically
\clearpairofpagestyles% clear all headers and footers
\DeclareNewLayer[
  foreground,
  align=br,
  hoffset=\paperwidth,
  voffset=\paperheight+\dp\strutbox,
  contents={\vfill\hfill\pagemark}
]{pagenumberbottomright}

\AddLayersToPageStyle{@everystyle@}{pagenumberbottomright}

\begin{document}
\part{A part}
\blinddocument
\clearpage
\pagestyle{empty}
\Blindtext
\end{document}

请注意,如果您只加载scrlayer(而不是scrlayer-scrpage),则必须将其声明plain为图层页面样式。

\documentclass{report}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage{blindtext} % only for showing some sample text

\usepackage{scrlayer}
\DeclareNewLayer[
  foreground,
  align=br,
  hoffset=\paperwidth,
  voffset=\paperheight+\dp\strutbox,
  contents={\vfill\hfill\pagemark}
]{pagenumberbottomright}
\DeclareNewPageStyleByLayers{pnbr}{pagenumberbottomright}
\DeclarePageStyleByLayers{plain}{pagenumberbottomright}
\pagestyle{pnbr}

%\AddLayersToPageStyle{@everystyle@}{pagenumberbottomright}

\begin{document}
\part{A part}
\blinddocument
\clearpage
\pagestyle{empty}
\Blindtext
\end{document}

答案2

蒂克兹包可用于将页码放置在任意位置。您还需要该background包来设置新背景。以下是示例:

\documentclass[a4paper]{article}
\usepackage[margin=2cm]{geometry}
\usepackage{tikz,background}
\usepackage{fancyhdr}
\usepackage{lipsum} % only for showing some sample text

\fancyhf{} % clear all header and footers
\renewcommand{\headrulewidth}{0pt} % remove the header rule
\pagestyle{fancy}

\backgroundsetup{%
contents={%
  \begin{tikzpicture}[overlay,opacity=100]
    \node[text=black] at ([shift={(-1em,1em)}]current page.south east){\thepage};
  \end{tikzpicture}
  },
  scale=1,
  angle=0
}

\begin{document}
\lipsum[1-10]
\end{document}

由此得出:

在此处输入图片描述

相关内容