我开始与同事合作,他们有练习表,实际上是一长串练习。这里有 2 个练习(注意第二个练习有一个标题)。
我觉得它很丑,但我可以忍受。
然而,事实证明,他们的 LaTeX 代码确实包含一个非常大的enumerate
,其中每个练习都是一个\item
:
\begin{enumerate}
\item Beginning of first exercise.
Very long text......
\item Oh, the second exercise.
\suspend{enumerate}
Some text which is not an exercise.
\resume{enumerate}
\item An exercise.
\end{enumerate}
这太脏了。我没法处理。为了让代码清晰易读,我需要每个练习都处于一个环境中。
\begin{exercise}
Beginning of first exercise.
Very long text......
\end{exercise}
\begin{exercise}
Second exercise.
\end{exercise}
目前,我正在使用以下内容:
\usepackage{amsthm, thmtools}
\def\aLaLigne{\newline\leavevmode\null}
\let\finLigne\relax
\declaretheoremstyle[
notebraces={}{\global\let\finLigne\aLaLigne}, % hack because we want a line break iff there is a title to the exercise
notefont=\normalfont\sffamily,
headfont=\normalfont\bfseries,
bodyfont=\normalfont,
headpunct={.\finLigne\global\let\finLigne\relax},
headformat=margin,
headindent=3em
]{styleQuestion}
\declaretheorem[style=styleQuestion, title={}]{question}
\usepackage{enumitem}
\newlist{ssquest}{enumerate}{1}
\setlist[ssquest]{label=(\alph*)}
这几乎是正确的。
我仍然需要将练习内容排版为增加左边距,这样它就不会位于练习编号的左侧。此外,尽管使用了\leavevmode
as peramsthm
的文档,当内容以枚举开头时,我还没有设法有效地在开头换行。
答案1
感谢大家的各种评论。建议ntheorem
无法直接应用,因为我无法使用它来更改标题的字体。
然而,探索它的来源,看看它是如何做到的,让我这个答案,我已能够进行如下调整。
\usepackage{amsthm, thmtools, etoolbox}
\makeatletter
\patchcmd\@thm
{\trivlist}
{\list{}{\leftmargin3.25em\itemindent-15em}}
{}{}
\newcommand{\xdeclaretheorem}[2][]{%
\declaretheorem[#1]{#2}%
\expandafter\patchcmd\csname thmt@original@end#2\endcsname
{\endtrivlist}{\endlist}{}{}%
}
\def\aLaLigne{\leavevmode\par}
\let\finLigne\relax
\declaretheoremstyle[
notebraces={}{\global\let\finLigne\aLaLigne},
notefont=\normalfont\sffamily,
headfont=\normalfont\bfseries,
bodyfont=\normalfont,
headpunct={},
headformat={\hskip-.4em\makebox[0pt][r]{\NUMBER.}\NOTE},
postheadhook={\finLigne\global\let\finLigne\relax},
]{styleQuestion}
\xdeclaretheorem[style=styleQuestion, title={\hskip-.9ex.}]{question}
\usepackage{enumitem}
\newlist{ssquest}{enumerate}{1}
\setlist[ssquest]{label=(\alph*)}
同事们很高兴;这在他们的计算机上编译,并且 PDF 看起来和他们习惯的一样丑陋。
我将逐步颠覆所有代码以使用这些新环境,有一天我们将切换到更漂亮的演示。