
Я использую пакет 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}