平均能量损失

平均能量损失

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}

相关内容