
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 \ttfamily
Schriftart 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 \hbox
weil der Text die Box-Grenzen nicht strikt einhält. Wenn ich die zweite Seite \BODY
in 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 \RaggedRight
aus dem ragged2e
Paket 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 \hyphenchar
besteht darin, die Standardeinstellung „keine Silbentrennung“ in der Schreibmaschinenschriftart wiederherzustellen (solche Zuweisungen sind immer global).
Zur Unterbringung varwidth
muss die richtige Linienbreite angegeben werden, hierfür sind natürlich die Pakete environ
und 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=10000
schalten Sie unerwünschte Underfull \hbox
Nachrichten ab.