Quebra automática de linha com barra invertida nas listagens

Quebra automática de linha com barra invertida nas listagens

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 prebreakopçã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 \textbackslashde alguma forma evita a formatação de acordo com a basicstyleopçã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}

Captura de tela da saída do código látex acima, demonstrando a diferença visual nas barras invertidas

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 a prebreakopçã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ção prebreakwith \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.

informação relacionada