¿Cómo agrego un borde en la parte superior e inferior en lstset para el código?

¿Cómo agrego un borde en la parte superior e inferior en lstset para el código?

Quiero tener un borde en la parte superior e inferior de mi código. Intenté configurarlo lstsetde la siguiente manera:

\lstset{frame=topline|bottomline}

Sin embargo, simplemente eliminó el borde del lado derecho y mantuvo todos los bordes intactos. Cuando lo intenté:

\lstset{frame=topline}

Mantuvo correctamente el borde superior eliminando todos los demás.

De manera similar, cuando probé:

\lstset{frame=bottomline}

Mantuvo correctamente el borde inferior eliminando todos los demás.

¿Cómo puedo combinar dos?

Respuesta1

Según la documentación, la frameclave acepta los siguientes valores:

none,

leftline,

topline,

bottomline,

lines(arriba y abajo),

singlepara marcos individuales,

shadowbox.

(Consulte la sección "2.7 Elementos de diseño" en la página 18 de la listingsversión 1.8d de la documentación).

Para obtener una línea superior e inferior, puede utilizar la linesclave incorporada de la siguiente manera:

\lstset{frame=lines}

Además de los 7 estilos predefinidos mencionados anteriormente, también puede ajustar las líneas alrededor de la lista usando una combinación de t, l, ry b para líneas simples o las versiones en mayúsculas para líneas dobles.

Por tanto, una sola línea encima y debajo del listado correspondería a:

\lstset{frame=tb}

Respuesta2

Según el manual (página 36) tienes que especificar múltiples opciones con caracteres únicos:

\documentclass{article}
\usepackage{listings}

\begin{document}
\lstset{language=Pascal}

\begin{lstlisting}[frame=tb] 
  for i:=maxint to 0 do
  begin
    { do nothing } 
  end;
\end{lstlisting}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada