
Como posso suprimir uma nova linha que será inserida posteriormente por uma macro? Existe algum comando que desativa as novas linhas exatamente uma vez e as ativa novamente após a que foi ignorada?
Como ignorar que a macro a seguir começa criando um novo parágrafo antes de escrever o texto.
Assim, apenas o texto será impresso, mas não o avanço de linha que inicia o parágrafo. Esse comando é possível?
Conforme solicitado, um exemplo:
escreve: "primeiros espaços de quebra de linha foo"
queria: "primeiros espaços foo"
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{enumitem}
\begin{document}
\begin{itemize}
\item[]{first} \begin{verbatim} foo
bar
\end{verbatim} \item[] {second} more text
\end{itemize}
\end{document}
Responder1
O caso de verbatim
é “complicado”: por padrão este ambiente emite um comando de quebra de linha e digita seu conteúdo em todo o comprimento da linha (levando em consideração, aqui, que está em uma lista).
Você pode usar recursos fancyvrb
para boxear o ambiente literal:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{enumitem}
\usepackage{fancyvrb}
\begin{document}
\begin{itemize}
\item[first]
\begin{BVerbatim}[baseline=t]
foo
bar
\end{BVerbatim}
\item[second] more text
\end{itemize}
\end{document}
Observe que você não deve recuar o conteúdo de um ambiente literal, a menos que queira uma saída recuada.
Seu uso \item[] {first}
é duvidoso: o comando \item
possui apenas um argumento opcional e nenhum obrigatório, então você obtém exatamente a mesma saída que
\item[] first
Coloquei first
como argumento opcional; faça como preferir. Se você quer um labelless itemize
, é mais fácil dizer
\begin{itemize}[label={}]
e simplesmente use \item
, já que você está usando enumitem
.
Aqui está a lista modificada, sem rótulo:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{enumitem}
\usepackage{fancyvrb}
\begin{document}
\begin{itemize}[label={}]
\item first
\begin{BVerbatim}[baseline=t]
foo
bar
\end{BVerbatim}
\item second more text
\end{itemize}
\end{document}