\markboth{}{} 和 CJK

\markboth{}{} 和 CJK

我正在使用CJKutf8LaTeX 中的包编写一本日语词典。我编写了一些宏来创建条目,除了使用 设置标题外,其他一切都运行正常fancyhdr

使用宏:

\newcommand{\J}[1]{\begin{CJK}{UTF8}{song}#1\end{CJK}}

我在 Unicode 中输入日语,但在

\markboth{\J{#1}}{\J{#1}}

它无法编译并且会出现奇怪的错误。

这是一个有效的例子:

\documentclass[twocolumn]{book}
\usepackage[T1,OT4]{fontenc}
\usepackage{CJKutf8}
\usepackage{hanging}
\usepackage{ragged2e}
\usepackage{fancyhdr}
\usepackage{fix2col}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LE,RO]{\textbf{\rightmark\ -- \leftmark}}
\fancyhead[LO,RE]{\textsf{\textbf{\thepage}}}
\newcommand{\J}[1]{\begin{CJK}{UTF8}{song}#1\end{CJK}}
\newcommand{\E}[4]{\hangpara{3em}{1}\textbf{\J{#2・}}\J{#1}\ #3\ \textit{#4}\J{\markboth{#2}{#2}\cleardoublepage\par}}
\begin{document}
\E{愛}{あい}{miłość}{cn}
\E{青い}{あおい}{niebieski; \emph{rz.} zielony}{ia}
\E{青信号}{あおしんごう}{zielone światło na sygnalizatorze}{mn}
\end{document}

当然,我不想将每个条目放在单独的页面上,因此当我删除 \cleardoublepage 时,它​​无法编译。

我怎样才能制作包含日语单词的标题?

答案1

使用您的代码,您可能会看到以下错误:

name = cyberb53, rootname = cyberb, pointsize = 53
mktexmf: empty or non-existent rootfile!

...

事实上,TeX 文件没有问题,但是您没有为CJK捆绑包安装适当的字体。

最简单的解决方案是改变

\begin{CJK}{UTF8}{song}

\begin{CJK}{UTF8}{min}

请注意,songCJKfamily 实际上适用于中文而不是日语。

还有许多其他解决方案,我就不多解释了。另请参阅 如何用 LaTeX 写日语?

相关内容