Randnotiz (Zeilenumbruch) innerhalb einer Umgebung falsch platziert

Randnotiz (Zeilenumbruch) innerhalb einer Umgebung falsch platziert

Innerhalb einer Umgebung (siehe environ) habe ich marginnoteneben der Umgebungsüberschrift eine platziert. Die Überschrift enthält Text. Wenn dieser Text bis zum Zeilenende reicht (aber auch etwas davor, wie das MWE zeigt), wird die Randnotiz nicht mehr neben der Umgebungsüberschrift platziert (es scheint, als ob in der ein Zeilenumbruch auftritt marginnote). Warum? Und wie kann ich die Umgebung reparieren, um dies zu vermeiden? Ich vermute, dass aus der Umgebungsüberschrift ein zusätzliches Leerzeichen (wo?) generiert wird, das die Randnotiz dann in die nächste Zeile verschiebt.

\documentclass{scrbook}
\usepackage[american]{babel}
\usepackage{amsmath}
\usepackage{marginnote}
\usepackage{hyperref}

% Environment
\newcounter{counter}% environment counter
\numberwithin{counter}{chapter}% number counter within chapters
\makeatletter
\newenvironment{environ}[2][]{\refstepcounter{counter}\par
  \normalfont\topsep6\p@\@plus6\p@\relax
  \trivlist
\item[\hskip\labelsep\sffamily\bfseries MyEnviro~\thecounter\ #1]%
  \marginnote{OtherEnviro p.~\pageref{#2}}\ignorespaces
}{%
  \endtrivlist\@endpefalse
}
\makeatother

\begin{document}
\chapter{That's the problem}

\begin{environ}[(Some text which covers the amount of space to show the problem)]{foobar}\\
  This seems odd (vertical space, wrong placement 'OtherEnviro') because the line
  is actually not ending there.
\end{environ}

\begin{environ}[(Some shorter text to show that there's no problem here)]{foobar}\\
  This is okay
\end{environ}
\end{document}

Antwort1

\marginnotefügt eine unsichtbare Box hinzu, etwa wie \mbox{}. Die Trennung ( \labelsep) nach der \itemAddition mit \mbox{}ergibt die leere Zeile. BTW: Ohne diese Box \\würde Ihr Ergebnis einLaTeX Error: There's no line here to end.

Um das Problem zu vermeiden, setzen Sie es \labelsepauf 0pt und fügen Sie es (optional) \\der Umgebungsdefinition hinzu.

\documentclass{scrbook}
\usepackage[american]{babel}
\usepackage{amsmath}
\usepackage{marginnote}
\usepackage{hyperref}

% Environment
\newcounter{counter}% environment counter
\numberwithin{counter}{chapter}% number counter within chapters
\makeatletter
\newenvironment{environ}[2][]{\refstepcounter{counter}\par
  \normalfont\topsep6\p@\@plus6\p@\relax
  \trivlist
  \labelsep 0pt
\item[\hskip\labelsep\sffamily\bfseries MyEnviro~\thecounter\ #1]%
  \marginnote{OtherEnviro p.~\pageref{#2}}\\*
  \ignorespaces
}{%
  \endtrivlist\@endpefalse
}
\makeatother

\begin{document}
\chapter{That's the problem}

\begin{environ}[(Some text which covers the amount of space to show the problem)]{foobar}
  This seems odd (vertical space, wrong placement 'OtherEnviro') because the line
  is actually not ending there.
\end{environ}

\begin{environ}[(Some shorter text to show that there's no problem here)]{foobar}
  This is okay
\end{environ}
\end{document}

Bildbeschreibung hier eingeben

Ich habe \\*anstelle von verwendet, \\um Seitenumbrüche unmittelbar nach demÜberschrift.

verwandte Informationen