Esta pregunta se desarrolló a partir de¿Cómo lidiar con frases lstinline muy largas, como nombres de clases largos?.
Esa pregunta es sobre el salto de línea dentro de una \lstinline
frase. Proporcioné una respuesta que separa automáticamente las letras mayúsculas y luego, en un comentario, me di cuenta de que a veces _
también podría ser útil tener una separación automática de los guiones bajos.
Logré implementar esto, pero persiste un problema: me gustaría evitar la separación automática _
de guiones al comienzo del nombre (en Python, por ejemplo, esta es una situación común, ya que por convención, los nombres internos comienzan con un guión bajo (o dos). )).
\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}
Respuesta1
Evite la \discretionary
inserción insertando algo más sólo para empezar. Aquí hay algunas opciones:
\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}
Con mathescape
puede insertar una macro en lugar de un literate
reemplazo para _
. Alternativamente, use un literate
personaje diferente para comenzar. Hay diferencias en el espaciado.