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 '19, 22:01

cis's gravatar image

cis
9.5k95459491
Akzeptiert-Rate: 29%

1

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 ...

(16 Jun '19, 01:17) esdd
2

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 '19, 09:32) Henri
4

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 '19, 11: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 '19, 12:29) cis
1

Du könntest Ulrikes Kommentar lesen.

(16 Jun '19, 23: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?

(17 Jun '19, 00:35) cis

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

(17 Jun '19, 01:35) cis
Ergebnis 5 von 7 show 2 more comments
Deine Antwort auf die Frage: (Bemerkungen bitte oben als Kommentar)
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×6

gestellte Frage: 15 Jun '19, 22:01

Frage wurde gesehen: 1,885 Mal

zuletzt geändert: 17 Jun '19, 01:35