我正在用 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}