在我的脚本中我想要有一个如下例所示的结构:
1 节
1.1 小节
1.2 小节
1.练习
1.B 练习
1.3 小节
2 节
2.1 小节
ETC。
我怎样才能意识到这一点?
答案1
使用宏在主文本和练习之间切换\exercise
。\maintext
\documentclass{article}
\newcounter{savesubsection}[section]\setcounter{savesubsection}{0}
\newcounter{saveexercise}[section]\setcounter{saveexercise}{0}
\def\exercise{\global\setcounter{savesubsection}{\value{subsection}}%
\global\setcounter{subsection}{\thesaveexercise}%
\global\renewcommand{\thesubsection}{\thesection.\Alph{subsection}}}
\def\maintext{\global\setcounter{saveexercise}{\value{subsection}}%
\global\setcounter{subsection}{\thesavesubsection}%
\global\renewcommand{\thesubsection}{\thesection.\arabic{subsection}}}
\begin{document}
\maintext
\section{Section}
\subsection{Subsection}
\subsection{Subsection}
\subsection{Subsection}
\exercise
\subsection{Exercise}
\subsection{Exercise}
\maintext
\subsection{Subsection}
\exercise
\subsection{Exercise}
\section{Section}
\maintext
\subsection{Subsection}
\exercise
\subsection{Exercise}
\end{document}
这里我假设你每个部分只有一组练习。如果你想每个部分有多个练习,请告诉我。我会安排保存你之前的练习部分,以便稍后继续。
编辑
我已经更新了上述代码,以便您可以随意切换正文和练习。该代码尚未经过彻底测试。
我知道我们可以添加更多标志来测试哪些环境我们目前处于这样的情况,例如,如果用户\exercise
在锻炼时放入了另一个。但我忽略了这样的错误。
答案2
\documentclass{article}
\makeatletter
\newcounter{exercise}[section]
\renewcommand{\theexercise}{\thesection.\@Alph\c@exercise}
\if@twoside
\g@addto@macro{\ps@headings}{%
\def\exercisemark##1{%
\markright{%
\ifnum \c@secnumdepth >\@ne
\theexercise\quad
\fi
##1}}
}
\fi
\g@addto@macro{\ps@myheadings}{\let\exercisemark\@gobble}
\newcommand{\exercisemark}[1]{}
\newcommand{\exercise}{\@startsection{exercise}{2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\large\bfseries}}
\makeatother
\begin{document}
\section{Section}
\subsection{Subsection}
\subsection{Subsection}
\exercise{Exercise}
\exercise{Exercise}
\subsection{Subsection}
\section{Section}
\subsection{Subsection}
\end{document}
(根据@egreg 的评论进行编辑。)