Verhindern von Zeilenumbrüchen am Anfang eines langen Namens in `\lstinline`

Verhindern von Zeilenumbrüchen am Anfang eines langen Namens in `\lstinline`

Diese Frage entwickelte sich ausWie geht man mit sehr langen Lstinline-Phrasen wie langen Klassennamen um?.

Diese Frage betrifft den Zeilenumbruch innerhalb einer \lstinlinePhrase. 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}

Ein guter und ein schlechter Zeilenumbruch in <code>\listinline</code>

Antwort1

Umgehen Sie das \discretionaryEinfügen, indem Sie nur für den Anfang etwas anderes einfügen. Hier sind einige Optionen:

Bildbeschreibung hier eingeben

\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 mathescapekönnen Sie anstelle eines literateErsatzes für ein Makro einfügen _. Alternativ können Sie auch ein anderes literateZeichen für den Anfang verwenden. Es gibt Unterschiede bei den Abständen.

verwandte Informationen