aktuelle Seitenzahl zur Nummerierung nutzen

Klassen und Pakete zur einfachen Umsetzung individueller Vorstellungen


milo hirsch
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Mo 2. Jan 2017, 13:19

Beitrag von milo hirsch »

Hi,

ich habe versucht deine Vorlage für equations auf figure und table anzupassen.
\documentclass[a4paper,twoside,10pt]{report}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage{lmodern} %Type1-Schriftart für nicht-englische Texte
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{perpage}
\MakeSortedPerPage{equation}
\MakeSortedPerPage{figure}
\MakeSortedPerPage{table}


% for equation
\makeatletter
\renewcommand\theequation{\theperpage
  \expandafter\ifx\csname pp@max@equation@\theabspage\endcsname\relax
  \else \expandafter\ifnum\csname pp@max@equation@\theabspage\endcsname>\z@ 
      .\alph{equation}%
  \fi\fi}%
	
	
	% for figure
	\renewcommand\thefigure{\theperpage
  \expandafter\ifx\csname pp@max@figure@\theabspage\endcsname\relax
  \else \expandafter\ifnum\csname pp@max@figure@\theabspage\endcsname>\z@ 
      .\alph{figure}%
  \fi\fi}%
	
	
	% for table
		\renewcommand\thetable{\theperpage
  \expandafter\ifx\csname pp@max@table@\theabspage\endcsname\relax
  \else \expandafter\ifnum\csname pp@max@table@\theabspage\endcsname>\z@ 
      .\alph{table}%
  \fi\fi}%

