\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}