
Я хочу записать некоторые символы unicode в lstlisting
среду, но они отображаются в строке вывода, что не то, что я ожидаю. Как мне заставить их работать как стандартные символы? Спасибо.
\documentclass{article}
\usepackage{fontspec}
\setmonofont{Consolas}
\usepackage{listings}
\lstset{
basicstyle=\ttfamily
}
\begin{document}
\begin{lstlisting}
└
└
└
\end{lstlisting}
\end{document}
решение1
Извините, если вы посчитаете мой ответ неуместным, но, поработав некоторое время с вашим кодом, я нашел самый простой вариант — перейти с lstlisting
пакета на minted
.
Почему minted
?
Плюсы:
- Отлично работает с pdflatex, xelatex и т. д.
- Поддерживает гораздо больше языков для выделения, чем
lstlisting
- Иногда выполняет выделение выглядит лучше
- Никаких проблем с символами UTF-8 из коробки.
Минусы:
- Требуется дополнительное программное обеспечение (хотя его установка занимает 2–5 минут)
- Необходимо отредактировать флаги команды компиляции (еще 30 секунд)
Хорошей новостью является то, чтодополнительное программное обеспечениеВыше упоминается Python, который, скорее всего, будет поставляться с вашей системой, если вы используете OS X или любой популярный дистрибутив Linux, а также его пакет Pygments, который можно установить с помощью одной строки в оболочке.
Вы можете направиться вminted
руководствои проверьте раздел 2.1, инструкции очень короткие и информативные.
Также вам нужно проверить настройки вашего редактора TeX и изменить что-то вроде
/Library/tex/texbin/xelatex -synctex=1 %.tex
добавляем -shell-escape
флаг, теперь это выглядит примерно так
/Library/tex/texbin/xelatex -shell-escape -synctex=1 %.tex
Это необходимо для того, чтобы XeLaTeX мог вызывать что-то за пределами своей «песочницы» (в нашем случае — вызывать Python).
После этих шагов вы готовы к использованию minted
. Никакой настройки больше не потребуется.
Теперь ваш MWE, адаптированный для minted
:
\documentclass{article}
\usepackage{fontspec}
\setmonofont{Consolas}
\usepackage{minted}
\begin{document}
\begin{minted}{text}
└
└
└
\end{minted}
\end{document}
Обратите внимание на опцию {text}
— она позволяет указать язык (в нашем случае — обычный текст).
И вот результат:
P.S. Я никогда раньше не работал с minted
, но пытаясь решить вашу проблему, я потратил более 40 минут на игру lstlisting
и всего 2 минуты на установку и привыкание minted
, так что попробовать определенно стоит.