
Eu defini um novo ambiente, semelhante (mas não 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 que mantenho \noindent
um pequeno espaço antes do texto? Perdi algo?
Responder1
Se você usar, \noindent
quase sempre terá esse comportamento. O espaço é um espaço entre palavras sendo composto a partir do final da linha após o ambiente.
Você pode evitar o problema usando, \ignorespacesafterend
mas isso é tapar as rachaduras. O erro é usar \noindent
o qual iniciou o modo horizontal prematuramente e é por isso que o final da linha é escrito como um espaço. Ambientes LaTeX nunca fazem isso. Você deve definir o ambiente usando trivlist
então o ambiente terminará no modo vertical, mas se nenhuma linha em branco seguir o recuo será suprimido (na verdade, ele é removido usando \lastbox
em vez de não ser adicionado usando \noindent
).
Algo assim, ajuste os comprimentos de acordo.
\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}
Responder2
Você está faltando \ignorespacesafterend
, mas a definição não funciona \obeylines
, porque você a coloca em um grupo e seu efeito desaparece em \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}