
Я хотел бы использовать листинги для форматирования команд 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}
решение1
Я нашел два ответа на свой вопрос, оба из которых позволяют правильно оформлять обратные косые черты при их использовании для автоматического переноса строк в списках:
Кампапредположениедобавления
\usepackage[T1]{fontenc}
в преамбулу устраняет проблему со стилем при\textbackslash
использовании дляprebreak
параметра.Альтернативное решение было найдено ввопросна который я ссылался в своем собственном вопросе. Хотя этот вопрос касался символа возврата, предоставленный ими пример кода включает другой метод указания обратных косых черт с помощью
\char`\\
. Оказывается, что настройкаprebreak
с\char`\\
приводит к правильно оформленной обратной косой черте, без необходимости использования\usepackage[T1]{fontenc}
.
Было очень полезно узнать о \char
, так как я ожидаю, что это может понадобиться для передачи специальных символов в параметры в будущих обстоятельствах. Однако для этой конкретной ситуации и для письма с помощью LaTeX в целом, я думаю, что я буду придерживаться использования\usepackage[T1]{fontenc}
из-за преимуществ, описанных вэтот ответ.