book
在 中没有\addtodef{\afterchapternum}{課}{}
可用的memoir
。因此,我必须手动添加它。但该怎么做呢?我不想使用memoir
。
平均能量损失
\documentclass{book}
\usepackage{xeCJK}
\setCJKmainfont{ipaexm.ttf}
\setmainfont{Cambria}
\renewcommand\chaptername{第}
%\addtodef{\afterchapternum}{課}{}
\begin{document}
\tableofcontents
\chapter{手引}
おはようございます!
\end{document}
答案1
如果在紧接着的命令中定义了宏,这将定义一个\afterchapnum
宏并且使用它。\makechapterhead
\thechapter
重新定义\thechapter
可能没用,因为这也会出现在ToC
和潜在的参考中。
(抱歉,必须评论所有 CJK 内容)
可以通过修补来缩短代码(但这需要另一个包,etoolbox
或者xpatch
)
\documentclass{book}
%\usepackage{xeCJK}
%\setCJKmainfont{ipaexm.ttf}
%\setmainfont{Cambria}
%\renewcommand\chaptername{第}
%\addtodef{\afterchapternum}{課}{}
\newcommand{\afterchapternum}{Foo}
\makeatletter
\def\@makechapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\huge\bfseries \@chapapp\space \thechapter~\@ifundefined{afterchapternum}{}{\afterchapternum}%
\par\nobreak
\vskip 20\p@
\fi
\fi
\interlinepenalty\@M
\Huge \bfseries #1\par\nobreak
\vskip 40\p@
}%
}
\makeatother
\begin{document}
\tableofcontents
\chapter{First}
%\chapter{手引}
%おはようございます!
\end{document}
更新和\xpatchcmd
:
\documentclass{book}
\usepackage{xpatch}
\newcommand{\afterchapternum}{FooBar}
\makeatletter
\xpatchcmd{\@makechapterhead}{%
\thechapter%
% look for `\thechapter` only -- it's unique in `\@makechapterhead, so this is 'safe'
}{% Replace it by this:
\thechapter~\@ifundefined{afterchapternum}{}{\afterchapternum}%
}{\typeout{Success}}{\typeout{Failure!}}
\makeatother
\begin{document}
\tableofcontents
\chapter{First}
\end{document}