我尝试定义一个新的文档部分,称为托莫(英文中的“volume”)位于amsmath
部分文档部分如下:
\documentclass[12pt,italian]{amsbook}
\newcounter{tomo}
\renewcommand\thetomo {\roman{tomo}}
\let\tomorunhead\tomorunhead
\def\tomoname{tomo}
\def\tomo{\cleardoublepage \thispagestyle{empty}%
\null\vfil \markboth{}{}\secdef\@tomo\@tomo}
\def\@tomo[#1]#2{%
\ifnum \c@secnumdepth >-2\relax \refstepcounter{tomo}%
\addcontentsline{toc}{tomo}{\tomoname\ \thetomo.
\protect\enspace\protect\noindent#1}%
\else
\addcontentsline{toc}{tomo}{#1}\fi
\begingroup\centering
\ifnum \c@secnumdepth >-2\relax
{\fontsize{\@xviipt}{22}\bfseries
\tomoname\ \thetomo} \vskip 20\p@ \fi
\fontsize{\@xxpt}{25}\bfseries
#1\vfil\vfil\endgroup \newpage\thispagestyle{empty}}
\def\@stomo#1{\addcontentsline{toc}{tomo}{\protect\noindent#1}%
\begingroup\centering
\fontsize{\@xxpt}{25}\bfseries
#1\vfil\vfil\endgroup \newpage\thispagestyle{empty}}
\def\tomorunhead#1#2#3{%
\@ifnotempty{#2}{\uppercase{#1 #2}\@ifnotempty{#3}{. }}%
\def\@tempa{#3}%
\ifx\@empty\@tempa\else\uppercasenonmath\@tempa\@tempa\fi}
\def\l@tomo{\@tocline{-1}{12pt plus2pt}{0pt}{}{\bfseries}}
\let\toctomo\tocsection
\begin{document}
\tomo{example}
\part{ciao}
\chapter{test}
\end{document}
但是在编译时,它返回以下错误:
! Use of \@ doesn't match its definition.
\@xdblarg #1#2->#1[
{#2}]{#2}
l.36 \tomo
{example}
我一直在使用amsbook 类定义以下扩展。我错在哪里?
顺便说一句,我没有使用该volumes
包,因为它不会添加托莫在我的目录中。
答案1
将代码放在 \makeatletter 和 \makeatother 之间。