如何获取文档类的正常段落缩进大小?

如何获取文档类的正常段落缩进大小?

我想修改标准amsthm环境proof,以便它的开始,包括“证明”一词的缩进量与任何正常文本段落的缩进量相同。

如何引用普通文本段落缩进的大小,以便我可以将其用作长度\hskip,如下所示:

\makeatlatter
\renewenvironment{proof}[1][\proofname]{\par
  \pushQED{\qed}%
  \normalfont \topsep6\p@\@plus6\p@\relax
  \trivlist
  \item[\hskip\SOMETHING       %% WHAT GOES IN PLACE OF "SOMETHING"
      \itshape
    #1\@addpunct{.}]\ignorespaces
}{%
  \popQED\endtrivlist\@endpefalse
} 
\makeatother    

我希望它独立于任何特定的文档类或类的基本字体大小选项,这就是为什么我想引用正常段落缩进的大小而不是指定特定的东西(查看文档类的代码)比如 10pt 或 2em,或者其他什么。

重要的我愿意不是想要缩进整个证明,包括包含“证明”的第一行 — — 仅第一行。

最小示例:

\documentclass{memoir}

\usepackage{amsthm}
\newtheorem{thm}{Theorem}

\makeatletter
\renewenvironment{proof}[1][\proofname]{\par
  \pushQED{\qed}%
  \normalfont \topsep6\p@\@plus6\p@\relax
  \trivlist
  \item[\hskip\labelsep % WHAT GOES IN PLACE OF \labelsep??
        \itshape
    #1\@addpunct{.}]\ignorespaces
}{%
  \popQED\endtrivlist\@endpefalse
}
\makeatother

\begin{document}

Lots of text here.

\begin{thm}
This is true.
\end{thm}

\begin{proof}
It's ovvious!
\end{proof}

\end{document}

在输出中我以图形方式表明了我想要移动的内容。

如何按照指示缩进证明的第一行?

答案1

添加一个在文档开始处设置的新长度\parindent,以便它可以在列表内可用(可能会重置\parindent)。

\documentclass{memoir}

\usepackage{amsthm}
\newtheorem{thm}{Theorem}

\makeatletter
\newlength{\normalparindent}
\AtBeginDocument{\setlength{\normalparindent}{\parindent}}
\renewenvironment{proof}[1][\proofname]{\par
  \pushQED{\qed}%
  \normalfont \topsep6\p@\@plus6\p@\relax
  \trivlist
  \item[\hskip\labelsep\hskip\normalparindent
        \itshape
    #1\@addpunct{.}]\ignorespaces
}{%
  \popQED\endtrivlist\@endpefalse
}
\makeatother

\begin{document}

Lots of text here.

\begin{thm}
This is true.
\end{thm}

\begin{proof}
It's obvious!
\end{proof}

\end{document}

在此处输入图片描述

更紧凑的版本使用xpatch

\documentclass{memoir}

\usepackage{amsthm,xpatch}
\newtheorem{thm}{Theorem}

\newlength{\normalparindent}
\AtBeginDocument{\setlength{\normalparindent}{\parindent}}
\xpatchcmd{\proof}{\hskip\labelsep}{\hskip\labelsep\hskip\normalparindent}{}{}

\begin{document}

Lots of text here.

\begin{thm}
This is true.
\end{thm}

\begin{proof}
It's obvious!
\end{proof}

\end{document}

答案2

我想您可以将证明设置为常规段落,而不是列表的一部分。

在此处输入图片描述

\documentclass{memoir}

\usepackage{amsthm}
\newtheorem{thm}{Theorem}

\newlength{\storeparindent}
\AtBeginDocument{\setlength{\storeparindent}{\parindent}}

\makeatletter
\renewenvironment{proof}[1][\proofname]{\par
  \pushQED{\qed}%
  \normalfont \vspace{6\p@\@plus6\p@}%
  {\itshape #1\@addpunct{.}}\hspace*{\labelsep}%
  \ignorespaces
}{%
  \popQED
  \@endpefalse
}
\makeatother

\begin{document}

Lots of text here.

\begin{thm}
This is true.
\end{thm}

\begin{proof}
It's obvious!
\end{proof}

\end{document}

这将确保“proof段落”的缩进方式与其他段落相同。此外,如果文档类重置\parindentproof环境也会随之重置。

您可能希望对帖子proof间距进行一些调整,因为列表确实有这个功能。

相关内容