
In meinem aktuellen Projekt möchte ich Arbeitsblätter erstellen, die ich ausdrucken und verteilen kann. Dazu möchte ich die Seitenzahl für jedes Arbeitsblatt zurücksetzen, die Seitenzahl aber nur anzeigen, wenn das Arbeitsblatt mehr als eine Seite hat (also zum Beispiel eine Rückseite hat). Wenn das Arbeitsblatt nur eine Seite hat, soll die Seitenzahl ausgeblendet werden, damit nicht unnötige Verwirrung entsteht, wo Seite 2 usw. ist. Kann ich das mit machen fancyhdr
?
Hier ist MWE. Jedes Arbeitsblatt beginnt mit einem eigenen Abschnitt. Beachten Sie, dass ich LuaLaTeX verwende.
\documentclass[a4paper, twoside, 12pt]{extarticle}
\usepackage{graphicx}
\usepackage[left=2.5cm,right=2.5cm,top=3cm,bottom=4cm,headheight=0mm, footskip=10mm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[dvipsnames]{xcolor}
\usepackage{fancyhdr}
\fancyhead{}
\fancyhead[RO,RE]{Bla}
\fancyhead[LO,LE]{Bla}
\fancyfoot{}
\fancyfoot[LE,RO]{}
\fancyfoot[LO,CE]{}
\fancyfoot[CO,CE]{\thepage}
\renewcommand{\headrulewidth}{0pt}
\pagestyle{fancy}
\renewcommand{\thesection}{\arabic{section}.}
\makeatletter
\renewcommand*{\@seccntformat}[1]{\csname the#1\endcsname\hspace{0.25cm}}
\makeatother
\definecolor{mainblue}{rgb}{0.0, 0.28, 0.67}
\usepackage[math-style=ISO, bold-style=ISO]{unicode-math}
\setmathfont{Garamond-Math.otf}[StylisticSet={7,9}]
\setlength{\parindent}{0em}
\setlength{\parskip}{0.25\baselineskip}
\usepackage{titlesec}
\titleformat*{\section}{\LARGE\bfseries\sffamily\color{mainblue}\centering}
\usepackage{fontspec}
\setmainfont{EB Garamond}
\defaultfontfeatures{Scale=MatchUppercase}
\setsansfont{Quattrocento Sans}
\newcommand{\head}[1]{%
\clearpage
\noindent
\vspace*{0.3cm}
\section{#1}
\vspace*{0.3cm}
\setcounter{page}{1}
}
\begin{document}
\head{Only one page}
Please hide page number below.
\head{Two pages}
First page. Please don't hide page number below.
\clearpage
Second page
\end{document}
Ich weiß, dass ich das manuell machen kann, indem ich einen neuen Seitenstil definiere, aber das wäre mir zu mühsam. Ich habe bereits viele Arbeitsblätter erstellt, die ich in einem Projekt zusammenführen möchte, und es würde viel Zeit in Anspruch nehmen, zu prüfen, ob sie alle auf eine Seite passen. Hat jemand eine Idee, was ich tun könnte?
Antwort1
Wird verwendet \label
, um die Seitenzahl direkt nach der Ausgabe zu speichern. \clearpage
Beim nächsten Durchlauf ist die Prüfung, ob die Seitenzahl 1 ist, erfolgreich und \thepage
wird übersprungen.
Ich habe headheight
das behobenkann nichtauf Null gesetzt werden, wenn Sie Header möchten. fontenc
Sollte auch nicht zusammen mit geladen werden fontspec
. Ich habe die Präambel neu organisiert, um zuerst Pakete zu laden und dann die Einstellungen vorzunehmen.
Verwenden Sie \titlespacing
lieber als \vspace
herum \section
.
\documentclass[a4paper, twoside, 12pt]{article}
\usepackage{graphicx}
\usepackage[
left=2.5cm,
right=2.5cm,
top=3cm,
bottom=4cm,
headheight=14.5pt,% <-- as recommended by fancyhdr
footskip=10mm
]{geometry}
%\usepackage[T1]{fontenc}% NOT with fontspec
\usepackage[dvipsnames]{xcolor}
\usepackage{refcount}
\usepackage{fancyhdr}
\usepackage{titlesec}
\usepackage{fontspec}
\usepackage[math-style=ISO, bold-style=ISO]{unicode-math}
%%% fancyhdr
\fancyhead{}
\fancyhead[RO,RE]{Bla}
\fancyhead[LO,LE]{Bla}
\fancyfoot{}
\fancyfoot[LE,RO]{}
\fancyfoot[LO,CE]{}
\fancyfoot[CO,CE]{\maybethepage}
\renewcommand{\headrulewidth}{0pt}
\pagestyle{fancy}
%%% colors
\definecolor{mainblue}{rgb}{0.0, 0.28, 0.67}
%%% fontspec and unicode-math
\setmathfont{Garamond-Math.otf}[StylisticSet={7,9}]
\setmainfont{EB Garamond}
\defaultfontfeatures{Scale=MatchUppercase}
\setsansfont{Quattrocento Sans}
%%% generic
\makeatletter
\renewcommand*{\@seccntformat}[1]{\csname the#1\endcsname\hspace{0.25cm}}
\makeatother
\renewcommand{\thesection}{\arabic{section}.}
\setlength{\parindent}{0em}
\setlength{\parskip}{0.25\baselineskip}
%%% titlesec
\titleformat*{\section}{\LARGE\bfseries\sffamily\color{mainblue}\centering}
%%% personal commands
\makeatletter
\newcommand{\head}[1]{%
\label{NPAGES\arabic{section}}%
\clearpage
\setcounter{page}{1}%
\section{#1}
}
\AtEndDocument{%
\label{NPAGES\arabic{section}}%
}
\newcommand{\maybethepage}{%
\ifnum\getpagerefnumber{NPAGES\arabic{section}}=1
\else
\thepage
\fi
}
\makeatother
\begin{document}
\head{Only one page}
Please hide page number below.
\head{Two pages}
First page. Please don't hide page number below.
\clearpage
Second page
\end{document}
Antwort2
Da Ihre \section
s auf einer neuen Seite festgelegt/gestartet werden, können Sie die Seitenzahl in der Fußzeile als Bedingung verwenden, da diese beim Versand der Seiten festgelegt wird. Daher würde ich aktualisieren, \head
um die (letzte) Seitenzahl des aktuellen Abschnitts zu erfassen:
\newcommand{\head}[1]{%
\label{last-page-for-\thesection}% Store last page of current section
\clearpage
\vspace*{0.3cm}
\section{#1}
\vspace*{0.3cm}
\setcounter{page}{1}%
}
Erfassen Sie auch die \section
letzte Seitenzahl des Finales:
\AtEndDocument{\label{last-page-for-\thesection}}% Capture last page of final section
Und dann Bedingung für die Seitenzahleinstellung mitrefcount
:
\usepackage{refcount}
% Condition on placing footer page number; if \section has more than 1 page
\fancyfoot[CO,CE]{\ifnum\getpagerefnumber{last-page-for-\thesection}>1 \thepage\fi}
Hier ist ein vollständiges, minimales Beispiel:
\documentclass[twoside]{extarticle}
\usepackage[dvipsnames]{xcolor}
\usepackage{fancyhdr}
\fancyhf{}% Clear header/footer
\fancyhead[RO,RE]{Right header}
\fancyhead[LO,LE]{Left header}
% Condition on placing footer page number; if \section has more than 1 page
\fancyfoot[CO,CE]{\ifnum\getpagerefnumber{last-page-for-\thesection}>1 \thepage\fi}
\renewcommand{\headrulewidth}{0pt}% Remove page header rule
\pagestyle{fancy}
\makeatletter
\renewcommand*{\@seccntformat}[1]{\csname the#1\endcsname.\hspace{0.25cm}}
\makeatother
\definecolor{mainblue}{rgb}{0.0, 0.28, 0.67}
\usepackage{titlesec}
\titleformat*{\section}{\LARGE\bfseries\sffamily\color{mainblue}\centering}
\usepackage{refcount}
\AtEndDocument{\label{last-page-for-\thesection}}% Capture last page of final section
\newcommand{\head}[1]{%
\label{last-page-for-\thesection}% Store last page of current section
\clearpage
\vspace*{0.3cm}
\section{#1}
\vspace*{0.3cm}
\setcounter{page}{1}%
}
\begin{document}
\head{Only one page}
Please hide page number below.
\head{Two pages}
First page. Please don't hide page number below.
\clearpage
Second page
\end{document}