自动删除单页文档中的页码

自动删除单页文档中的页码

我发现 LaTeX 在单页文档中添加页码的做法在风格上很奇怪,所以我想禁止这种行为。我以前这样做过手动,但最好不需要自己跟踪文档的长度。

问题已提出,但 OP 首选的解决方案是\maketitle,这与我无关。接受的回答创建一个需要在之后进行的宏\begin{doucument},但最好将一些内容放在我的序言或.sty文件中,这样我就不需要记住在编写的每个文档中都放入一些自定义宏。

梅威瑟:

\documentclass{article}
\usepackage{lipsum,fancyhdr}
    \pagestyle{fancy}
    \fancyhead[C]{Don't ever remove this header}
\begin{document}
\lipsum[1] % automatically remove page number in a document with this line
\lipsum[1-6] % automatically keep page numbers in a document with this line
\end{document}

答案1

有一些包可以或多或少地计算页数(,,,totpages... )。示例使用包:count1tolastpagezref-totpages

\documentclass{article}

\usepackage{zref-totpages}

\usepackage{lipsum,fancyhdr}
\pagestyle{fancy}
\fancyhead[C]{Don't ever remove this header}
\fancyfoot[C]{%
  \ifnum\ztotpages=1 \else\thepage\fi
}

\begin{document}
\lipsum[1] % automatically remove page number in a document with this line
%\lipsum[1-6] % automatically keep page numbers in a document with this line
\end{document}

需要运行两次 LaTeX,因为当时,当第一页发出时,通常不知道接下来会有多少页。

\ztotpages当文件中没有记录zref标签时,第一次运行 LaTeX 时为零。LastPage.aux

答案2

如果我理解正确的话,您想要删除第一页的页码,但保留页眉。这可以通过定义与默认样式相同fancy但没有页码的自定义 fancyhdr 样式来实现,并且仅将其用于第一页。完整的 MWE:

\documentclass{article}
\usepackage{lipsum,fancyhdr}
    \pagestyle{fancy}
    \fancyhead[C]{Don't ever remove this header}
\fancypagestyle{mystyle}{
    \fancyhf{}
    \fancyhead[C]{Don't ever remove this header}
    \fancyfoot[C]{}
}
\begin{document}
\thispagestyle{mystyle}
\lipsum[1] % automatically remove page number in a document with this line
\pagestyle{fancy}
\lipsum[1-6] % automatically keep page numbers in a document with this line
\end{document}

lastpage成功了!使用和使自动化部分工作正常ifthen。简而言之,它检查文档长度(由 确定lastpage)是否超过 1 页。如果文档为 1 页,则mystyle在有页码的地方使用该样式。但是,如果文档长度超过 1 页,则第一页使用该样式mystyle,而后面的页面将使用该fancy样式。

\documentclass{article}
\usepackage{lipsum,fancyhdr,ifthen,lastpage}
\pagestyle{fancy}
\fancyhead[C]{Don't ever remove this header}
\fancypagestyle{mystyle}{
    \fancyhf{}
    \fancyhead[C]{Don't ever remove this header}
    \fancyfoot[C]{}
}
\begin{document}
\ifthenelse{\pageref{LastPage}=1}
{
    \pagestyle{mystyle}
}
{
    \thispagestyle{mystyle}
}
\lipsum[1] % automatically remove page number in a document with this line
\lipsum[1-6] % automatically keep page numbers in a document with this line
\end{document}

现在唯一的问题是它不能在序言中使用......

答案3

带包的示例lastpage

\documentclass{article}
\usepackage{lastpage}
\usepackage{refcount}
\usepackage{etoolbox}
\usepackage{lipsum,fancyhdr}
\pagestyle{fancy}
\fancyhead[C]{Don't ever remove this header}
\begin{document}
\ifnumcomp{\getpagerefnumber{LastPage}}{>}{2}{}{\fancyfoot{}} 
 % If document is longer than 2 pages there will be page numeration, if not there will     not be.
\lipsum[1] % automatically remove page number in a document with this line
\end{document}

答案4

晚上好,我们可以测试文档末尾的页码。如果只有一页,它将清除中间的页脚,否则它会继续而不更改默认值,页码保持不变。

\documentclass{article}
\usepackage{lipsum,fancyhdr}
\pagestyle{fancy}
\fancyhead[C]{Don't ever remove this header}
\begin{document}
\lipsum[1]
%\lipsum[1-6] % Turn on/off this line...
\ifnum\thepage=1\fancyfoot[C]{}\fi
\end{document}

相关内容