CJK 和代码高亮

CJK 和代码高亮

我需要向我的文档添加包含一些日语字符的 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}

相关内容