
Eu gostaria de usar listagens para formatar comandos bash de forma que linhas muito longas sejam automaticamente quebradas com uma barra invertida. Eu conheço a prebreak
opção, mas parece que é impossível passar uma barra invertida literal para prebreak
.
Eu aprendi comesta respostaque eu poderia especificar barras invertidas com \textbackslash
, mas usá-lo produz a seguinte mensagem de aviso:
LaTeX Font Warning: Font shape `OMS/cmtt/m/n' undefined
(Font) using `OMS/cmsy/m/n' instead for symbol `textbackslash' on input line 8.
Embora isso ainda permita a compilação de documentos, parece que \textbackslash
de alguma forma evita a formatação de acordo com a basicstyle
opção. Como pode ser visto no exemplo abaixo, as listagens são perfeitamente capazes de estilizar corretamente as barras invertidas inseridas manualmente.
É possível fazer com que as listagens quebrem automaticamente linhas longas com uma barra invertida com estilo correto?
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{listings}
\begin{document}
% Automatic line break
\begin{lstlisting}[basicstyle=\ttfamily,breaklines,breakatwhitespace,prebreak={\textbackslash}]
long string of text to test line breaking for the listings package
\end{lstlisting}
% Manual line break
\begin{lstlisting}[basicstyle=\ttfamily,breaklines,breakatwhitespace]
long string of text to test line breaking for the \
listings package
\end{lstlisting}
\end{document}
Responder1
Encontrei duas respostas para minha pergunta, ambas permitindo que barras invertidas sejam estilizadas corretamente quando usadas para quebra automática de linha com listagens:
acampamentosugestãode add
\usepackage[T1]{fontenc}
ao preâmbulo corrige o problema de estilo quando\textbackslash
é usado para aprebreak
opção.Uma solução alternativa foi encontrada ema questãoque eu havia vinculado em minha própria pergunta. Embora esta questão diga respeito ao símbolo de retorno, o código de exemplo fornecido inclui um método diferente de especificar barras invertidas com
\char`\\
. Acontece que a configuraçãoprebreak
with\char`\\
resulta em uma barra invertida com estilo correto, sem a necessidade de usar\usepackage[T1]{fontenc}
.
Foi muito útil aprender sobre \char
, pois espero que possa ser necessário passar caracteres especiais para opções em circunstâncias futuras. Entretanto, para esta situação específica e para escrever com LaTeX em geral, acho que continuarei usando \usepackage[T1]{fontenc}
devido aos benefícios descritos emesta resposta.