Ergänze ich bei @Henris Code https://texwelt.de/wissen/fragen/24876/kenn-nummern-als-layout
die Option twoside erhalte ich im großen Ganzen mein gewünschtes Layout:

alt text

Zu den Problemen:

  1. (Leerseite ---> Gibt's nimmer.)

  2. Auf der letzten und der vorletzten Seite zeigt es im Kopf '(6-6)' an. Hier müsste nur '(6)' stehen.

Aber ich weiß nicht, wie man die Werte von \firstmark1 und \bothmarks1 auslesen kann:

Öffne in Overleaf
% Tut nicht =================================
\newcommand\parenumrangetest{%
\ifnum\value{\firstmarks1}=\value{\botmarks1}{(\parnumstyle{\botmarks1})}%
\else{(\parnumstyle{\firstmarks1--\botmarks1})}\fi}
% Tut nicht =================================

alt text

PS: Verbesserungsvorschläge allgemeiner Natur wären mir auch sehr recht, weil ich nicht weiß, ob das KOMA-mäßig alles so richtig ist.

MWE (richtige Code-Version korrigiert!):

Öffne in Overleaf
\documentclass[ngerman, fontsize=9pt, paper=a5, 
twoside, 
%open=left, % Dann vor -jedem- Kapitel eine Leerseite
numbers=enddot,
headsepline,plainheadsepline,
]{scrreprt}
\usepackage{amsmath}
\usepackage{blindtext}

% Paragraph numbers
\newcommand\parnumstyle[1]{\textsf{\bfseries\footnotesize#1}}
\newcounter{parnumber}
\newcommand\parnum[1][\theparnumber]{%
\leavevmode
\refstepcounter{parnumber}%
\marks1{\theparnumber}%
\marginpar[\raggedleft\parnumstyle{\theparnumber}\label{pn:#1}]{\parnumstyle{\theparnumber}\label{pn:#1}}%
}
\newcommand\pnref[2][$\uparrow$\,]{#1\parnumstyle{\ref{pn:#2}}}

\usepackage[%showframe,
left=15mm, right=15mm
]{geometry}
% Layout

\usepackage{scrlayer-scrpage}[]
\automark{chapter}
\automark*{section}
\clearpairofpagestyles
\ofoot*{\pagemark}

% Tut nicht =================================
\newcommand\parenumrangetest{%
\ifnum\value{\firstmarks1}=\value{\botmarks1}{(\parnumstyle{\botmarks1})}%
\else{(\parnumstyle{\firstmarks1--\botmarks1})}\fi}
% Tut nicht =================================

% Parnums in head
\newcommand\parenumrange{\ifnum\theparnumber>0{(\parnumstyle{\firstmarks1--\botmarks1})}\else\fi}

\rohead*{\leftmark~~ \parenumrange}
\lehead*{\parenumrange~~\leftmark}

\setkomafont{pageheadfoot}{\normalfont\footnotesize}

\usepackage[colorlinks=false, hidelinks]{hyperref}
\begin{document}
\chapter{Erstes Kapitel}

Satz des Pythagoras. \parnum[SdP]

\section{Erster Abschnitt}
\subsection{Erster Unterabschnitt}
\parenumrange
\parnum
\blindtext
\theparnumber

%\parnum
\blindtext
\theparnumber

\parnum
\blindtext
\theparnumber

\parnum
\blindtext

\parnum
\blindtext

%\parnum
\blindtext

\parnum
\blindtext

\section{Zweiter Abschnitt}
\ref{pn:SdP}

\ref{pn:2}

(\pnref{SdP})

(\pnref{2})

(\pnref{SdP}, \pnref[]{2})

\chapter{Gar keine parnums auf dieser Seite}
\blindtext
\end{document}

gefragt 31 Mai '19, 18:08

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

bearbeitet 31 Mai '19, 20:09


Man kann es so machen:

\edef\CurrentFirstmark{\firstmark} 
\edef\CurrentBotmark{\botmark} 
\ifx\CurrentFirstmark\CurrentBotmark ja \else nein \fi

oder so

% Parnums in head
\newcommand\parnumrange{\ifnum\theparnumber>0% NEW
\ifstr{\firstmarks1}{\botmarks1}{(\parnumstyle{\botmarks1})}{(\parnumstyle{\firstmarks1--\botmarks1})}%
\else\fi}

Also scheint zu funktionieren. Laut @DavidCarlisle könnte es zu Grenzproblemen (bei float pages?) führen.

MWE:

alt text

\documentclass[ngerman, fontsize=9pt, paper=a5, 
twoside, 
%open=right, % Dann vor -jedem- Kapitel eine Leerseite
numbers=enddot,
headsepline,plainheadsepline,
]{scrreprt}
\usepackage{amsmath}

% Layout
\usepackage[showframe,
left=15mm, right=15mm % IST
%left=9mm, right=9mm % SOLL
]{geometry}

\usepackage[heightadjust]{marginnote}% marginnotes in head

% Fonts 
\setkomafont{pageheadfoot}{\normalfont\footnotesize}
\newcommand\parnumstyle[1]{\textsf{\bfseries\footnotesize#1}}

% Commands
\newcommand\pnref[2][$\uparrow$\,]{#1\parnumstyle{\ref{pn:#2}}}

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

% Parnums in head
\newcommand\parnumrange{\ifnum\theparnumber>0% NEW
\ifstr{\firstmarks1}{\botmarks1}{(\parnumstyle{\botmarks1})}{(\parnumstyle{\firstmarks1--\botmarks1})}%
\else\fi%
%
%\edef\CurrentFirstmark{\firstmarks1}%  OLD
%\edef\CurrentBotmark{\botmarks1}% 
%\ifx\CurrentFirstmark\CurrentBotmark%
%\ifnum\theparnumber>0{(\parnumstyle{\botmarks1})}\else\fi%
%\else%
%\ifnum\theparnumber>0{(\parnumstyle{\firstmarks1--\botmarks1})}\else\fi%
%\fi
}

% 
\usepackage[automark]{scrlayer-scrpage}[]
\ohead*{\marginnote{\parnumrange}% range of parnums
\ifstr{\headmark}{}{\rightbotmark}{\headmark}% titles in head
}
% \ofoot*{\pagemark}  % auto

\usepackage{mwe}
\usepackage[colorlinks=false, hidelinks]{hyperref}
\begin{document}
\chapter{Erstes Kapitel}
Satz des Pythagoras. \parnum[SdP]

\section{Erster Abschnitt}
\subsection{Erster Unterabschnitt}
\parnumrange
\parnum
\blindtext
\theparnumber

\setcounter{parnumber}{122}%
%\parnum
\blindtext
\theparnumber

\parnum
\blindtext
\theparnumber

test  \parnum \par
test  \parnum \par
\begin{figure}%[h]
\centering\rule{7cm}{5cm}
\caption{myfigure}
\end{figure}
test  \parnum \par
test  \parnum \par

\parnum
\blindtext

\parnum
\blindtext

%\parnum
\blindtext

\parnum
\blindtext

\section{Zweiter Abschnitt}
\ref{pn:SdP}

\ref{pn:2}

(\pnref{SdP})

(\pnref{2})

(\pnref{SdP}, \pnref[]{2})

\chapter{Gar keine parnums auf dieser Seite}
\blindtext
\end{document}

Neue Lösung mit `\newmarks{\parnummark}`


\documentclass[ngerman, fontsize=9pt, paper=a5, 
twoside, 
%open=right, % Dann vor -jedem- Kapitel eine Leerseite
numbers=enddot,
headsepline,plainheadsepline,
]{scrreprt}
\usepackage{amsmath}

% Layout
\usepackage[showframe,
left=15mm, right=15mm % IST
%left=9mm, right=9mm % SOLL
]{geometry}

\usepackage[heightadjust]{marginnote}% marginnotes in head

% Fonts 
\setkomafont{pageheadfoot}{\normalfont\footnotesize}
\newcommand\parnumstyle[1]{\textsf{\bfseries\footnotesize#1}}

% Commands
\newcommand\pnref[2][$\uparrow$\,]{#1\parnumstyle{\ref{pn:#2}}}

% Paragraph numbers
\newcounter{parnumber}
\newmarks{\parnummark}
\newcommand\parnum[1][\theparnumber]{%
\leavevmode%
\refstepcounter{parnumber}%
\marks\parnummark{\theparnumber}%
\marginnote%[\raggedleft\parnumstyle{\theparnumber}\label{pn:#1}]
{\parnumstyle{\theparnumber}\label{pn:#1}}% old: \marginpar
}

% Parnums in head
\newcommand\parnumrange{\ifnum\theparnumber>0% NEW
\ifstr{\firstmarks\parnummark}{\botmarks\parnummark}{(\parnumstyle{\botmarks\parnummark})}{(\parnumstyle{\firstmarks\parnummark--\botmarks\parnummark})}%
\else\fi}

\usepackage[automark]{scrlayer-scrpage}[]
\ohead*{\marginnote{\parnumrange}% range of parnums
\ifstr{\headmark}{}{\rightbotmark}{\headmark}% titles in head
}
% \ofoot*{\pagemark}  % auto...

\usepackage{mwe}
\usepackage[colorlinks=false, hidelinks]{hyperref}
\begin{document}
\chapter{Erstes Kapitel}
Satz des Pythagoras. \parnum[SdP]

\section{Erster Abschnitt}
\subsection{Erster Unterabschnitt}
\parnumrange
\parnum
\blindtext
\theparnumber

\setcounter{parnumber}{122}%
%\parnum
\blindtext
\theparnumber

\parnum
\blindtext
\theparnumber

test  \parnum \par
test  \parnum \par
\begin{figure}%[h]
\centering\rule{7cm}{5cm}
\caption{myfigure}
\end{figure}
test  \parnum \par
test  \parnum \par

\parnum
\blindtext

\parnum
\blindtext

%\parnum
\blindtext

\parnum
\blindtext

\section{Zweiter Abschnitt}
\ref{pn:SdP}

\ref{pn:2}

(\pnref{SdP})

(\pnref{2})

(\pnref{SdP}, \pnref[]{2})

\chapter{Gar keine parnums auf dieser Seite}
\blindtext
\end{document}
Permanenter link

beantwortet 01 Jun '19, 14:04

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

bearbeitet 02 Jun '19, 16:17

2

Ich traue mich ja fast schon nicht mehr, in Kommentaren kurze Hinweise zu geben, trotzdem: KOMA-Script bietet mit \ifstr die Möglichkeit, die Expansion zweier Makros/Primitive zu vergleichen, also beispielsweise \ifstr{\firstmarks\Randmarke}{\botmarks\Randmarke}{Beide sind gleich}{Beide sind unterschiedlich} zu schreiben (vorausgesetzt, man hat \Randmarke vorher korrekt mit \newmarks\Randmarke angefordert und dann eben auch \marks\Randmarke{…} verwendet, statt unsauber mit der festen Markennummer 1 zu arbeiten). Näheres zu \ifstr ist der KOMA-Script-Anleitung zu entnehmen.

(02 Jun '19, 12:53) gast3

@Ijon Tichy Trau Dich ruhig. Netter wäre es natürlich, wenn Du das als lauffähige AW schreiben könntest.
Ich weiß, dass es sowas gibt, aber ich werde mich damit eh wieder verrennen und den ganzen Nachmittag an einem prinzipiell einfachen Ding rumbasteln.

(02 Jun '19, 12:57) cis

So oder wie?
% Parnums in head \newcommand\parnumrange{\ifnum\theparnumber>0% \ifstr{\firstmarks1}{\botmarks1}{(\parnumstyle{\botmarks1})}{(\parnumstyle{\firstmarks1--\botmarks1})}% \else\fi}

Kommt zumindest das Richtige raus, also denke ich mal: ja.

(02 Jun '19, 14:26) cis

"unsauber mit der festen Markennummer 1 "... Jaja, ich bin froh, dass das mal tut.
Ifstr im KOMA-Script, klar. Aber über diesen ganzen e-TeX (?) steht nur in den Sternen was.

Also Deine Anmerkungen sind ja gut und richtig. Aber Du brauchst nicht meinen, dass man das mal so auf die Schnelle umsetzen kann. Vieles davon setzt jahrelange Erfahrung voraus.

(02 Jun '19, 15:33) cis

@newmarks: So oder wie?

% Paragraph numbers \newcounter{parnumber} \newmarks\xxx \newcommand\parnum[1][\theparnumber]{% \leavevmode% \refstepcounter{parnumber}% \marks\xxx{\theparnumber} %\marks1{\theparnumber}% OLD \marginnote%[\raggedleft\parnumstyle{\theparnumber}\label{pn:#1}] {\parnumstyle{\theparnumber}\label{pn:#1}}% old: \marginpar } % Parnums in head \newcommand\parnumrange{\ifnum\theparnumber>0% NEW \ifstr{\firstmarks\xxx}{\botmarks\xxx}{(\parnumstyle{\botmarks\xxx})}{(\parnumstyle{\firstmarks\xxx--\botmarks\xxx})}% \else\fi}

Tut zumindest. Ja gut, wenn das besser ist.

(02 Jun '19, 16:10) cis

Diese Anpassung bewirkt übrigens, dass der Befehl \parnumrange im head, wie gewünscht funktioniert; auffälig ist aber, dass er im Dokument nimmer funktioniert. Aber ich krieg ja zur Sache nur Anmerkungen, was ich alles falsch mache; spärliche Hinweise, wie es ich es besser machen soll; und ob das dann stimmt weiß ich auch nicht. Ich muss also hier Schnitzeljagd spielen.

(03 Jun '19, 17:28) cis
Ergebnis 5 von 6 show 1 more comments
Deine Antwort
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:

×131
×1

gestellte Frage: 31 Mai '19, 18:08

Frage wurde gesehen: 4,694 Mal

zuletzt geändert: 03 Jun '19, 17:28