titulos titulo subtitulos portada maketitle error latex

subtitulos - titulo en latex



¿Cómo marcar la rotura de líneas de líneas largas? (2)

Tengo un código de látex similar al siguiente:

/usepackage{listings} /lstset{ breaklines = true, numbers = left, stepnumber = 5, } /begin{lstlisting} for (int i = 0, j = 0, k = 1; i <= 10, j < foo; i++, j *= factor, k--) { // a comment here % something code here ... } /end{lstlisting}

La línea larga con el bucle for se rompe automáticamente en algún punto intermedio porque el papel es demasiado estrecho. Eso es justo lo que quiero, de lo contrario, la línea desaparecerá al final del documento. Pero ahora mi pregunta es si hay una manera de marcar o indicar que esta línea se rompió. De lo contrario, parece que se creó una nueva línea.

Algo así es lo que quiero (con números de línea, note la flecha):

10 for (int i = 0, j = 0, k = 1; i <= 10, j < foo; ↳ i++, j *= factor, k--) { // a comment here 11 % something code here ...


Al parecer, esto se puede lograr con las opciones prebreak / postbreak . Consulte la documentación del paquete de listings , enlazada desde su página CTAN (se encuentra en la parte inferior de la página 33 y la parte superior de la página 34 en el pdf).

Edición: un enlace directo al manual del paquete de listados . Además, creo que puedo reproducir el bit relevante aquí, así que aquí va:

prebreak=<tokens> (default {}) postbreak=<tokens> (default {})

<tokens> aparecen al final de la línea actual, respectivamente, al principio de la línea siguiente (parte rota).

No debe usar espacio dinámico (en espacios particulares) ya que internamente usamos //discretionary . Sin embargo, //space se redefine para ser usado dentro de <tokens> .

Edición 2: En cuanto a la ubicación del marcador de breakindent de 0pt , se puede lograr algo parecido a la apariencia del ejemplo proporcionado en la pregunta estableciendo breakindent a 0pt , breakautoindent a false y rellenando el marcador con la mano, por ejemplo, con //space .

Por ejemplo, use postbreak={/textbf{marker}//space//space//space//space} para un buen tipo de marcador en negrita donde normalmente comience una nueva línea, luego cuatro espacios, luego el contenido restante de la quebrada línea. Estas opciones se documentan justo después del prebreak / postbreak en el manual de los listings . :-)


Configure los listados de la siguiente manera:

/lstset{prebreak=/raisebox{0ex}[0ex][0ex] {/ensuremath{/rhookswarrow}}} /lstset{postbreak=/raisebox{0ex}[0ex][0ex] {/ensuremath{/rcurvearrowse/space}}} /lstset{breaklines=true, breakatwhitespace=true} /lstset{numbers=left, numberstyle=/scriptsize}

Ejemplo de código fuente en el documento:

/begin{lstlisting}[language=C++, numbers=left, linewidth=5.1cm] if (line.length() > line.max_length()) { line.wrap(); } /end{lstlisting}

Resultado de ejemplo:

Nota: tienes que /usepackage{MnSymbol} para poder usar /rhookswarrow y /rcurvearrowse . Para evitar la dependencia adicional, puede usar /hookrightarrow y /hookleftarrow que se incluyen en los paquetes predeterminados.

Fuente: http://www.bollchen.de/blog/2011/04/good-looking-line-breaks-with-the-listings-package/ . Lea allí para una explicación más detallada. También pdf .