Automatischer Zeilenumbruch mit Backslash in Listings

Automatischer Zeilenumbruch mit Backslash in Listings

Ich möchte Listings verwenden, um Bash-Befehle so zu formatieren, dass zu lange Zeilen automatisch mit einem Backslash umbrochen werden. Ich kenne die prebreakOption, aber es scheint unmöglich zu sein, einen wörtlichen Backslash an zu übergeben prebreak.

Ich habe gelernt vondiese Antwortdass ich mit Backslashes angeben könnte \textbackslash, die Verwendung jedoch die folgende Warnmeldung erzeugt:

LaTeX Font Warning: Font shape `OMS/cmtt/m/n' undefined
(Font) using `OMS/cmsy/m/n' instead for symbol `textbackslash' on input line 8.

Dies ermöglicht zwar immer noch die Dokumentkompilierung, es sieht jedoch so aus, als würde die \textbackslashFormatierung gemäß der basicstyleOption irgendwie vermieden. Wie im folgenden Beispiel zu sehen ist, ist Listings durchaus in der Lage, manuell eingegebene Backslashs korrekt zu formatieren.

Ist es möglich, lange Zeilen in Listen automatisch durch einen korrekt formatierten Backslash zu unterbrechen?

\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}

Screenshot der Ausgabe des obigen Latex-Codes, der den visuellen Unterschied bei Backslashes demonstriert

Antwort1

Ich habe zwei Antworten auf meine Frage gefunden, die beide eine korrekte Formatierung von Backslashes für den automatischen Zeilenumbruch bei Auflistungen ermöglichen:

  • CampasAnregungDas Hinzufügen \usepackage[T1]{fontenc}zur Präambel behebt das Stilproblem, wenn \textbackslashfür die Option verwendet wird prebreak.

  • Eine alternative Lösung wurde indie Frageauf die ich in meiner eigenen Frage verwiesen hatte. Obwohl diese Frage das Return-Symbol betraf, enthält der von ihnen bereitgestellte Beispielcode eine andere Methode zum Angeben von Backslashs mit \char`\\. Es stellt sich heraus, dass das Festlegen prebreakmit \char`\\zu einem korrekt formatierten Backslash führt, ohne dass verwendet werden muss \usepackage[T1]{fontenc}.

Es war sehr hilfreich, etwas über zu erfahren \char, da ich davon ausgehe, dass es in Zukunft notwendig sein könnte, Sonderzeichen an Optionen zu übergeben. Für diese spezielle Situation und für das Schreiben mit LaTeX im Allgemeinen werde ich jedoch wohl bei der Verwendung von bleiben, \usepackage[T1]{fontenc}da die in beschriebenen Vorteilediese Antwort.

verwandte Informationen