Diese Frage entwickelte sich ausWie geht man mit sehr langen Lstinline-Phrasen wie langen Klassennamen um?.
Diese Frage betrifft den Zeilenumbruch innerhalb einer \lstinline
Phrase. Ich habe eine Antwort bereitgestellt, die Großbuchstaben automatisch trennt, und dann habe ich in einem Kommentar festgestellt, dass es manchmal nützlich sein kann, _
auch Unterstriche automatisch zu trennen.
Ich habe es geschafft, dies zu implementieren, aber ein Problem bleibt bestehen: Ich möchte die automatische _
Silbentrennung am Anfang des Namens verhindern (in Python ist dies beispielsweise eine häufige Situation, da interne Namen per Konvention mit einem (oder zwei) Unterstrichen beginnen).
\documentclass{article}
\usepackage[paperwidth=10cm,paperheight=5cm]{geometry}
\pagestyle{empty}
\usepackage{lstdoc}
\lstMakeShortInline[literate={\_}{\_}{1\discretionary{\_}{}{}}]|
\begin{document}
\textbf{Good line break:} in this paragraph the line break in the
python's variable |a_python_style_name| is good!
\textbf{Bad line break:} the internal variable |_internal_python_name|
is not hyphenated very nicely in this paragraph.
\end{document}
Antwort1
Umgehen Sie das \discretionary
Einfügen, indem Sie nur für den Anfang etwas anderes einfügen. Hier sind einige Optionen:
\documentclass{article}
\usepackage[paperwidth=10cm,paperheight=8cm]{geometry}
\pagestyle{empty}
\usepackage{lstdoc}
\lstset{mathescape=true}
\lstMakeShortInline[literate={\_}{\_}{1\discretionary{\_}{}{}} {~}{\_}{1}]|
\newcommand{\preunderscore}{\_}
\begin{document}
\textbf{Good line break:} in this paragraph the line break in the
python's variable |a_python_style_name| is good!
\textbf{Bad line break:} the internal variable |_internal_python_name|\par
|_internal_python_name|
\textbf{Bad line break:} the internal variable |~internal_python_name|\par
|~internal_python_name|
\textbf{Bad line break:} the internal variable |$\preunderscore$internal_python_name|\par
|$\preunderscore$internal_python_name|
\end{document}
Mit mathescape
können Sie anstelle eines literate
Ersatzes für ein Makro einfügen _
. Alternativ können Sie auch ein anderes literate
Zeichen für den Anfang verwenden. Es gibt Unterschiede bei den Abständen.