Sie sind hier

Vertikale Ausrichtung beim Paket marginnote

Im Zusammenhang mit scrlttr2 ergaben sich Fragen, die mit dem Paket marginnote zu tun haben:

  • Die Grafiken im Rand überschneiden sich. Ich habe versucht, das mit \parbox zu lösen, das geht jedoch nicht. Die zweite Textpassage sollte logischerweise erst nach entsprechendem vertikalen Abstand gesetzt werden wenn die Grafik zu Ende ist. (Man könnte im Beispiel die Grafik kleiner machen. Aber hier gehts ums Prinzip, denn das tatsächliche Randbild ist halt bei Verkleinerung nicht mehr zu erkennen.)
  • Die Grafik erscheint erst auf Höhe der zweiten Textzeile („... Wer diesen Text liest ...“) statt bei „Blindtext – Blindtext“. Setze ich jedoch die Option twoside, dann werden die Grafiken in der richtigen Höhe gesetzt (auch auf der ersten ungeraden Seite, die ja bei ein- und zweiseitigem Satz vollkommen gleich aussieht).

Macht man die \parbox 1 inch hoch (so hoch wie die Grafik ist), z. B. mit \parbox[t][1in]{\textwidth}{ ... , bringt das dann bei einer längeren Textpassage alles durcheinander. Gibt es da keine automatisierte Lösung?

Vielen Dank schon einmal,
Jo

% Beispiel mit \marginnote und \includegraphics
 
\documentclass[%
	DIV=10,
	parskip=full-,%Absatzabstand eine Zeile
%	twoside,%zweiseitig
	fontsize=11pt
	]{scrartcl}
 
\usepackage[ngerman]{babel}
\usepackage{blindtext,mwe}
\usepackage{graphicx}
\usepackage{marginnote}
 
%definieren von \grqq und \glqq ( „ bzw. “), sonst Fehler bei Blindtext
\renewcommand*{\glqq}{\quotedblbase}
\renewcommand*{\grqq}{\textquotedblleft}
 
\begin{document}
 
\blindtext
 
%\parbox{\textwidth}{
\parbox[t][1in]{\textwidth}{
\marginnote{%
\includegraphics[draft,width=1in]{example-image-1x1}}
Blindtext -- Blindtext\par
Blindtext -- Wer diesen Text liest, ist selbst schuld.\par
Blindtext -- Der Text gibt lediglich den Grauwert der Schrift an. Ist das wirklich so?
}
 
%\parbox{\textwidth}{
\parbox[t][1in]{\textwidth}{
\marginnote{%
\includegraphics[draft,width=1in]{example-image-1x1}}
Blindtext -- Blindtext\par
Blindtext -- Wer diesen Text liest, ist selbst schuld.\par
Blindtext -- Der Text gibt lediglich den Grauwert der Schrift an. Ist das wirklich so?
}
 
\blindtext
\blindtext
 
\end{document}

[Edit:] Code in funktionierendes Minimalbeispiel geändert.

Bitte lies die Seite, die du in der Anmeldebestätigung erhalten hast. Wenn Du Bilder verwendest, die wir nicht haben, dann können wir mit Deinen Beispielen nichts anfangen!

Ich weiß jetzt auch nicht, was das gewünschte Ergebnis ist. Auf jeden Fall aber hast Du \marginnote falsch angewendet. Mit der \parbox beeinflusst Du nicht die \marginnote, sondern den restlichen Text. Dadurch haben die Absätze an der Stelle dann auch keinen Absatzabstand mehr, weil \parbox mit eigenen Absatzeinstellungen arbeitet. Dazu kommen bei Dir unerwünschte Leerzeichen durch nicht auskommentierte Zeilenenden.

So wie ich Dich verstehe, willst Du gar nicht \marginnote. Diese Anweisung setzt eine Randnotiz nämlich immer auf Höhe der aktuellen Zeile. Das ist der tiefere Sinn dieser Anweisung. Dabei ist es vollkommen egal, ob das schon etwas steht oder nicht. Du willst wohl eher \marginline oder \marginpar. Diese setzen die Randnotiz in den nächsten freien Bereich ab der aktuellen Stelle. Wenn man sie im vertikalen Modus anwendet, kann es allerdings passieren, dass die Randnotiz zu früh gesetzt wird. Also ggf. ein \leavevmode davor setzen und unbedingt auf unerwünschte Leerzeichen achten.

Ob Du die \parbox tatsächlich willst oder nicht, kann ich nicht sagen. Wenn Du sie willst, könntest Du die \marginline-Anweisung beispielsweise davor setzen. Da ich nicht genau weiß, was Du willst, hier ein Beispiel, das sowohl die Verwendung mit als auch ohne \parbox zeigt:

\documentclass[%
	DIV=10,
	parskip=full-,%Absatzabstand eine Zeile
%	twoside,%zweiseitig
	fontsize=11pt
	]{scrartcl}
 
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{graphicx}
\usepackage{calc}
 
\begin{document}
 
\blindtext
 
%\parbox[t][1in]{\textwidth}{%
%\marginnote{%
\leavevmode\marginline{%
\raisebox{\ht\strutbox-\totalheight}{\includegraphics[draft,width=1in]{example-image}}}%
\parbox[t]{\textwidth}{%
  Blindtext -- Blindtext\par
  Blindtext -- Wer diesen Text liest, ist selbst schuld.\par
  Blindtext -- Der Text gibt lediglich den Grauwert der Schrift an. Ist das wirklich so?%
}
 
%\parbox{\textwidth}{%
%\parbox[t][1in]{\textwidth}{%
%\marginnote{%
\leavevmode\marginline{%
\raisebox{\ht\strutbox-\totalheight}{\includegraphics[draft,width=1in]{example-image}}}%
Blindtext -- Blindtext\par
Blindtext -- Wer diesen Text liest, ist selbst schuld.\par
Blindtext -- Der Text gibt lediglich den Grauwert der Schrift an. Ist das wirklich so?
 
\blindtext
\blindtext
 
\end{document}

Die \raisebox dient dabei dazu, die Grafik nicht komplett auf/über die aktuelle Grundlinie zu setzen. Das ist eine Standardmethode, wenn eine Grafik mit ihrer Oberkante an der Oberkante der aktuellen Zeile abschließen soll.

Eine weitere Alternative wäre u. U. die Verwendung des experimentellen Paket scrlayer-notecolumn. Das hat eine Kollisionserkennung in der Randspalte. Es ist aber nahezu ungetestet und die Anwendung ist etwas komplizierter, weil man es mit zerbrechlichen Befehlen zu tun bekommt. Außerdem ist dann eben auch wieder eine Eigenschaft, dass man keine volle Kontrolle über die vertikale Position der Randnotizen bekommt:

\documentclass[%
	DIV=10,
	parskip=full-,%Absatzabstand eine Zeile
%	twoside,%zweiseitig
	fontsize=11pt
	]{scrartcl}
 
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{graphicx}
\usepackage{scrlayer-notecolumn}
 
\begin{document}
 
\blindtext
 
%\parbox[t][1in]{\textwidth}{%
%\marginnote{%
\makenote{%
  \strut\protect\raisebox{-\protect\totalheight}{\protect\includegraphics[width=1in]{example-image}}}%
\parbox[t]{\textwidth}{%
  Blindtext -- Blindtext\par
  Blindtext -- Wer diesen Text liest, ist selbst schuld.\par
  Blindtext -- Der Text gibt lediglich den Grauwert der Schrift an. Ist das wirklich so?%
}
 
%\parbox{\textwidth}{%
%\parbox[t][1in]{\textwidth}{%
%\marginnote{%
\makenote{%
  \strut\protect\raisebox{-\protect\totalheight}{\protect\includegraphics[width=1in]{example-image}}}%
Blindtext -- Blindtext\par
Blindtext -- Wer diesen Text liest, ist selbst schuld.\par
Blindtext -- Der Text gibt lediglich den Grauwert der Schrift an. Ist das wirklich so?
 
\blindtext
\blindtext
 
\end{document}

Dafür ist der Effekt innerhalb einer Box vielleicht so, wie Du Dir das vorstellst:

\documentclass[%
	DIV=10,
	parskip=full-,%Absatzabstand eine Zeile
%	twoside,%zweiseitig
	fontsize=11pt
	]{scrartcl}
 
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{graphicx}
\usepackage{scrlayer-notecolumn}
 
\begin{document}
 
\blindtext
 
\parbox{\textwidth}{%
%\marginnote{%
\makenote{%
  \protect\raisebox{-\protect\totalheight}{\protect\includegraphics[width=1in]{example-image}}}%
  Blindtext -- Blindtext\par
  Blindtext -- Wer diesen Text liest, ist selbst schuld.\par
  Blindtext -- Der Text gibt lediglich den Grauwert der Schrift an. Ist das wirklich so?
%\end{tabular}
}
 
\parbox{\textwidth}{%
%\parbox[t][1in]{\textwidth}{
%\marginnote{%
\makenote{%
  \protect\raisebox{-\protect\totalheight}{\protect\includegraphics[width=1in]{example-image}}}%
Blindtext -- Blindtext\par
Blindtext -- Wer diesen Text liest, ist selbst schuld.\par
Blindtext -- Der Text gibt lediglich den Grauwert der Schrift an. Ist das
wirklich so?
}
 
\blindtext
\blindtext
 
\end{document}

Achtung: Bei der Verwendung von scrlayer-notecolumn benötigt man nach Änderung immer mehrere LaTeX-Läufe, bis diese sich auf die Randnotizen auswirken. Siehe auch unbedingt die Anleitung dazu in der KOMA-Script-Anleitung oder im KOMA-Script-Buch.

Anschließend sei noch darauf hingewiesen, dass Du mit dem optionalen Argument von \parbox die Höhe des darin befindlichen Blindtextes bestimmst, nicht die Höhe der Randnotiz. LaTeX ist dann vollkommen egal, ob der Inhalt wirklich so hoch ist. Das siehst Du leicht, wenn Du den Text einmal länger machst, beispielsweise ein \blindtext einfügst. Der überschreibt dann den Text darunter.

Vielen Dank, Deine Beispiele haben mir sehr weitergeholfen.

Ich möchte aber nochmals auf meine Ausgangsfrage zurückkommen (das Beispiel funktioniert jetzt auch ;-): Warm stimmen im Beispiel nur bei der Option twoside die Oberkanten von Grafik und der Textzeile „Blindtext – Blindtext“ überein? Ohne twoside ist „Blindtext – Blindtext“ eine Zeile höher als die Grafik.

Jo

Das liegt an der Overfull \hbox, die wiederum ihre Ursache in den unterschiedlich breiten Rändern und damit den unterschiedlichen Werten für \marginparwidth hat. Es ist immer gefährlich solche Warnungen zu ignorieren.

Ich werde das nächste Mal besser auf die Overfull-\hbox-Meldungen achten ...

Comments for "Vertikale Ausrichtung beim Paket marginnote" abonnieren