Farbfelder, die sich über mehrere Seiten erstrecken

Farbfelder, die sich über mehrere Seiten erstrecken

Ich versuche, eine Umgebung/einen Befehl zu erstellen, mit dem ich Kommentare in den Text einfügen kann. Die Idee ist, ein farbiges Feld zu haben, das sich über mehrere Seiten erstrecken kann und die \ttfamilySchriftart mit Silbentrennung verwendet. Ich möchte darin auch jede beliebige Struktur (Tabelle, Aufzählung, Einzelaufstellung usw.) verwenden. Darüber hinaus ist die Feldbreite variabel und das Maximum beträgt \linewidth. Mein MWE ist unten.

\documentclass{article} 

\usepackage{blindtext}
\usepackage[showframe]{geometry}

\usepackage{xcolor}
\usepackage{calc}
\usepackage{mdframed}
\usepackage{environ,varwidth}
\newsavebox\MyTempBox
\NewEnviron{mycomment}{%
\savebox\MyTempBox{%
\begin{varwidth}{\linewidth}
\BODY
\end{varwidth}}%
\begin{mdframed}
[topline=false,
rightline=false,
bottomline=false,
leftline=false,
innerleftmargin=1ex,
innerrightmargin=1ex,
innertopmargin=1ex,
innerbottommargin=1ex,
backgroundcolor=pink,
font=\ttfamily,
userdefinedwidth=\dimexpr\wd\MyTempBox\relax
]
\hyphenchar\font=\defaulthyphenchar\relax
\BODY
\end{mdframed}%
}%

\begin{document}

\begin{mycomment}
\blindtext
\blindtext
\blindtext
\blindtext
\blindtext
\blindtext
\end{mycomment}

\end{document}

Bisher funktioniert es fast, das Problem ist, dass es viel erzeugt, Overfull \hboxweil der Text die Box-Grenzen nicht strikt einhält. Wenn ich die zweite Seite \BODYin eine Miniseite platziere

\begin{minipage}{\linewidth}
\BODY
\end{minipage}

Das funktioniert besser, aber ich verliere die Funktion zum Umbrechen über Seiten. Ich denke, dass eine Miniseite, die über Seiten umbrechen kann, die Lösung sein könnte.

Ich bin nicht an das mdframed-Paket gebunden. Beispielsweise

\newcommand{\ccomment}[1]{%
\noindent\colorbox{pink}{\begin{varwidth}{\linewidth-1em}%
\ttfamily
\hyphenchar\font=\defaulthyphenchar\relax % enable hyphenation
#1
\end{varwidth}}}

Für mich wäre das ok, aber ich kann es wiederum nicht für lange Texte verwenden, die sich über mehrere Seiten erstrecken könnten.

Danke.

Antwort1

Ich würde einfach \RaggedRightaus dem ragged2ePaket verwenden:

\documentclass{article}

\usepackage{blindtext}
\usepackage[showframe]{geometry}
\usepackage{xcolor}
\usepackage{ragged2e}
\usepackage{mdframed}

\newenvironment{mycomment}
  {\begin{mdframed}[topline=false,
    rightline=false,
    bottomline=false,
    leftline=false,
    innerleftmargin=1ex,
    innerrightmargin=1ex,
    innertopmargin=1ex,
    innerbottommargin=1ex,
    backgroundcolor=pink,
    font=\ttfamily,
   ]\hyphenchar\font=\defaulthyphenchar\RaggedRight}
  {\end{mdframed}\ttfamily\hyphenchar\font=-1 }

\begin{document}

\begin{mycomment}
\blindtext
\blindtext
\blindtext
\blindtext
\blindtext
\blindtext
\end{mycomment}

\end{document}

Die letzte Einstellung \hyphencharbesteht darin, die Standardeinstellung „keine Silbentrennung“ in der Schreibmaschinenschriftart wiederherzustellen (solche Zuweisungen sind immer global).


Zur Unterbringung varwidthmuss die richtige Linienbreite angegeben werden, hierfür sind natürlich die Pakete environund erforderlich varwidth.

\NewEnviron{mycomment}
  {\sbox0{\ttfamily\hbadness=10000
   \begin{varwidth}{\dimexpr\linewidth-2ex\relax}
   \BODY
   \end{varwidth}}%
   \begin{mdframed}[topline=false,
    rightline=false,
    bottomline=false,
    leftline=false,
    innerleftmargin=1ex,
    innerrightmargin=1ex,
    innertopmargin=1ex,
    innerbottommargin=1ex,
    backgroundcolor=pink,
    font=\ttfamily,
    userdefinedwidth=\dimexpr\wd0+2ex\relax
   ]\hyphenchar\font=\defaulthyphenchar\RaggedRight\BODY
   \end{mdframed}\ttfamily\hyphenchar\font=-1 }

Mit \hbadness=10000schalten Sie unerwünschte Underfull \hboxNachrichten ab.

verwandte Informationen