
Используя стиль теоремы, как в примере ниже, после замечания создается новый абзац. Можно ли предотвратить это? (и amsthm
одновременно использовать пакет)?
\documentclass[english]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{babel}
\usepackage{amsthm}
\usepackage{blindtext}
\newtheorem{rem}{Remark}
\begin{document}
\begin{rem}
\blindtext
\end{rem}
\blindtext % I want that the text begins aligned left, i.e. no new
% paragraph
\end{document}
решение1
Не уверен, что именно вы ищете, но это может вам помочь
\documentclass[english]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{babel}
\usepackage{amsthm}
\usepackage{blindtext}
\newtheoremstyle{mystyle}
{\topsep} % Space above
{0pt} % Space below
{\itshape} % Body font
{} % Indent amount
{\bfseries} % Theorem head font
{.} % Punctuation after theorem head
{.5em} % Space after theorem head
{} % Theorem head spec (can be left empty, meaning `normal')
\theoremstyle{mystyle}
\newtheorem{rem}{Remark}
\begin{document}
\begin{rem}
\blindtext
\end{rem}
\noindent\blindtext
\end{document}
PS: Использованный стиль теоремы изздесь
решение2
Это несложно сделать, но вы должны дважды подумать. Замечание, установленное в качестве доказательства в rem
средеявляетсяабзац (или несколько абзацев) сам по себе, поэтому текст после негодолженбыть новым абзацем.
\documentclass{article}
\usepackage{amsthm}
\newtheorem{reminner}{Remark}
\makeatletter
\newenvironment{rem}
{\reminner}
{\endreminner\@endpetrue}
\makeatother
\begin{document}
\begin{rem}
A remarkable text.
\end{rem}
Some text that shouldn't start a new paragraph. But why not?
\begin{rem}
Another remarkable text.
\end{rem}
Some text that will start a new paragraph.
\end{document}
решение3
Поведение происходит, потому что amsthm.sty
явно включает \@endpefalse
в свое определение \@endtheorem
: оно имеет \def\@endtheorem{\endtrivlist\@endpefalse }
. В 7 мая 1996 г.почтана comp.text.tex Марк Вудинг дал решение,
\expandafter\let\csname @endtheorem\endcsname\endtrivlist
и затем написал: «Более надежным методом было бы сказать,
\makeatletter
\toks@\expandafter{\@endtheorem\@endpetrue}
\edef\@endtheorem{\the\toks@}
\makeatother
на случай, если [...] кто-то еще изменит исходный макрос». Это решение работает для меня (в 2023 году). Код должен находиться между \usepackage{amsthm}
и \newtheorem{...}{...}
, как указал позже в этой теме Том Скаво, цитируя Ён У. Рю (который предложил \makeatletter\def\@endtheorem{\endtrivlist}\makeatother
в качестве решения).