在 def .cls 中,framed 丢失了上下文

在 def .cls 中,framed 丢失了上下文

在此处输入图片描述

这是原始布局。

使得作者的每一行代码是这样的:

\def\@typeset@author@line{%
  \andify\@currentauthors\par\noindent
  \@currentauthors\def\@currentauthors{}%
  \ifx\@currentaffiliations\@empty\else
    \andify\@currentaffiliations
      \unskip, {\@currentaffiliations}\par
  \fi
  \def\@currentaffiliations{}
}

这是它被实例化的地方:

\global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
   \noindent\begin{framed}\addresses\@typeset@author@line\end{framed}
   \par\medskip}%

我将 typeset@author@line 的定义更改为:

\def\@typeset@author@line{%
    \begin{framed}
  \andify\@currentauthors\par\noindent
  \@currentauthors\def\@currentauthors{}%
  \ifx\@currentaffiliations\@empty\else
    \andify\@currentaffiliations
      \unskip, {\@currentaffiliations}\par
  \fi
  \def\@currentaffiliations{}
  \end{framed}
}

当我尝试更改 typeset@author@line 的定义时,得到以下结果: 在此处输入图片描述

latex 正在丢失它应该解析的作者的上下文,并且它对每行都执行每个作者的解析,每行加一。在这种情况下,我该如何保持上下文正常工作?我想为每一行添加一个框架。

答案1

我在发布问题 30 秒后自己回答了这个问题......我对此感觉不太好,但是嘿,没有人知道事情什么时候会成功,事实上,在创建问题后,我对乳胶进行了更深入的思考。

这是获取单独行应采用的 def 方法:

\def\@typeset@author@line{%
  \andify\@currentauthors\par\noindent
  \begin{framed}
  \@currentauthors
  \ifx\@currentaffiliations\@empty\else
    \andify\@currentaffiliations
      \unskip, {\@currentaffiliations}\par
  \fi
  \end{framed}
  \def\@currentauthors{}%
  \def\@currentaffiliations{}

}

def@currentauthors{} 和 def@currentaffiliations{} 正在抛弃有关该行的知识。所以他们必须在 {framed} 之外,但我不知道为什么……但它有效!

相关内容