
Definí un nuevo entorno, similar (pero no igual) a listings
:
\documentclass{ltxdoc}
\usepackage{lipsum}
\newenvironment{lines}
{\par\begingroup\nobreak
\vspace{3pt}\parindent0pt\hrule\kern5pt
\nobreak\obeylines\everypar{\strut}\endgroup}
{\par\begingroup\nobreak
\vspace{3pt}\parindent0pt\hrule\kern5pt
\nobreak\obeylines\everypar{\strut}\endgroup%
\noindent%
}
\begin{document}
\lipsum[1]
\begin{lines}
Some nifty code and stuffz
\end{lines}
\lipsum[2]
\end{document}
¿Por qué dejo \noindent
un pequeño espacio antes del texto? ¿Me he perdido algo?
Respuesta1
Si lo usa, \noindent
casi siempre obtendrá este comportamiento. El espacio es un espacio entre palabras que se escribe desde el final de la línea después del entorno.
Puedes evitar el problema usando \ignorespacesafterend
papel para tapar las grietas. El error es usar \noindent
cuál ha iniciado el modo horizontal prematuramente y es por eso que el final de la línea está escrito como un espacio. Los entornos LaTeX nunca hacen esto. Debe definir el entorno usando, trivlist
entonces el entorno terminará en modo vertical, pero si no hay una línea en blanco después, se suprimirá la sangría (en realidad se elimina usando \lastbox
en lugar de no agregarse usando \noindent
).
Algo como esto, ajusta las longitudes a tu medida.
\documentclass{ltxdoc}
\usepackage{lipsum}
\newenvironment{linez}
{\trivlist\nopagebreak
\parindent0pt
\vspace{3pt}%
\hrule
\vspace{-3pt}%
\item\relax\obeylines}
{\par
\nopagebreak
\vspace{3pt}%
\hrule
\vspace{3pt}%
\endtrivlist}
\begin{document}
\lipsum[1]
\begin{linez}
Some nifty code and stuffz
Some nifty code and stuffz
Some nifty code and stuffz
Some nifty code and stuffz
\end{linez}
\lipsum[2]
\end{document}
Respuesta2
Te falta \ignorespacesafterend
, pero la definición no sirve \obeylines
, porque la estás encerrando en un grupo y su efecto desaparece en \endgroup
:
\documentclass{ltxdoc}
\usepackage{lipsum}
\newenvironment{linez}
{\par\nopagebreak
\vspace{3pt}
\parindent0pt
\hrule\kern5pt
\obeylines}
{\par
\nopagebreak
\vspace{3pt}
\hrule\kern5pt
\noindent\ignorespacesafterend}
\begin{document}
\lipsum[1]
\begin{linez}
Some nifty code and stuffz
Some nifty code and stuffz
Some nifty code and stuffz
Some nifty code and stuffz
\end{linez}
\lipsum[2]
\end{document}