대략 다음과 같은 정리 환경을 구성하려고 합니다.
1.1 Theorem Statement of the theorem. Here is some extra text so you can see how the
theorem body text should be indented (aligned with theorem head).
정리 머리 부분은 굵게 표시되어야 하며 뒤에 구두점이 없어야 합니다. thmnumber
와 사이의 간격은 thmname
조정 가능해야 합니다. 본문 텍스트는 정상입니다.
정의를 위한 환경도 사용할 수 있기를 원하므로(번호가 매겨지지 않음) 정리 헤드의 정렬에 영향을 주지 않고 숫자를 제거하는 것이 가능해야 합니다. 예:
Definition Statement of the definition. It should be aligned the same way as a
theorem.
Here is some body text in the document. Note that the theorem numbers are not in the
margin.
1.1 Theorem Statement of the theorem. Here is some extra text so you can see how the
theorem body text should be indented (aligned with theorem head).
답변1
이를 수행하는 방법은 다음과 같습니다. 이는 또한 enumerate
성명서 와 같은 목록을 준수하지만 어떤 솔루션은 \hangindent
그렇지 않습니다.
\documentclass{article}
\usepackage{showframe} % just for the example
\usepackage{amsthm}
\usepackage{enumitem}
\usepackage{xparse}
\usepackage{lipsum}
\newtheoremstyle{fctaylor}% name
{\topsep}% Space above
{\topsep}% Space below
{\normalfont}% Body font
{}% Indent amount (empty = no indent, \parindent = para indent)
{\bfseries}% Thm head font
{}% Punctuation after thm head
{0pt}% Space after thm head: " " = normal interword space;
{\makethmhead{#1}{#2}{#3}}
\newlength\fctaylortheoremindent
\AtBeginDocument{\setlength\fctaylortheoremindent{3em}} % <- customize here
\newlength\fctaylorlabelsep
\AtBeginDocument{\setlength\fctaylorlabelsep{1em}} % <- customize here
\makeatletter
\newcommand{\makethmhead}[3]{%
\gdef\thisthmhead{%
\makebox[\fctaylortheoremindent][l]{\bfseries#2}%
{\bfseries#1}%
\@ifnotempty{#3}{ (#3)}%
\hspace{\fctaylorlabelsep}%
}%
}
\makeatother
\newenvironment{fctayloritemize}
{\list{}{%
\leftmargin=\fctaylortheoremindent
\labelwidth=\dimexpr\fctaylortheoremindent-\labelsep\relax
\itemindent=0pt
}}
{\endlist}
\NewDocumentCommand{\newfctaylortheorem}{smomo}{%
\IfBooleanTF{#1}
{\newtheorem*{fctaylor@#2}{#4}}
{\IfNoValueTF{#3}
{\IfNoValueTF{#5}
{\newtheorem{fctaylor@#2}{#4}}
{\newtheorem{fctaylor@#2}{#4}[#5]}}
{\newtheorem{fctaylor@#2}[fctaylor@#3]{#4}}}%
\NewDocumentEnvironment{#2}{o}
{\IfNoValueTF{##1}{\begin{fctaylor@#2}}{\begin{fctaylor@#2}[##1]}%
\begin{fctayloritemize}\item[\thisthmhead\hfill]}
{\end{fctayloritemize}\end{fctaylor@#2}}%
}
\theoremstyle{fctaylor}
\newfctaylortheorem{thm}{Theorem}[section]
\newfctaylortheorem*{defn}{Definition}
\begin{document}
\section{One}
\begin{defn}
\lipsum*[2]
\end{defn}
\begin{thm}\label{A}
\lipsum*[2]
\end{thm}
\begin{thm}[Somebody]\label{B}
Something that should show how the text is split across line boundaries
and is correctly indented. And some equivalent conditions:
\begin{enumerate}[label=\upshape(\alph*),ref=(\alph*)]
\item a condition
\item another
\item and another
\end{enumerate}
which show the point made.
\end{thm}
\ref{A} and \ref{B}
\end{document}
답변2
여기에 가능성이 있습니다.thmtools
프런트 엔드로amsthm:
코드(필요에 따라 설정을 조정합니다. 특히 \thmindent
정리와 유사한 구조에 대해 원하는 내어쓰기를 얻으려면 변경하세요.):
\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{lipsum}
\newlength\thmindent
\setlength\thmindent{2.5em}
\declaretheoremstyle[
spaceabove=6pt,
spacebelow=6pt,
headfont=\normalfont\bfseries,
notefont=\normalfont\bfseries,
notebraces={(}{)},
bodyfont=\normalfont,
postheadspace=0.5em,
numberwithin=section,
headformat={\makebox[\thmindent]{\NUMBER\hfill}\NAME\NOTE},
postheadhook=\hangindent=\thmindent
]{nuswapindented}
\declaretheoremstyle[
spaceabove=6pt,
spacebelow=6pt,
headfont=\normalfont\bfseries,
notefont=\normalfont\bfseries,
notebraces={(}{)},
bodyfont=\normalfont,
postheadspace=0.5em,
numbered=no,
headformat={\makebox[\thmindent]{\mbox{}\hfill}\NAME\NOTE},
postheadhook=\hangindent=\thmindent
]{unnuswapindented}
\declaretheorem[style=nuswapindented,name=Theorem]{theo}
\declaretheorem[style=unnuswapindented,name=Definition]{defi}
\begin{document}
\section{Test section}
\lipsum[4]
\begin{defi}
\lipsum[4]
\end{defi}
\lipsum[4]
\begin{theo}
\lipsum[4]
\end{theo}
\end{document}
답변3
ntheorem
패키지와 정리 스타일을 사용하여 수행할 수 있습니다 change
. 정리 이름과 정리 번호 사이의 간격은 정리 변경 스타일을 패치하여 조정할 수 있습니다. thlabelsep
기본적으로 설정되고 0.5em
서문에서 변경할 수 있는 새로운 차원을 도입합니다.
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage[thmmarks, amsmath, thref]{ntheorem}
\usepackage{cleveref}
\newdimen\thlabelsep
\global\thlabelsep0.5em
\makeatletter
\renewtheoremstyle{change}%
{\item[\hskip\labelsep \theorem@headerfont ##2\hskip\thlabelsep##1\theorem@separator]}%
{\item[\hskip\labelsep \theorem@headerfont ##2\hskip\thlabelsep##1\ (##3)\theorem@separator]}
\makeatother
\theoremstyle{change}
\thlabelsep1.5em
\theoremheaderfont{\bfseries\upshape}
\theoremseparator{}
\theorembodyfont{\upshape}
\newtheorem{thm}{Theorem}[section]
\theoremstyle{nonumberplain}
\newtheorem{defn}{Definition}
\begin{document}
\section{Two Conjectures}
\begin{defn}
A Sophie Germain prime is a prime number $ p $ such that $ 2p + 1$ is also prime.
\end{defn}
\begin{thm}
There is an infinity of twin primes. Related: There is an infinity of Sophie Germain primes.
\end{thm}
\end{document}