为定理添加悬垂部分

为定理添加悬垂部分

我是 LaTeX 新手,所以如果这个问题对你来说太简单,我深表歉意。我目前正在尝试撰写一篇论文,我想在定理和定义中添加一个悬垂部分(如下图所示,是子部分,但用于定理),但我不知道该怎么做。我尝试定义一些长度,\Overhang然后定义环境theorem,同时将悬垂长度添加到定义中,但没有成功。

为了清楚起见,我希望单词“定理”和数字位于不同的行上,并向右对齐。提前谢谢您!

子部分悬垂示例

编辑:这是我希望新定义的theorem环境看起来的样子的图片。 在此处输入图片描述

答案1

以下代码将章节编号和定理环境的标签放在边距中,方法是将它们放在零宽度(和零深度)的右对齐框中。

\documentclass{article}

\newlength{\marginlabelsep}\setlength{\marginlabelsep}{1em} %% <- change to a nice value

\usepackage{titlesec} %% <- To put the section # in the margin
\titleformat{\section}{\normalfont\Large\bfseries}
            {\llap{\thesection\hskip\marginlabelsep}}{0pt}{}

\usepackage{amsthm}
\newtheoremstyle{mythmstyle} %% Name
  {} %% <- Space above (empty = default = \topsep = 8.0pt plus 2.0pt minus 4.0pt)
  {} %% <- Space below (empty = default = \topsep = 8.0pt plus 2.0pt minus 4.0pt)
  {\itshape} %% <- Body font
  {} %% <- Indent amount (empty = no indent, \parindent = just that)
  {\bfseries} %% <- Thm head font
  {} %% <- Punctuation after thm head
  {0pt} %% <- Space after thm head (or " " or \newline) (default: 5pt plus 1pt minus 1pt)
  {\vtop to 0pt{\llap{\thmname{#1}\hskip\marginlabelsep}
                \llap{\thmnumber{#2}\hskip\marginlabelsep}}\thmnote{#3\\}%
  } %% <- Thm head spec (empty = default ~= \thmname{#1}\thmnumber{ #2}\thmnote{ (#3)})

\theoremstyle{mythmstyle}
\newtheorem{theorem}{Theorem}[section] %% <- Numbering subordinate to sections
\newtheorem{lemma}[theorem]{Lemma}     %% <- Uses same counter as theorem

\usepackage{lipsum} %% <- for \lipsum

\begin{document}

\section{My section}

\lipsum[66]

\begin{lemma}
    \lipsum[66]\lipsum[75]
\end{lemma}

\begin{theorem}[A beautiful theorem]
    \lipsum[66]
\end{theorem}

\lipsum[66]

\end{document}

在此处输入图片描述

解释:

我正在使用amsthm包来创建自定义定理样式。该\newtheoremstyle命令有点庞大,因为它需要很多参数,所以我保留了这些注释来提醒我每个参数的作用。对我们来说最重要的参数是最后一个参数,它描述了定理头的格式。如果将其留空,则实际上将其定义为

\thmname{#1}\thmnumber{ #2}\thmnote{ (#3)})

参数#1#2#3将是定理名称、其编号和标题/注释,并且\thmname\thmnumber\thmnote将打印其内容,如果没有名称、编号或标题/注释,则不打印任何内容。

为了将定理头移到页边距,我们应该用一些不占用空间的代码替换它,并在页边距的两条单独的行上打印定理名称+编号,然后是定理注释和换行符(如果有注释)。

TeX 基元\vbox\vcenter\vtop用于将多个框打印在一起,如下所示:

\noindent
Word \vbox{\hbox{A}\hbox{B}} word \vtop{\hbox{C}\hbox{D}} word.\\
Next line \vtop to 0pt{\hbox{E}\hbox{F}},\\       %% Note: <-, ^ avoid using \\
last line.

在此处输入图片描述

的参数\vtop必须是一系列框,因此我\hbox在这里将字母 A、B、... 放在 es(简单的水平框)内。我使用了\vtop to 0pt{...}而不是\top{...}来创建一个深度为零的框,因为否则下一行将被向下推(如上面的第二行)。有关框的更多信息,请参见例如这个答案

为了将定理标签放在页边距中,我使用了\llap{<contents>}。此 LaTeX 命令打印一个包含 的框<contents>,不占用空间,并且伸出在左边 (\rlap作用相同,但在右边突出)。因为它生成一个框,所以可以直接在里面使用\vtop。下面是一个例子:

ggg\llap{OOO}hhh\rlap{OOO}jjj

在此处输入图片描述

\thmname{#1}我在和之后添加了一个水平空格\thmnumber{#1},以确保标签与正文之间有分隔\marginlabelsep


评论: 在这次(希望)最后一次编辑之前,最后的论点\newtheoremstyle

{\vtop to 0pt{\hbox to -\marginlabelsep{\hss\thmname{#1}}
              \hbox to -\marginlabelsep{\hss\thmnumber{#2}}}\thmnote{#3\\}%
} %% <- Thm head spec (empty = default ~= \thmname{#1}\thmnumber{ #2}\thmnote{ (#3)})

这完全没问题。我修改了这一点,因为这样\llap比将负宽度的框放在 a 内的效果更容易理解(和解释!)。\vbox\hss

答案2

amsthm包提供了\newtheoremstyle可用于设置定理样式的命令。在正文字体参数(这是第四个参数,参见amsthm手动的(有关详细信息)该\hangindent命令可用于指定悬挂缩进。在下面的示例中,手动将其设置为6em,大约是文本的宽度定理 1。还\newline添加了一个,以在新行上开始定理文本。

梅威瑟:

\documentclass{article}
\usepackage{amsthm}
\newtheoremstyle{indentdef}{\topsep}{\topsep}{\hangindent=6em}{}{\bfseries}{}{\newline}{}
\theoremstyle{indentdef}
\newtheorem{theorem}{Theorem}

\begin{document}
\section{Introduction}

\begin{theorem}[Theorem title]
Let $f$ be a function whose derivative exists in every point, then $f$ is a continuous function.
\end{theorem}
\end{document}

结果:

在此处输入图片描述

相关内容