Nehme ich den Code von @Henri Was muss hier anders gemacht werden? Wichtiger Hinweis: Eine multicol-Umgebung soll nur eine parnumber erhalten, und zwar zu oberst (falls es wichtig ist: multicol startet im Allgm. nicht mit Text, auch mit Bildern); keine weiteren parnummern in der multicol-Umgebung. \documentclass[paper=a5]{scrreprt} \usepackage{marginnote} \usepackage{multicol} % Paragraph numbers \newcounter{parnumber} \newmarks{\parnummark} \newcommand\parnum[1][\theparnumber]{% \leavevmode% \refstepcounter{parnumber}% \marks\parnummark{\theparnumber}% \marginnote{\theparnumber\label{pn:#1}}% } % Parnums in head \newcommand\parnumrange{\ifnum\theparnumber>0% Nur wenn parnums vorhanden \ifstr{\firstmarks\parnummark}{\botmarks\parnummark}% erste = letzte? {\botmarks\parnummark}% ja ---> nur letzte {\firstmarks\parnummark--\botmarks\parnummark}% nein --> erste bis letzte \else\fi} % Layout: Parnums in head \usepackage[automark]{scrlayer-scrpage}[] \ohead*{\marginnote{\parnumrange}% range of parnums \ifstr{\headmark}{}{\rightbotmark}{\headmark}% titles in head } \usepackage{mwe} % Blindtext \begin{document} \begin{multicols}{2}[\minisec{parnum wird nicht gezählt}] \parnum \blindtext \end{multicols} %\setcounter{parnumber}{187}% {\Huge Satz des Pythagoras. } \parnum[SdP] \parnum \blindtext \end{document} gefragt 07 Jun '19, 04:12 cis
Ergebnis 5 von 10
show 5 more comments
|
Wenn ich mal folgendes mache:
scheint es zu funktionieren. *Hier darf mir gerne jmd. sagen, ob die Einstellung \documentclass[paper=a5]{scrreprt} \usepackage{marginnote} \usepackage{multicol} \setlength\columnseprule{0.4pt} % Paragraph numbers \newcounter{parnumber} \newmarks{\parnummark} \newcommand\parnum[1][\theparnumber]{% \leavevmode% \refstepcounter{parnumber}% \marks\parnummark{\theparnumber}% \marginnote{\theparnumber\label{pn:#1}}% } % Parnums in head \newcommand\parnumrange{\ifnum\theparnumber>0% Nur wenn parnums vorhanden \ifstr{\firstmarks\parnummark}{\botmarks\parnummark}% erste = letzte? {\botmarks\parnummark}% ja ---> nur letzte {\firstmarks\parnummark--\botmarks\parnummark}% nein --> erste bis letzte \else\fi} % Layout: Parnums in head \usepackage[automark]{scrlayer-scrpage}[] \ohead*{\marginnote{\parnumrange}% range of parnums \ifstr{\headmark}{}{\rightbotmark}{\headmark}% titles in head } \usepackage{mwe} % Blindtext \begin{document} \parnum \begin{multicols}{2}[Schlecht:] %\parnum \blindtext \end{multicols} Gut: \begin{multicols}{2}[\parnum \vspace{\dimexpr-\multicolsep-1.0\baselineskip\relax}] \blindtext \end{multicols} \newenvironment{Multicols}[1][\theparnumber] {\begin{multicols}{2}[\parnum \label{pn:#1}\vspace{\dimexpr-\multicolsep-1.0\baselineskip\relax}]} {\end{multicols}} Mit eigener Umgebung: \begin{Multicols}[xxx] ~~~~~~ref-test \end{Multicols} Siehe \ref{pn:xxx} \\ %\setcounter{parnumber}{187}% {\Huge Satz des Pythagoras. } \parnum[SdP] \parnum \blindtext \end{document} beantwortet 09 Jun '19, 23:01 cis Diese Methode hier ist leider nicht sehr stabil. Ich frage mich, ob man das wirklich mit diesen
(15 Jun '19, 00:46)
cis
|
Disclaimer: Ich halte es nicht für sinnvoll, die Markierungen im Rand, die ja schon Auszeichnungen sind, nochmal in der Kopfzeile anzugeben. Hier ist trotzdem ein Versuch in der gewünschten Richtung. \documentclass[paper=a5]{scrreprt} %\providecommand*\Ifstr{\ifstr}% nötig bis einschließlich KOMA-Script version 3.27, see https://komascript.de/faq_deprecatedif \usepackage{marginnote} \usepackage{multicol} % Paragraph numbers \newcounter{parnumber} \newcommand\parnum[1][\theparnumber]{% \leavevmode% \refstepcounter{parnumber}% \markright{\theparnumber}% \marginnote{{\normalfont\normalsize\normalcolor\theparnumber\label{pn:#1}}}% } % Parnums in head \newcommand\parnumrange{% \Ifstr{\rightfirstmark}{\rightbotmark}% erste = letzte? {\rightbotmark}% ja ---> nur letzte {\rightfirstmark--\rightbotmark}% nein --> erste bis letzte } \renewcommand*\markboth[2]{\markleft{#1}} \usepackage[automark]{scrlayer-scrpage} \clearpairofpagestyles \ohead{\leftbotmark} \ofoot*{\pagemark} \DeclareNewLayer[ background, oddpage, head, addhoffset=\textwidth+\marginparsep, contents=\parnumrange ]{parnum.odd} \DeclareNewLayer[ background, evenpage, head, addhoffset=-\textwidth-\marginparsep, contents=\hfill\parnumrange ]{parnum.even} \AddLayersToPageStyle{scrheadings}{parnum.odd,parnum.even} \usepackage{mwe} % Blindtext \begin{document} \tableofcontents \chapter{Ein Kapitel} \Blindtext[3] \begin{multicols}{2}[\minisec{parnum wird nicht gezählt}] \parnum\blindtext \end{multicols} {\Huge\parnum[SdP] Satz des Pythagoras.\par} \Blindtext[2] \parnum \Blindtext[3] \chapter{Weiteres Kapitel} \Blindtext[6] \parnum\blindtext \end{document} Es gibt mindestens die folgenden Einschränkungen:
Da beantwortet 09 Jun '19, 01:45 esdd Da da scheints das restliche Layout teilweise runiniert und wegen der Einschränkung auf den Kapitelanfangsseiten muss ich schauen, wie man die parnums vor die multicolumns setzt und dann um geeigneten Abstand nach unten verschiebt.
(09 Jun '19, 03:43)
cis
@esdd Ah verdammt... Was könnte ich noch tun? Kann man die Ruinierung des restlichen Layouts nicht mit
(09 Jun '19, 21:50)
cis
Also so bekomme ich es prinzipiell hin:
müsste man jetzt vermutlich nur noch besser und korrekter machen.
(09 Jun '19, 22:29)
cis
Nein, ich habe keine Idee. Abgesehen davon, halte ich die Tatsache, dass die Randnummern im Rand stehen, schon für Auszeichnung genug ... Auf den Seiten mit nur einer Randmarke läuft man Gefahr deren Eintrag in der Kopfzeile für die Seitenzahl zu halten. Wenn Du auf einer Seite gar keine Randmarke hast, taucht immer noch die letzte in der Kopfzeile auf, etc.
(09 Jun '19, 22:33)
esdd
Die "Gefahr" ist gering, da andere Schrift und in Klammern. Das andere ist an sich Absicht, weil sich die parnum erst ändert, wenn eine neue kommt.
(09 Jun '19, 22:49)
cis
|
Ok, in Gleitunmgebungen. Original hatte ich das mit multicols getestet (ich dachte figure ist einfacher), falls das auch eine Gleitumgebung ist (das weiß ich gerade nicht)
Das dürfte nicht ohne weiteres möglich sein, da Gleitumgebungen erst in der Ausgaberoutine verarbeitet werden und es sein kann, dass sie auf eine andere Seite geschoben werden. Siehe auch https://tex.stackexchange.com/questions/883/why-do-floats-change-the-mark
Die Kennnummern in Gleitumgebungen führen auch schon ohne die Marksachen zu Problemen: füge in Deinem Beispiel mal noch ein
\parnumber\blindtext
vor der Gleitumgebung ein. Dann erscheint die Gleitumgebung immer noch oben auf der Seite (sie darf ja gleiten) und im Rand kommt damit die Nummer 2 vor der 1.Die
multicols
Umgebung ist keine Gleitumgebung. Aber Du wirst nicht umhin kommen ein Beispiel zu erstellen, dass Dein Problem zeigt, aber trotzdem noch übersichtlich und möglichst einfach ist ...Kleinstmögliches Beispiel mit Erläuterungen ergänzt.
multicol
hat dasselbe Problem, dass die Ausgaberoutine auch ohne Seitenumbruch aufgerufen wird. Der\mark
-Mechanismus ist damit inhärent inkompatibel.Wichtiger Hinweis: Eine multicol-Umgebung soll nur eine parnumber erhalten, und zwar zu oberst (falls es wichtig ist: multicol startet im Allgm. nicht mit Text, auch mit Bildern); keine weiteren parnummern in der multicol-Umgebung.
Das müsste doch dann gehen?
@Henri multicol ist nicht inhärent inkompatibel mit Marken -
\leftmark
und\rightmark
funktionieren damit wie erwartet, weil der sty dafür explizit Code enthält (genauso wie der LaTeX-Kern).@cis Nein, das geht mit Deinem Beispiel nicht, weil nach dem Aufruf der Seitenumbruchroutine die nächste gesetzte Marke zur ersten auf der Seite gesetzten wird. Deshalb kommt die
1
in Deinem Beispiel nicht in der Kopfzeile an. Du müsstest vermutlich mit\markboth
für Deine Nummern arbeiten und die Marken für die Kapitel und Abschnitte anderes setzen und verwenden. Interessant ist das aber nur aus theoretischer Sicht (immerhin), einen praktischen Nutzen der Wiederholung der Nummern aus dem Rand nochmal im Kopf erschließt sich mir nicht.Ok, und wie kann man das jetzt konkret lösen? Das sind doch sicher nur ein paar Feinschliffe.