如何改变发音中的边距(类似定理的环境)?

如何改变发音中的边距(类似定理的环境)?

我希望下面代码中示例环境中的边距稍微缩进。实现此目的的最简单方法是什么?它应该适用于所有示例环境。

在下面的例子中,只有标题缩进,但我希望整个环境从两侧(稍微)缩进。

\documentclass{amsart}

\newtheoremstyle{ugh}
{3pt}% hSpace above
{3pt}% hSpace below
{}% hBody font
{1cm}% hIndent amount
{\bfseries}% hTheorem head font
{:}% hPunctuation after theorem head
{.5em}% hSpace after theorem head
{}% hTheorem head spec (can be left empty, meaning ‘normal’)

\theoremstyle{ugh}
\newtheorem{example}{Example}
\usepackage{lipsum}


\begin{document}

\lipsum[1-2]

\begin{example}
% I want this automatically indented a bit at both sides for any example 
\lipsum[3-4] \qed
\end{example}

\lipsum[5-6]

\end{document}

答案1

\@thm我会在环境中本地修补该命令example。当然,你无法在环境中正确陈述定理,但我认为你不会这样做。

\documentclass{amsart}

\usepackage{etoolbox}
\usepackage{lipsum}

\theoremstyle{definition}
\newtheorem{innerexample}{Example}

\makeatletter
\patchcmd{\endinnerexample}{\endtrivlist}{\endlist}{}{}
\newenvironment{example}
 {\patchcmd{\@thm}{\trivlist}{\list{}{\leftmargin=3em \rightmargin=3em}}{}{}%
  \innerexample\pushQED{\qed}}
 {\popQED\endinnerexample}
\makeatother

\begin{document}

\lipsum*[1]
\[
e^x=\sum_{k\ge0}\frac{x^k}{k!}
\]
\lipsum[2]

\begin{example}
\lipsum*[3]
\[
e^x=\sum_{k\ge0}\frac{x^k}{k!}
\]
\lipsum*[4]
\end{example}

\lipsum[5-6]

\end{document}

这个想法是修补\@thmdo\list而不是\trivlist,所以我们能够使用\leftmargin\rightmargin。修补发生在example环境内部,因此当环境结束时它将消失。

我还在最后添加了自动 QED。\qedhere如果示例以列表或显示结尾,则照常使用。

在此处输入图片描述

答案2

这是一个基于changemargin环境的解决方案

编辑:这并没有回答显示方程的问题

\documentclass{amsart}

\newtheoremstyle{ugh}
{3pt}% hSpace above
{3pt}% hSpace below
{}% hBody font
{}% hIndent amount
{\bfseries}% hTheorem head font
{:}% hPunctuation after theorem head
{.5em}% hSpace after theorem head
{}% hTheorem head spec (can be left empty, meaning ‘normal’)

\theoremstyle{ugh}
\newtheorem{eexample}{Example}

\newenvironment{changemargin}{%
\begin{list}{}{%
\setlength{\topsep}{0pt}%
\setlength{\leftmargin}{1cm}%    
\setlength{\rightmargin}{1cm}%  
\setlength{\listparindent}{\parindent}%
\setlength{\itemindent}{\parindent}%
\setlength{\parsep}{\parskip}%
}%
\item[]}{\end{list}}

\newenvironment{example}{%
\begin{changemargin}\vskip-\baselineskip
\begin{eexample}}{%
\end{eexample}\end{changemargin}}
\usepackage{lipsum}


\begin{document}

\lipsum[1-2]

\begin{example}
% I want this automatically indented a bit at both sides for any example 
\lipsum[3-4] \qed
\end{example}

\lipsum[5-6]

\end{document}

如果

\documentclass{amsart}

取而代之

\documentclass[leqno]{article}
\usepackage{amsmath,amsthm}

它是正确的。

编辑:使用 amsart 完成解决方案这不是正确的方法,但它可以完成工作

\documentclass{amsart}

\newtheoremstyle{ugh}
{3pt}% hSpace above
{3pt}% hSpace below
{}% hBody font
{}% hIndent amount
{\bfseries}% hTheorem head font
{:}% hPunctuation after theorem head
{.5em}% hSpace after theorem head
{}% hTheorem head spec (can be left empty, meaning ‘normal’)

\theoremstyle{ugh}
\newtheorem{eexample}{Example}

\newenvironment{changemargin}{%
\begin{list}{}{%
\setlength{\topsep}{0pt}%
\setlength{\leftmargin}{1cm}%    
\setlength{\rightmargin}{1cm}%  
\setlength{\listparindent}{\parindent}%
\setlength{\itemindent}{\parindent}%
\setlength{\parsep}{\parskip}%
}%
\item[]%
}{\end{list}}

\newenvironment{example}{%
\begin{changemargin}%
\eeq\vskip-\baselineskip%
\begin{eexample}}{%
\end{eexample}\end{changemargin}}
\usepackage{lipsum}

\makeatletter\def\eeq{%                                     this may be bad idea
\def\maketag@@@##1{\makebox[1.5cm][r]{\m@th\normalfont##1}}}
\makeatother

\begin{document}


\lipsum[1-2]

\begin{example}
% I want this automatically indented a bit at both sides for any example 
\lipsum[3-4]

\begin{equation}
    x+y
\end{equation}
\qed
\end{example}

\lipsum[5-6]

\end{document}

相关内容