\def\pp@ppagectr#1#2#3#4{\@ifundefined{c@pp@a@#1}{}{%
    \expandafter\ifx\csname pp@max@#1@#4\endcsname\relax
      \expandafter\gdef\csname pp@max@#1@#4\endcsname{0}%
    \else
      \global\expandafter\xdef\csname pp@max@#1@#4\endcsname{\the\numexpr
        1+\csname pp@max@#1@#4\endcsname\relax}%
    \fi
    \def\next{#3}%
    \expandafter\ifx\csname pp@page@#1\endcsname\next
      \addtocounter{pp@a@#1}\@ne
    \else
      \setcounter{pp@a@#1}{\value{pp@r@#1}}%
    \fi
    \global\expandafter\let\csname pp@page@#1\endcsname\next
    \expandafter\pp@labeldef\expandafter
      {\number\value{pp@a@#1}}{#1}{#2}{#3}{#4}}}
\makeatother

\begin{document}
\begin{table}[htbp]
	\centering
\begin{tabular}{ l c r }
  1 & 2 & 3 \\
  4 & 5 & 6 \\
  7 & 8 & 9 \\
\end{tabular}
	\caption{beschreibung}
	\label{tab:2}
\end{table}
\begin{table}[htbp]
	\centering
\begin{tabular}{ l c r }
  1 & 2 & 3 \\
  4 & 5 & 6 \\
  7 & 8 & 9 \\
\end{tabular}
	\caption{beschreibung}
	\label{tab:1}
\end{table}
\begin{table}[htbp]
	\centering
\begin{tabular}{ l c r }
  1 & 2 & 3 \\
  4 & 5 & 6 \\
  7 & 8 & 9 \\
\end{tabular}
	\caption{beschreibung}
	\label{tab:3}
\end{table}
\newpage

\begin{table}[htbp]
	\centering
\begin{tabular}{ l c r }
  1 & 2 & 3 \\
  4 & 5 & 6 \\
  7 & 8 & 9 \\
\end{tabular}
	\caption{beschreibung}
	\label{tab:5}
\end{table}




\begin{figure}[htbp]
	\centering
		\includegraphics{}
	\caption{beschreibung}
	\label{1}
\end{figure}
\begin{figure}[htbp]
	\centering
		\includegraphics{}
	\caption{beschreibung}
	\label{2}
\end{figure}



Wir befinden uns auf Seite \label{p1}\pageref{p1} und
deshalb sollen alle Formeln auf dieser Seite auch mit der Zahl \pageref{p1} beginnen.

\begin{align}
a &= b \label{eq:a}
%b &= c
\end{align}


\newpage

Wir befinden uns auf Seite \label{p2}\pageref{p2} und
deshalb sollen alle Formeln auf dieser Seite auch mit der Zahl \pageref{p2} beginnen.

\begin{align}
d &= e  \label{eq:d}\\
f &= g  \label{eq:g}
\end{align}

Siehe \eqref{eq:a}, \eqref{eq:d} and \eqref{eq:g}.

\end{document}
Viele Grüße Milo

Gast

Beitrag von Gast »

Ich hatte befürchtet, dass \theabspage problematisch wird. Vielleicht geht es mit \theperpage besser:
\documentclass[a4paper,twoside,10pt]{report}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{mwe}
\usepackage{lmodern} %Type1-Schriftart für nicht-englische Texte
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{perpage}
\MakeSortedPerPage{equation}
\MakeSortedPerPage{figure}
\MakeSortedPerPage{table}


% for equation
\makeatletter
\renewcommand\theequation{\theperpage
  \expandafter\ifx\csname pp@max@equation@\theperpage\endcsname\relax
  \else \expandafter\ifnum\csname pp@max@equation@\theperpage\endcsname>\z@
      .\alph{equation}%
  \fi\fi}%
   
   
% for figure
\renewcommand*{\thefigure}{%
  \theperpage
  \expandafter\ifx\csname pp@max@figure@\theperpage\endcsname\relax
  \else \expandafter\ifnum\csname pp@max@figure@\theperpage\endcsname>\z@
    .\alph{figure}%
  \fi\fi
}
   
% for table
\renewcommand\thetable{%
  \theperpage
  \expandafter\ifx\csname pp@max@table@\theperpage\endcsname\relax
  \else \expandafter\ifnum\csname pp@max@table@\theperpage\endcsname>\z@
      .\alph{table}%
  \fi\fi}%

\def\pp@ppagectr#1#2#3#4{\@ifundefined{c@pp@a@#1}{}{%
    \expandafter\ifx\csname pp@max@#1@#3\endcsname\relax
      \expandafter\gdef\csname pp@max@#1@#3\endcsname{0}%
    \else
      \global\expandafter\xdef\csname pp@max@#1@#3\endcsname{\the\numexpr
        1+\csname pp@max@#1@#3\endcsname\relax}%
    \fi
    \def\next{#3}%
    \expandafter\ifx\csname pp@page@#1\endcsname\next
      \addtocounter{pp@a@#1}\@ne
    \else
      \setcounter{pp@a@#1}{\value{pp@r@#1}}%
    \fi
    \global\expandafter\let\csname pp@page@#1\endcsname\next
    \expandafter\pp@labeldef\expandafter
      {\number\value{pp@a@#1}}{#1}{#2}{#3}{#4}}}
\makeatother

\begin{document}
\begin{table}[htbp]
   \centering
   \begin{tabular}{ l c r }
     1 & 2 & 3 \\
     4 & 5 & 6 \\
     7 & 8 & 9 \\
   \end{tabular}
   \caption{beschreibung}
   \label{tab:2}
\end{table}
\begin{table}[htbp]
  \centering
  \begin{tabular}{ l c r }
    1 & 2 & 3 \\
    4 & 5 & 6 \\
    7 & 8 & 9 \\
  \end{tabular}
  \caption{beschreibung}
  \label{tab:1}
\end{table}
\begin{table}[htbp]
  \centering
  \begin{tabular}{ l c r }
    1 & 2 & 3 \\
    4 & 5 & 6 \\
    7 & 8 & 9 \\
  \end{tabular}
  \caption{beschreibung}
  \label{tab:3}
\end{table}
\newpage

\begin{table}[htbp]
   \centering
   \begin{tabular}{ l c r }
     1 & 2 & 3 \\
     4 & 5 & 6 \\
     7 & 8 & 9 \\
   \end{tabular}
   \caption{beschreibung}
   \label{tab:5}
\end{table}

\begin{figure}[htbp]
  \centering
  \includegraphics{example-image}
  \caption{beschreibung}
  \label{1}
\end{figure}
\begin{figure}[htbp]
  \centering
  \includegraphics{example-image-a}
  \caption{beschreibung}
  \label{2}
\end{figure}


Wir befinden uns auf Seite \label{p1}\pageref{p1} und
deshalb sollen alle Formeln auf dieser Seite auch mit der Zahl \pageref{p1} beginnen.

\begin{align}
a &= b \label{eq:a}
%b &= c
\end{align}


\newpage

Wir befinden uns auf Seite \label{p2}\pageref{p2} und
deshalb sollen alle Formeln auf dieser Seite auch mit der Zahl \pageref{p2} beginnen.

\begin{align}
d &= e  \label{eq:d}\\
f &= g  \label{eq:g}
\end{align}

Siehe \eqref{eq:a}, \eqref{eq:d} and \eqref{eq:g} and table~\ref{tab:2} and figure~\ref{1}.

\end{document}
Die Warnung bleibt: Ich weiß nicht wirklich, was ich da tue, sondern habe schlicht mit internem Code von perpage und etwas Kreativität experimentiert.

milo hirsch
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Mo 2. Jan 2017, 13:19

Beitrag von milo hirsch »

Hallo,

bei der Lösung gibt es Probleme bei der Verwendung der Titelseite. Die Unterscheidung ob eine Abbildung oder mehrere Abbildungen pro Seite auftreten verschiebt sich aufgrund der Titelseite um 1. Dementsprechend wird die Nummerierung falsch dargestellt.

Aber durch Verwendung von
\theperpage
im oberen Teil und
pp@max@#1@#4
anstatt
pp@max@#1@#3
im unteren Teil funktioniert es auch dann.
\MakeSortedPerPage{equation}
\MakeSortedPerPage{figure}
\MakeSortedPerPage{table}

% for equation
\makeatletter
\renewcommand\theequation{\theperpage
  \expandafter\ifx\csname pp@max@equation@\theperpage\endcsname\relax
  \else \expandafter\ifnum\csname pp@max@equation@\theperpage\endcsname>\z@
      .\alph{equation}%
  \fi\fi}%
   
   
% for figure
\renewcommand*{\thefigure}{\theperpage
  \expandafter\ifx\csname pp@max@figure@\theperpage\endcsname\relax
  \else \expandafter\ifnum\csname pp@max@figure@\theperpage\endcsname>\z@
    .\alph{figure}%
  \fi\fi
}
   
% for table
\renewcommand\thetable{\theperpage
  \expandafter\ifx\csname pp@max@table@\theperpage\endcsname\relax
  \else \expandafter\ifnum\csname pp@max@table@\theperpage\endcsname>\z@
      .\alph{table}%
  \fi\fi}%

\def\pp@ppagectr#1#2#3#4{\@ifundefined{c@pp@a@#1}{}{%
    \expandafter\ifx\csname pp@max@#1@#4\endcsname\relax
      \expandafter\gdef\csname pp@max@#1@#4\endcsname{0}%
    \else
      \global\expandafter\xdef\csname pp@max@#1@#4\endcsname{\the\numexpr
        1+\csname pp@max@#1@#4\endcsname\relax}%
    \fi
    \def\next{#3}%
    \expandafter\ifx\csname pp@page@#1\endcsname\next
      \addtocounter{pp@a@#1}\@ne
    \else
      \setcounter{pp@a@#1}{\value{pp@r@#1}}%
    \fi
    \global\expandafter\let\csname pp@page@#1\endcsname\next
    \expandafter\pp@labeldef\expandafter
      {\number\value{pp@a@#1}}{#1}{#2}{#3}{#4}}}
\makeatother
Vielen Dank für die Hilfe und Geduld.
Milo

Gast

Beitrag von Gast »

#4 ist aber die absolute Seite. Das funktioniert also allenfalls in Deinem Fall aber nicht generell. Genau deshalb hatte ich \theabspage verwendet, das aber offenbar nicht expandibel ist.

Ich sehe auch nicht ganz, warum eine Titelseite ein Problem darstellen sollte:
\documentclass[a4paper,twoside,10pt]{report}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{mwe}
\usepackage{lmodern} %Type1-Schriftart für nicht-englische Texte
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{perpage}
\MakeSortedPerPage{equation}
\MakeSortedPerPage{figure}
\MakeSortedPerPage{table}


% for equation
\makeatletter
\renewcommand\theequation{\theperpage
  \expandafter\ifx\csname pp@max@equation@\theperpage\endcsname\relax
  \else \expandafter\ifnum\csname pp@max@equation@\theperpage\endcsname>\z@
      .\alph{equation}%
  \fi\fi}%
   
   
% for figure
\renewcommand*{\thefigure}{%
  \theperpage
  \expandafter\ifx\csname pp@max@figure@\theperpage\endcsname\relax
  \else \expandafter\ifnum\csname pp@max@figure@\theperpage\endcsname>\z@
    .\alph{figure}%
  \fi\fi
}
   
% for table
\renewcommand\thetable{%
  \theperpage
  \expandafter\ifx\csname pp@max@table@\theperpage\endcsname\relax
  \else \expandafter\ifnum\csname pp@max@table@\theperpage\endcsname>\z@
      .\alph{table}%
  \fi\fi}%

\def\pp@ppagectr#1#2#3#4{\@ifundefined{c@pp@a@#1}{}{%
    \expandafter\ifx\csname pp@max@#1@#3\endcsname\relax
      \expandafter\gdef\csname pp@max@#1@#3\endcsname{0}%
    \else
      \global\expandafter\xdef\csname pp@max@#1@#3\endcsname{\the\numexpr
        1+\csname pp@max@#1@#3\endcsname\relax}%
    \fi
    \def\next{#3}%
    \expandafter\ifx\csname pp@page@#1\endcsname\next
      \addtocounter{pp@a@#1}\@ne
    \else
      \setcounter{pp@a@#1}{\value{pp@r@#1}}%
    \fi
    \global\expandafter\let\csname pp@page@#1\endcsname\next
    \expandafter\pp@labeldef\expandafter
      {\number\value{pp@a@#1}}{#1}{#2}{#3}{#4}}}
\makeatother

\begin{document}
\title{Title}
\author{Author}
\maketitle

\begin{table}[htbp]
   \centering
   \begin{tabular}{ l c r }
     1 & 2 & 3 \\
     4 & 5 & 6 \\
     7 & 8 & 9 \\
   \end{tabular}
   \caption{beschreibung}
   \label{tab:2}
\end{table}
\begin{table}[htbp]
  \centering
  \begin{tabular}{ l c r }
    1 & 2 & 3 \\
    4 & 5 & 6 \\
    7 & 8 & 9 \\
  \end{tabular}
  \caption{beschreibung}
  \label{tab:1}
\end{table}
\begin{table}[htbp]
  \centering
  \begin{tabular}{ l c r }
    1 & 2 & 3 \\
    4 & 5 & 6 \\
    7 & 8 & 9 \\
  \end{tabular}
  \caption{beschreibung}
  \label{tab:3}
\end{table}
\newpage

\begin{table}[htbp]
   \centering
   \begin{tabular}{ l c r }
     1 & 2 & 3 \\
     4 & 5 & 6 \\
     7 & 8 & 9 \\
   \end{tabular}
   \caption{beschreibung}
   \label{tab:5}
\end{table}

\begin{figure}[htbp]
  \centering
  \includegraphics{example-image}
  \caption{beschreibung}
  \label{1}
\end{figure}
\begin{figure}[htbp]
  \centering
  \includegraphics{example-image-a}
  \caption{beschreibung}
  \label{2}
\end{figure}


Wir befinden uns auf Seite \label{p1}\pageref{p1} und
deshalb sollen alle Formeln auf dieser Seite auch mit der Zahl \pageref{p1} beginnen.

\begin{align}
a &= b \label{eq:a}
%b &= c
\end{align}


\newpage

Wir befinden uns auf Seite \label{p2}\pageref{p2} und
deshalb sollen alle Formeln auf dieser Seite auch mit der Zahl \pageref{p2} beginnen.

\begin{align}
d &= e  \label{eq:d}\\
f &= g  \label{eq:g}
\end{align}

Siehe \eqref{eq:a}, \eqref{eq:d} and \eqref{eq:g} and table~\ref{tab:2} and figure~\ref{1}.

\end{document}
Gibt nach drei LaTeX-Läufen bei mir das korrekte Ergebnis, wenn ich nicht irgend etwas übersehe.

milo hirsch
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Mo 2. Jan 2017, 13:19

Beitrag von milo hirsch »

Hallo,

bei der mir vorgegebenen Corporate-Design Vorlage scheint das maketitle bzw. thesistitle die Zähler zu manipulieren.
Entweder werden nur Seitenzahlen verwendet, aber keine weitere Unterscheidung. Oder es wird um eine Seite verschoben.
Wobei mit der Kombination aus #4 (absolute Seite) und \theperpage es bisher funktioniert.

Viele Grüße
Milo

Antworten