在新环境中使用 \twocolumn

在新环境中使用 \twocolumn

我对使用该命令还不熟悉\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}

在此处输入图片描述

相关内容