
我使用 amsthm 包,並且不希望在定理環境之後開始的行縮排。我查閱了包包的手冊,它說定義一個新的定理樣式。我期望接下來的MWE能夠完成這個任務。
\documentclass[12pt,a4paper]{scrreprt}
\usepackage{amsthm}
\newtheoremstyle{abcd}% 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
{.5em}% Space after thm head: \newline = linebreak
{}% Thm head spec
\theoremstyle{abcd}
\newtheorem{defn}{Definition}
\begin{document}
\begin{defn}
Some defintion
\end{defn}
This sentence shouldn't be indented.
\end{document}
然而,我最終得到了這個
這就是我所期望的(在定理環境結束後立即使用 noindent 獲得)
答案1
\documentclass[12pt,a4paper]{scrreprt}
\usepackage{amsthm}
\usepackage{etoolbox}
\newtheorem{defn}{Definition}
\AfterEndEnvironment{defn}{\noindent\ignorespaces}
\begin{document}
\begin{defn}
Some definition.
\end{defn}
This sentence isn't indented.
\end{document}
然而這違背了直覺;定義(或任何其他類似定理的結構)之後的句子在邏輯上開始一個新段落,因此其第一行應被視為新段落的任何其他第一行。
答案2
您可以透過修補在單一定理類型的基礎上修復此問題\end<name>
:
\documentclass{article}
\usepackage{etoolbox}
\usepackage{amsthm}
\newtheoremstyle{abcd}% 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
{.5em}% Space after thm head: \newline = linebreak
{}% Thm head spec
\theoremstyle{abcd}
\newtheorem{defn}{Definition}
\makeatletter
\patchcmd{\enddefn}{\@endpefalse}{}{}{}
\makeatother
\begin{document}
\begin{defn}
Some definition
\end{defn}
This sentence shouldn't be indented.
\begin{defn}
Some definition
\end{defn}
This sentence should be indented.
\end{document}
風格選擇沒有影響。
為了獲得相同的行為全部定理環境,改變 的定義\@endtheorem
。
\documentclass{article}
\usepackage{amsthm}
\makeatletter
\def\@endtheorem{\endtrivlist}
\makeatother
\newtheoremstyle{abcd}% 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
{.5em}% Space after thm head: \newline = linebreak
{}% Thm head spec
\theoremstyle{abcd}
\newtheorem{defn}{Definition}
\begin{document}
\begin{defn}
Some definition
\end{defn}
This sentence shouldn't be indented.
\begin{defn}
Some definition
\end{defn}
This sentence should be indented.
\end{document}
另一個例子表明,當兩個定理環境相互跟隨時,這不會添加不必要的空間。
\documentclass{scrbook}
\usepackage{amsthm}
\makeatletter
\def\@endtheorem{\endtrivlist}
\makeatother
\theoremstyle{plain}
\newtheorem{thm}{Theorem}[chapter]
\newtheorem*{thm*}{Theorem}
\begin{document}
\chapter{Chapter}
\section{Section}
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
\begin{thm}
Theorem. Theorem. Theorem. Theorem. Theorem. Theorem. Theorem. Theorem. Theorem. Theorem.
\end{thm}
No indentation. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
\begin{thm}
Theorem. Theorem. Theorem. Theorem. Theorem. Theorem. Theorem. Theorem. Theorem. Theorem.
\end{thm}
\begin{thm}
Theorem. Theorem. Theorem. Theorem. Theorem. Theorem. Theorem. Theorem. Theorem. Theorem.
\end{thm}
Indentation. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
\end{document}