提问于:
浏览数:
2760
![](/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 回答
3
模板 `.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 回复
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。