列表和 unicode 字符

列表和 unicode 字符

我想lstlisting在環境中寫入一些 unicode 字符,但它們在輸出中內聯顯示,這不是我所期望的。我怎麼才能讓它像標準字元一樣工作?謝謝。

\documentclass{article}

\usepackage{fontspec}
\setmonofont{Consolas}

\usepackage{listings}
\lstset{
    basicstyle=\ttfamily
}

\begin{document}
    \begin{lstlisting}
    \end{lstlisting}    
\end{document}

答案1

如果您發現我的答案不合適,我很抱歉,但是在使用您的程式碼一段時間後,我發現最簡單的變體是從lstlistingpackage 切換到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,所以它絕對值得一試。

相關內容