我一直在寻找解决方案,但一无所获。我试图通过创建一个定理环境,amsthm
这样就会有一个换行符(就像 break 定理模型一样),但第一行会缩进。我尝试重新定义环境和其他东西,但到目前为止没有帮助。我当前的代码是:
\documentclass{memoir}
\usepackage{amsthm}
\usepackage{lipsum}
\usepackage{amssymb}
\newtheoremstyle{teo}%〈name〉
{3pt}%〈Space above〉
{3pt}%〈Space below〉
{}%〈Body font〉
{}%〈Indent amount〉
{\bfseries}%〈Theorem head font〉
{:}%〈Punctuation after theorem head〉
{\newline}%〈Space after theorem head〉
{\thmname{#1}\thmnumber{ #2}{\mdseries\thmnote{ [#3]}}}%〈Theorem head spec(can be left empty, meaning ‘normal’)〉
\theoremstyle{teo}
\newtheorem{thmx}{Theorem}
\newenvironment{thm}
{\pushQED{\qed}\renewcommand{\qedsymbol}{$\square$}\thmx}
{\popQED\endthmx}
\usepackage{indentfirst}
\begin{document}
\begin{thm}[Bézout's Theorem]
\lipsum[1]
\end{thm}
\end{document}
我的目标是通过自动化的方式实现类似这样的结果:
\documentclass{memoir}
\usepackage{amsthm}
\usepackage{lipsum}
\usepackage{amssymb}
\newtheoremstyle{teo}%〈name〉
{3pt}%〈Space above〉
{3pt}%〈Space below〉
{}%〈Body font〉
{}%〈Indent amount〉
{\bfseries}%〈Theorem head font〉
{:}%〈Punctuation after theorem head〉
{\newline}%〈Space after theorem head〉
{\thmname{#1}\thmnumber{ #2}{\mdseries\thmnote{ [#3]}}}%〈Theorem head spec(can be left empty, meaning ‘normal’)〉
\theoremstyle{teo}
\newtheorem{thmx}{Theorem}
\newenvironment{thm}
{\pushQED{\qed}\renewcommand{\qedsymbol}{$\square$}\thmx}
{\popQED\endthmx}
\usepackage{indentfirst}
\begin{document}
\begin{thm}[Bézout's Theorem]
\null \hspace{1em} \lipsum[1]
\end{thm}
\end{document}
也就是说,当我输入这样的定理时,可以具有任意的间距。
我对这个问题的不当之处表示歉意,因为我对这个 SE 还很陌生。
答案1
我们可以修补\newtheoremstyle
以接受\newline<other tokens>
:
\documentclass{memoir}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{etoolbox}
\usepackage{lipsum}
\makeatletter
\patchcmd{\newtheoremstyle}
{\def\@tempb{\newline}}
{\def\@tempb{\newline}\edef\@tempa{\unexpanded\expandafter{\@car#8\@nil}}}
{}{}
\patchcmd{\newtheoremstyle}
{\def\thmheadnl{\newline}}
{\def\thmheadnl{#8}}
{}{}
\makeatother
\newtheoremstyle{teo}%〈name〉
{3pt}%〈Space above〉
{3pt}%〈Space below〉
{}%〈Body font〉
{}%〈Indent amount〉
{\bfseries}%〈Theorem head font〉
{:}%〈Punctuation after theorem head〉
{\newline\hspace*{\parindent}}%〈Space after theorem head〉
%〈Theorem head spec follows (can be left empty, meaning ‘normal’)〉
{\thmname{#1}\thmnumber{ #2}{\mdseries\thmnote{ [#3]}}}
\makeatletter
\makeatother
\theoremstyle{teo}
\newtheorem{thmx}{Theorem}
\newenvironment{thm}
{\pushQED{\qed}\renewcommand{\qedsymbol}{$\square$}\thmx}
{\popQED\endthmx}
\begin{document}
\begin{thm}[Bézout's Theorem]
\lipsum[1]\lipsum*[2]
\end{thm}
\end{document}
但这似乎不是一个好主意。
答案2
\newtheoremstyle
(的第三个参数正文字体)可用于更改缩进设置。在这种情况下(另请参阅https://tex.stackexchange.com/a/67308) 您可以使用\parshape
,它定义指定行数的缩进和行长(请参阅TeX 按主题分类,第 18.2.2 节)。在对指定的行应用长度后,段落的剩余部分将根据最后一行指定的长度进行格式化。
对于一个定理,第一行是定理标题,第二行和第三行分别是内容的第一行和第二行。在下面的例子中,缩进设置为0pt
、\parindent
(在本例中为 15pt)和0pt
。行长设置为\textwidth
,对于第二行,使用 减少了缩进值\dimexpr
,否则行会继续到右边距。如果要更改缩进量,应该将两次出现的 替换\parindent
为其他值(例如10mm
)。
梅威瑟:
\documentclass{memoir}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage{lipsum}
\newtheoremstyle{teo}% name
{3pt}% Space above
{3pt}% Space below
{\parshape 3 0pt \textwidth \parindent \dimexpr\textwidth-\parindent 0pt \textwidth}% Body font
{}% Indent amount
{\bfseries}% Theorem head font
{:}% Punctuation after theorem head
{\newline}% Space after theorem head
{\thmname{#1}\thmnumber{ #2}{\mdseries\thmnote{ [#3]}}}% Theorem head spec(can be left empty, meaning ‘normal’)
\theoremstyle{teo}
\newtheorem{thmx}{Theorem}
\newenvironment{thm}
{\pushQED{\qed}\renewcommand{\qedsymbol}{$\square$}\thmx}
{\popQED\endthmx}
\begin{document}
\begin{thm}[B\'{e}zout's Theorem]
\lipsum[1]
\end{thm}
\end{document}
结果: