verbatim
我有一个关于和的问题listings
。我需要使用泰语字体编写一些代码,但它显示在图片中
\documentclass[12pt,a4paper,oneside]{book}
\usepackage{verbatim}
\usepackage{listings}
\usepackage{xltxtra}
\usepackage{fontspec}
\usepackage{xunicode}
\defaultfontfeatures{Mapping=tex-text}
\XeTeXlinebreaklocale "th_TH"
\XeTeXlinebreakpenalty=100
\XeTeXlinebreakskip=0pt plus 1pt
\setmainfont[Scale=1.4]{TH SarabunPSK} % Thai Font
\begin{document}
\begin{verbatim}
\begin{enumerate}
\item one หนึ่ง
\item two สอง
\end{enumerate}
\end{verbatim}
\begin{lstlisting}
\begin{enumerate}
\item one หนึ่ง
\item two สอง
\end{enumerate}
\end{lstlisting}
\end{document}
但我希望获得像这样的代码lstlisting
,但字体却像这样verbatim
。如何改进它。
答案1
这里有一个解决方案,我认为它会在您的情况下成功(我没有泰语字体),您可以显示泰语字体,使用escapeinside
它在它们之间定义两个符号,您可以插入您的文本。
代码
\documentclass[12pt,a4paper,oneside]{book}
\usepackage{verbatim}
\usepackage{listings}
\usepackage{xltxtra}
\usepackage{fontspec}
\usepackage{xunicode}
\defaultfontfeatures{Mapping=tex-text}
\XeTeXlinebreaklocale "th_TH"
\XeTeXlinebreakpenalty=100
\XeTeXlinebreakskip=0pt plus 1pt
\setmainfont[Scale=1.4]{TH SarabunPSK} % Thai Font
\newfontfamily\thaifont{TH SarabunPSK}
\lstset{basicstyle=\ttfamily, escapeinside={*}{*}}
\begin{document}
\begin{verbatim}
\begin{enumerate}
\item one หนึ่ง
\item two สอง
\end{enumerate}
\end{verbatim}
\begin{lstlisting}
\begin{enumerate}
\item one *\thaifont{หนึ่ง}*
\item two *\thaifont{สอง}*
\end{enumerate}
\end{lstlisting}
\end{document}
答案2
我猜想泰语没有打字机字体。您可以尝试 Code2000 字体,它当然不是打字机字体,但包含所有字符:
\documentclass[12pt,a4paper,oneside]{book}
\usepackage{fontspec}
\setmainfont[Scale=1.4]{TH SarabunPSK} % Thai Font
\setmonofont[Scale=MatchLowercase]{Code2000}
\XeTeXlinebreaklocale "th_TH"
\XeTeXlinebreakpenalty=100
\XeTeXlinebreakskip=0pt plus 1pt
\usepackage{verbatim}
\usepackage{listings}
\begin{document}
\begin{verbatim}
\begin{enumerate}
\item one หนึ่ง
\item two สอง
\end{enumerate}
\end{verbatim}
\begin{lstlisting}[basicstyle=\ttfamily\small]
\begin{enumerate}
\item one หนึ่ง
\item two สอง
\end{enumerate}
\end{lstlisting}
\end{document}