我对使用该命令还不熟悉\newenvironment
,这里遇到了一点问题。我使用 abstract-package 来获取两列文章中的单列摘要,其中包括该\twocolumn
命令。
问题是我想要创建一个新的环境,这样我就不必每次写摘要时都查看那个笨重的解决方案,这意味着我不想做这样的事情:
\documentclass[twocolumn]{article}
\usepackage{abstract}
\title{Title}
\date{\today}
\author{Me}
\newenvironment{costumabstract}
{
\twocolumn[
\maketitle
\begin{onecolabstract}\noindent
}
{
\end{onecolabstract}\vspace{.5cm}
]
}
\begin{document}
\begin{costumabstract}
Abstract
\end{costumabstract}
\end{document}
这会出现错误,因为方括号\twocolumn
跨越了我的环境的起始和结束条件。
这意味着我必须在我的文本中使用\twocolumn
我的costumabstract
环境中的命令,并且我宁愿不这样做...这里有解决方法吗?
答案1
这似乎是包的一项任务environ
,它允许您通过将其内容抓取到宏中以供自由使用来定义环境。
\documentclass[twocolumn]{article}
\usepackage{abstract}
\usepackage{environ}
\usepackage{lipsum}
\title{Title}
\date{\today}
\author{Me}
\NewEnviron{costumabstract}{%
\twocolumn[%
\maketitle
\begin{onecolabstract}\noindent
\BODY
\end{onecolabstract}\vspace{.5cm}%
]%
}
\begin{document}
\begin{costumabstract}
\lipsum[1]
\end{costumabstract}
\lipsum[1-3]
\end{document}
答案2
您可能希望先将环境的内容放在一个框中,然后在\twocolumn
宏内使用该框:
\documentclass[twocolumn]{article}
\usepackage{abstract,lipsum}
\title{Title}
\date{\today}
\author{Me}
\newenvironment{costumabstract}
{
\newsavebox{\mybox}
\begin{lrbox}{\mybox}\begin{minipage}{\dimexpr\textwidth-\absleftindent-\absrightindent\relax}
}
{
\end{minipage}\end{lrbox}
\twocolumn[
\maketitle
\begin{onecolabstract}\noindent\usebox{\mybox}
\end{onecolabstract}\vspace{.5cm}
]
}
\begin{document}
\begin{costumabstract}
\lipsum[2]
\end{costumabstract}
\lipsum[1-3]
\end{document}