在第二部分中向 \newenvironment 传递可选参数

在第二部分中向 \newenvironment 传递可选参数

我正在尝试定义一个新环境,如下所示:

\newenvironment{authorquotation}
    {
        \begin{quotation}[1]
    }{
            \begin{flushright}
                \textbf{#1}
            \end{flushright}
        \end{quotation}
    }

问题是,如果我#1在定义的第二部分使用,就会出现错误。有什么办法吗?

先感谢您。

答案1

实际情况比这要复杂一些。您不希望在引文文本和作者姓名之间有分页符。

此外,如果最后一行很短,您就不想添加垂直空间,因为这会很不美观。

可以\NewDocumentEnvironment使用定义末尾部分的参数。需要一些低级技巧来访问最后一行的宽度,以决定是否添加垂直空间。

在示例中,我使用双列格式只是为了使图片更短;左边是两个真实示例,右边是一些显示实际添加垂直空间的虚假示例。

如果有分页符,则前两行文本将与作者姓名一起显示。

\documentclass[twocolumn]{article}

\NewDocumentEnvironment{authorquotation}{m}
 {\begin{quotation}}
 {\printauthor{#1}\end{quotation}}

\makeatletter
\newcommand{\printauthor}[1]{%
  \begingroup
  \abovedisplayskip=\z@
  \abovedisplayshortskip=\z@
  \belowdisplayskip=\z@
  \belowdisplayshortskip=\z@
  $$\global\dimen1=\predisplaysize$$%
  \endgroup
  \vskip-\baselineskip
  \settowidth{\dimen0}{\textbf{#1}}%
  \nobreak
  \ifdim\dimexpr\dimen1+\dimen0-2\leftmargin+1pc>\linewidth
    \vspace{\medskipamount}%
  \fi
  \noindent\hspace*{\fill}\textbf{#1}%
}
\makeatother

\begin{document}

\begin{authorquotation}{Albert Einstein}
Jedenfalls bin ich überzeugt, daß der [Gott] nicht würfelt.
Jedenfalls bin ich überzeugt, daß der [Gott] nicht würfelt.
Jedenfalls bin ich überzeugt, daß der [Gott] nicht würfelt.
Jedenfalls bin ich überzeugt, daß der [Gott] nicht würfelt.
\end{authorquotation}

\begin{authorquotation}{Albert Einstein}
Jedenfalls bin ich überzeugt, daß der [Gott] nicht würfelt.
\end{authorquotation}

\newpage

\begin{authorquotation}{Albert Einstein}
Jedenfalls bin ich überzeugt, daß der [Gott] nicht würfelt.
Jedenfalls bin ich überzeugt, daß der [Gott] nicht würfelt.
Jedenfalls bin ich überzeugt, daß der [Gott] nicht würfelt.
Jedenfalls bin ich überzeugt, daß der [Gott]
\end{authorquotation}

\begin{authorquotation}{Albert Einstein}
Jedenfalls bin ich überzeugt, daß der [Gott] nicht würfelt.
Jedenfalls bin ich überzeugt, daß der [Gott] nicht würfelt.
Jedenfalls bin ich überzeugt, daß der [Gott] nicht würfelt.
Jedenfalls bin ich überzeugt, daß der [Gott] xxxxxx
\end{authorquotation}

\begin{authorquotation}{Albert Einstein}
Jedenfalls bin ich überzeugt, daß der [Gott] nicht würfelt.
Jedenfalls bin ich überzeugt, daß der [Gott] nicht würfelt.
Jedenfalls bin ich überzeugt, daß der [Gott] nicht würfelt.
Jedenfalls bin ich überzeugt, daß der [Gott] xxxxxxx
\end{authorquotation}

\end{document}

在此处输入图片描述

答案2

保存第一部分中的参数并在第二部分中使用该宏。

\documentclass{article}
\newenvironment{authorquotation}[1]
    {
        \def\myauthor{#1}
        \begin{quotation}
    }{
            \begin{flushright}
                \textbf{-\myauthor}
            \end{flushright}
        \end{quotation}
    }
\begin{document}
\begin{authorquotation}{Albert Einstein}
Jedenfalls bin ich überzeugt, daß der [Gott] nicht würfelt.
\end{authorquotation}
\end{document}

在此处输入图片描述

相关内容