Автоматический перенос строки с помощью обратной косой черты в листингах

Автоматический перенос строки с помощью обратной косой черты в листингах

Я хотел бы использовать листинги для форматирования команд bash таким образом, чтобы слишком длинные строки автоматически прерывались обратной косой чертой. Я знаю об этой prebreakопции, но, похоже, невозможно передать буквальный символ обратной косой черты в prebreak.

Я узнал отэтот ответЯ мог бы указать обратные косые черты с помощью \textbackslash, но его использование приводит к следующему предупреждающему сообщению:

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

Хотя это все еще позволяет компилировать документ, похоже, что \textbackslashкаким-то образом избегает форматирования в соответствии с basicstyleопцией. Как видно из примера ниже, listings прекрасно справляется с правильным оформлением обратных косых черт, которые вводятся вручную.

Можно ли сделать так, чтобы списки автоматически разбивали длинные строки с помощью обратного слеша, оформленного правильно?

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

Скриншот вывода вышеприведенного кода Latex, демонстрирующий визуальную разницу в обратных слешах

решение1

Я нашел два ответа на свой вопрос, оба из которых позволяют правильно оформлять обратные косые черты при их использовании для автоматического переноса строк в списках:

  • Кампапредположениедобавления \usepackage[T1]{fontenc}в преамбулу устраняет проблему со стилем при \textbackslashиспользовании для prebreakпараметра.

  • Альтернативное решение было найдено ввопросна который я ссылался в своем собственном вопросе. Хотя этот вопрос касался символа возврата, предоставленный ими пример кода включает другой метод указания обратных косых черт с помощью \char`\\. Оказывается, что настройка prebreakс \char`\\приводит к правильно оформленной обратной косой черте, без необходимости использования \usepackage[T1]{fontenc}.

Было очень полезно узнать о \char, так как я ожидаю, что это может понадобиться для передачи специальных символов в параметры в будущих обстоятельствах. Однако для этой конкретной ситуации и для письма с помощью LaTeX в целом, я думаю, что я буду придерживаться использования\usepackage[T1]{fontenc} из-за преимуществ, описанных вэтот ответ.

Связанный контент