无法在 xeLaTeX 中在章节标题的 CJKnumber 后添加中文标点符号

无法在 xeLaTeX 中在章节标题的 CJKnumber 后添加中文标点符号

我正在用 xeLaTeX 用中文撰写论文,并且必须格式化章节名称和部分名称。

以下命令可以正常工作:

 \usepackage[CJKnumber][xeCJK]
 \renewcommand{\chaptername}{\CJKnumber{\thechapter}}

除了我仍然需要在数字后添加中文标点。例如

  一、第一章
 (一) 第一节

! Missing number, treated as zero.如果我这样做,编译器会抱怨:

 \usepackage[CJKnumber][xeCJK]
 \renewcommand{\chaptername}{\CJKnumber、{\thechapter}}

有什么办法可以解决这个问题吗?

例子:

  \documentclass{report}
  \usepackage[CJKnumber]{xeCJK}
  \usepackage{titlesec}

  \renewcommand{\chaptername}{\CJKnumber{\thechapter}、} 
  \titleformat{\chapter}{\xiaosihao\hei}{\chaptername}{0.1em}{}
  \newcommand{\sectionname}{(\CJKnumber{\thesection})}  
  \titleformat{\section}{\xiaosihao\hei}{\sectionname}{0.1em}{} 

  \begin{document}
  \chapter{第一章}
  \section{第一节}
  \end{document}

我现在可以让章节名称正常工作,但章节编号却变成(.1 一)(一)

答案1

该命令\CJKnumber有一个参数,应扩展为数字,以便可以转换为中文系统。

因此这\CJKnumber{1}是合法的,因为它是\CJKnumber{\thechapter}:整个地段都是“数字”。

因为你想要标点符号数量、结构

\CJKnumber{\thechapter}、

就是你要找的。

你可能想要这样的东西:

\documentclass{report}
\usepackage[CJKnumber]{xeCJK}
\setCJKmainfont{Kai}

\renewcommand{\chaptername}{章}
\renewcommand{\thechapter}{\CJKnumber{\arabic{chapter}}、} 
\renewcommand{\thesection}{%
  (\CJKnumber{\arabic{chapter}}、 %
    \CJKnumber{\arabic{section}})}

\begin{document}
\chapter{第一章}
\section{第一节}
\end{document}

在此处输入图片描述

答案2

您应该阅读包的文档ctex并遵循它。不要使用低级宏。titlesec对于更复杂的章节标题格式很有用,但在这里就有点大材小用了。

此外,CJKnumber选项现在对于新文档来说有些过时了,因为它zhnumber比旧CJKNumb包更好用。新版本也在内部ctex使用。zhnumber

\documentclass{ctexrep}
\CTEXsetup[name={,、},number=\chinese{chapter},aftername={}]{chapter}
\CTEXsetup[name={(,)},number=\chinese{section},aftername={}]{section}

\begin{document}
\chapter{第一章}
\section{第一节}
\end{document}

相关内容