Ziel: Von-bis-Bereich der Paragraphennummern im den Kopf ergänzen:

alt text

Da das mit dem Mark-Mechanismus unzuverlässigf funktionert hatte ich mir überlegt:
Man könnte auch seitenweise eine Liste der Paragraphennummern erstellen und deren Minimum und Maximum in den Kopf setzen.

Das müsste doch irgendwie so gehen:

% PageParnumList erstellen
\newcommand{\PageParnumList}{}% Name reservieren
\let\PageParnumList=\empty% Liste erstellen
\makeatletter
  \ifx\empty\PageParnumList{} \protected@xdef\PageParnumList{\theparnumber}%
  \else \protected@xdef\PageParnumList{\PageParnumList,\theparnumber}%
  \fi
\makeatother

tut es aber nicht. Was muss ich anders machen?

alt text

\documentclass[paper=a5]{scrartcl}
\usepackage{tikz}
\usepackage{marginnote}
\usepackage{scrlayer-scrpage}
\usepackage{lipsum}

% Paragraph numbers
\newcounter{parnumber}
\newcommand\parnum[1][\theparnumber]{%
\leavevmode%
\refstepcounter{parnumber}%
\marginnote{\theparnumber\label{pn:#1}}% 
}

% PageParnumList erstellen
\newcommand{\PageParnumList}{}% Name reservieren
\let\PageParnumList=\empty% Liste erstellen
\makeatletter
  \ifx\empty\PageParnumList{} \protected@xdef\PageParnumList{\theparnumber}%
  \else \protected@xdef\PageParnumList{\PageParnumList,\theparnumber}%
  \fi
\makeatother

\pgfmathtruncatemacro{\PageParnumMin}{min(\PageParnumList)}
\pgfmathtruncatemacro{\PageParnumMax}{max(\PageParnumList)}

\begin{document}
\parnum \theparnumber \lipsum[66]

\parnum \theparnumber \lipsum[66]

\lipsum[67]

\parnum \theparnumber  \lipsum[66]
\section{pagerefs} 
\pageref{pn:1},\pageref{pn:2},\pageref{pn:3}

\section{parnums auf Seite \thepage} 
\PageParnumList,~
Minimum auf Seite \thepage: \PageParnumMin, Maximum auf Seite \thepage: \PageParnumMax
% Input in head:
\chead*{\PageParnumMin--\PageParnumMax}
\end{document}

gefragt 15 Jun, 16:01

cis's gravatar image

cis
9.3k20201323
Akzeptiert: 62%

Das Ergebnis ist nicht verwunderlich: Du trägst nur in der Präambel die Ausgabe des zu dem Zeitpunkt aktuellen Wertes des Zählers parnum ein. Und der ist an der Stelle noch 0 ...

(15 Jun, 19:17) esdd
1

Das wird nicht funktionieren, weil Makros im Gegensatz zu \mark nicht mit \shipout synchronisiert sind. Das wird zu zufälligen »off by one« Problemen führen. Hier ein kleines Beispiel (ohne die überflüssige Liste): https://termbin.com/iom7

(16 Jun, 03:32) Henri
3

Aufgrund des asynchronen Seitenumbruchs in TeX musst du bei sowas immer entweder über Marken oder wie bei label/ref über eine externe Datei und (mindestens) zwei Kompilationen gehen (für die zweite Methode empfehle ich zref).

(16 Jun, 05:36) Ulrike Fischer

Ja, das es so nicht mit der Liste funktioniert ist schon klar. Wenn es täte würde ich hier nicht fragen.

Was könnte ich denn noch machen?

(16 Jun, 06:29) cis

Du könntest Ulrikes Kommentar lesen.

(16 Jun, 17:43) Henri

@Henri Was sagt mir dieser Kommentar? Von mir aus kann das auch 5mal kompilieren, wenn es dann tut. Oder soll ich jetzt versuchen zref zu verwenden?

(16 Jun, 18:35) cis

Ja, also das Handbuch zref macht den Eindruck, dass es damit geht. Wie jetzt genau im Detail: da habe ich keine Ahnung...

(16 Jun, 19:35) cis
Ergebnis 5 von 7 Alle anzeigen
Sei der Erste, der diese Frage beantwortet!
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×4

Frage gestellt: 15 Jun, 16:01

Frage wurde angeschaut: 162 Mal

Zuletzt aktualisiert: 16 Jun, 19:35