Seitenzahl in einseitigen Dokumenten automatisch entfernen

Seitenzahl in einseitigen Dokumenten automatisch entfernen

Ich finde die Entscheidung von LaTeX, eine Seitenzahl in einseitige Dokumente einzufügen, stilistisch seltsam, daher möchte ich dieses Verhalten unterdrücken. Ich habe dies zuvor getanmanuell, aber es wäre besser, wenn ich nicht selbst den Überblick über die Länge des Dokuments behalten müsste.

Die Frage wurde gestelltVor, aber die vom OP bevorzugte Lösung beinhaltet das Spielen mit \maketitle, was für mich hier keine Relevanz hat. Die akzeptierteAntworterstellt ein Makro, das danach ausgeführt werden muss \begin{doucument}, aber es wäre besser, etwas zu haben, das ich in meine Präambel oder .styDatei einfügen kann, sodass ich nicht daran denken muss, in jedes Dokument, das ich schreibe, immer ein benutzerdefiniertes Makro einzufügen.

MWE:

\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}

Antwort1

Es gibt einige Pakete, die die Anzahl der Seiten mehr oder weniger zählen können ( totpages, count1to, lastpage, ...). Das Beispiel verwendet das Paket zref-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}

Es sind zwei LaTeX-Durchläufe notwendig, da zum Zeitpunkt der Auslieferung der ersten Seite in der Regel noch nicht bekannt ist, wie viele Seiten noch folgen werden.

\ztotpagesist beim ersten LaTeX-Durchlauf Null, wenn das zrefLabel LastPageja nicht in der .auxDatei festgehalten ist.

Antwort2

Wenn ich Sie richtig verstehe, möchten Sie die Seitenzahl auf der ersten Seite entfernen, aber die Kopfzeile beibehalten. Dies können Sie erreichen, indem Sie einen benutzerdefinierten Fancyhdr-Stil definieren, der mit dem Standard identisch ist, fancyaber keine Seitennummerierung aufweist, und diesen nur für die erste Seite verwenden. Vollständiges 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}

Sieg! Der Automatisierungsteil funktioniert mit lastpageund ifthen. Kurz gesagt, es wird geprüft, ob die Dokumentlänge (wie durch bestimmt lastpage) mehr als 1 Seite beträgt. Wenn das Dokument 1 Seite lang ist, mystylewird der Stil verwendet, wenn Seitennummern vorhanden sind. Wenn das Dokument jedoch länger als 1 Seite ist, wird auf der ersten Seite mystyleder Stil verwendet und auf den folgenden Seiten 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}

Das Einzige, was jetzt fehlt, ist, dass es in einer Präambel verwendet werden kann ...

Antwort3

Das Beispiel mit lastpagePaket:

\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}

Antwort4

Guten Abend, wir können die Seitenzahl am Ende des Dokuments testen. Wenn es nur eine Seite gibt, wird die Fußzeile in der Mitte gelöscht, andernfalls wird ohne Änderung der Standardwerte fortgefahren und die Seitenzahl bleibt unverändert.

\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}

verwandte Informationen