![](/static/images/ext/zip.gif)SJTUThesis-master 2.zip 为了实现各定理环境统一编号,我重新定义了各种定理环境,然后共用计数器,但是文字就无法直接跟在“定义”或“定理”之后,而是从第二行开始。 ![](https://pics.latexstudio.net/data/images/201911/118384fa96e203f.png) 在此之前,我使用 \newtheorem{defn0}[thm]{定义} 定义了一个新的“定义”环境(因为原模板定义了defn),效果如下 ![](https://pics.latexstudio.net/data/images/201911/76bdd5316b43980.png) 不知道对于这类问题是否有比较好的解决办法?

1 回答1

5
模板 `.cls` 文件中与定理环境相关的是 ```tex % 定理环境 \newtheoremstyle{break}% name {}% Space above, empty = `usual value' {}% Space below {\itshape}% Body font {}% Indent amount (empty = no indent, \parindent = para indent) {\bfseries}% Thm head font {.}% Punctuation after thm head {\newline}% Space after thm head: \newline = linebreak {}% Thm head spec \theoremstyle{plain} \newtheorem{algo}{\sjtu@label@algo~}[chapter] \newtheorem{thm}{\sjtu@label@thm~}[chapter] \newtheorem{lem}[thm]{\sjtu@label@lem~} \newtheorem{prop}[thm]{\sjtu@label@prop~} \newtheorem{cor}[thm]{\sjtu@label@cor~} \theoremstyle{definition} \newtheorem{defn}{\sjtu@label@defn~}[chapter] \newtheorem{conj}{\sjtu@label@conj~}[chapter] \newtheorem{exmp}{\sjtu@label@exmp~}[chapter] \newtheorem{rem}{\sjtu@label@rem~} \newtheorem{case}{\sjtu@label@case~} \theoremstyle{break} \newtheorem{bthm}[thm]{\sjtu@label@thm~} \newtheorem{blem}[thm]{\sjtu@label@lem~} \newtheorem{bprop}[thm]{\sjtu@label@prop~} \newtheorem{bcor}[thm]{\sjtu@label@cor~} \renewcommand{\proofname}{\bfseries\sjtu@label@proof} ``` 因为最后一次调用的定理样式是 `\theoremstyle{break}`,所以你自己定义的定理环境也是 `break`。而根据 `break` 的定义,定理名之后会换行 ```tex {\newline}% Space after thm head: \newline = linebreak ``` 解决方案:在自己定义定理环境之前,使用 `\theoremstyle{...}` 切换定理样式。
  • 问题已解决,十分感谢! – MagicN 2019-11-20 15:26 回复

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。