
我想lstlisting
在環境中寫入一些 unicode 字符,但它們在輸出中內聯顯示,這不是我所期望的。我怎麼才能讓它像標準字元一樣工作?謝謝。
\documentclass{article}
\usepackage{fontspec}
\setmonofont{Consolas}
\usepackage{listings}
\lstset{
basicstyle=\ttfamily
}
\begin{document}
\begin{lstlisting}
└
└
└
\end{lstlisting}
\end{document}
答案1
如果您發現我的答案不合適,我很抱歉,但是在使用您的程式碼一段時間後,我發現最簡單的變體是從lstlisting
package 切換到minted
.
為什麼minted
?
優點:
- 與 pdflatex、xelatex 等配合良好
- 支援更多的語言來突出顯示,比
lstlisting
- 有時執行突出顯示看起來更好
- 開箱即用的 UTF-8 字元沒有問題
缺點:
- 需要額外的軟體(儘管安裝需要 2-5 分鐘)
- 需要編輯編譯命令標誌(另外 30 秒)
好消息是附加軟體上面提到的是 Python,如果您使用 OS X 或任何流行的 Linux 發行版,它可能會隨您的系統附帶,以及它的套件 Pygments,可以在 shell 中透過一行安裝。
您可以前往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}
- 它用於指定語言(在我們的例子中為純文字)。
結果:
PS 我以前從未使用過minted
,但為了解決你的問題我花了 40 多分鐘來玩lstlisting
,只花了 2 分鐘安裝和習慣minted
,所以它絕對值得一試。