缩短 \begin{} ... \end{}

缩短 \begin{} ... \end{}

\begin{}...\end{}是否有可能一劳永逸地简化繁琐的命令?

我的意思是,除了\begin{document} ... \end{document},我希望诸如的环境\begin{theorem}...\end{theorem}能够变成简单的单行命令。

答案1

这使用环境- 包装器,通过\NewDocumentCommand包来xparse实现更好的可配置性(和\par内容作为参数值)。

可能的垂直间距问题尚未得到解决。

\mytheorem{Title} content ...但由于环境需要一个明确的结束,所以无法说出来。

\documentclass{article}

\usepackage{xparse}
\usepackage{amsthm}

\newtheorem{theorem}{Theorem}[section] 


\renewcommand{\thetheorem}{\arabic{theorem}}

\NewDocumentCommand{\mytheorem}{+m+m}{%
  \begin{theorem}{#1}
    #2
  \end{theorem}
}


\begin{document}

\section{First}

\mytheorem{Theory on Brontosaurs, by Miss Ann Elk}{%

Brontosaurs are thin at one end, thick in the middle and thin again at the other end.
}

\end{document}

在此处输入图片描述

编辑:更新......此类定理环境的“通用”包装命令

newtheorem这为此类问题定义了一个通用的包装命令:

\GenericWrapper[section]{theoremname}{Theoremname}\mytheoremname将生成一个带有包装器的命令\begin{theoremname}...\end{theoremname}并重置每个部分(可选的第一个参数的默认值)。(为此xparse使用\NewDocumentCommand,以便于与方式相反地使用可选参数\newcommand[][]。)

该命令将定理标签更改为\arabic{theoremname}

\documentclass{article}

\usepackage{xparse}
\usepackage{amsthm}


\NewDocumentCommand{\GenerateWrapper}{+O{section}+m+m}{%
  \newtheorem{#2}{#3}[#1] 

  \expandafter\renewcommand\csname the#2\endcsname{\arabic{#2}}%

  \expandafter\DeclareDocumentCommand\csname my#2\endcsname{+m}{%
    \begin{#2}%
      ##1%
    \end{#2}
  }%
}%


\GenerateWrapper{theorem}{Theorem}%
\GenerateWrapper{exercise}{Exercise}%

\GenerateWrapper{question}{Question}%


\begin{document}


\section{First}

\mytheorem{%
Theory on Brontosaurs, by Miss Ann Elk%
Brontosaurs are thin at one end, thick in the middle and thin again at the other end.
}%

\myexercise{Find a Brontosaur%

Excavate a Brontosaur
}%

\myquestion{Mathematics

Prove that  
\[ \int\limits_{-\pi}^{\pi} e^{-x^2} = \sqrt{\pi} \]
}%

\end{document}

在此处输入图片描述

相关内容