我需要向我的文档添加包含一些日语字符的 JSON 片段。我可以使用 CJK 包使用日语字符,并使用 minted 或 lstlistings 突出显示我的代码,但是有没有办法在突出显示的代码中使用日语字符?
答案1
Pygments 很好地支持 Unicode,你不需要为此进行特殊设置。无论如何,你应该先知道如何在 LaTeX 中使用日语。请参阅如何用 LaTeX 写日语?
luatexja
和(最新版本)都很好地xeCJK
支持listings
软件包。但旧CJK
软件包的listings
使用难度更大,而且只提供部分支持。
顺便说一句,包中没有预定义的 javascript 语言listings
。之前的一个问题列表中支持的语言选项可能会有帮助。在以下示例中,为了简单起见,我改用 Java。
LuaLaTeX
luatexja
最好使用带有包的 LuaLaTeX 。
% !TeX program = LuaLaTeX
% !TeX encoding = UTF-8
\documentclass{article}
\usepackage{xcolor}
\usepackage{luatexja-fontspec}
\setmainjfont{IPAexMincho} % A high quality Japanese font preinstalled in TeX Live
\usepackage{listings}
\lstset{
basicstyle=\ttfamily,
keywordstyle=\color{blue},
stringstyle=\color{purple},
}
\begin{document}
\begin{lstlisting}[language=Java]
if (b == true)
s = "日本語";
\end{lstlisting}
\end{document}
西拉特克斯
% !TeX program = XeLaTeX
% !TeX encoding = UTF-8
\documentclass{article}
\usepackage{xcolor}
\usepackage{xeCJK}
\setCJKmainfont{IPAexMincho}
\usepackage{listings}
\lstset{
basicstyle=\ttfamily,
keywordstyle=\color{blue},
stringstyle=\color{purple},
}
\begin{document}
\begin{lstlisting}[language=Java]
if (b == true)
s = "日本語";
\end{lstlisting}
\end{document}
pdfLaTeX
使用CJK
包,如果我们转为 LaTeX,我们可以在代码中正确使用日语字符。
% !TeX program = pdfLaTeX
% !TeX encoding = UTF-8
\documentclass{article}
\usepackage{xcolor}
\usepackage{CJKutf8}
\usepackage{listings}
\lstset{
extendedchars=false,
basicstyle=\ttfamily,
keywordstyle=\color{blue},
stringstyle=\color{purple},
}
\begin{document}
\begin{CJK*}{UTF8}{ipxm}
\begin{lstlisting}[language=Java,escapechar=\#]
if (b == true)
s = "#日本語#"; // No syntax highlighting anyway
\end{lstlisting}
\clearpage\end{CJK*}
\end{document}