我有这个代码:
%Abstracts
\newcommand{\@spanishabstractname}{{\bfseries Resumen}}
\newsavebox\@sabstract
\newenvironment{spanishabstract}{%
\lrbox\@sabstract\minipage{1\textwidth}\selectlanguage{spanish}\itshape}%
{\endminipage\endlrbox\normalfont}
\newcommand{\@englishabstractname}{{\bfseries Abstract}}
\newsavebox\@eabstract
\newenvironment{englishabstract}{%
\lrbox\@eabstract\minipage{1\textwidth}\selectlanguage{english}\itshape}%
{\endminipage\endlrbox\normalfont}
%Making Title
\newcommand{\maketitle}{%
\twocolumn[%
{\centering \@spanishabstractname\par}\linespace
\noindent\usebox{\@sabstract}\par\linespace
\@skeyw\par\onecmskip
{\centering \@englishabstractname\par}\linespace
\noindent\usebox{\@eabstract}\par\linespace
\@ekeyw
]
}
\maketitle
但是当我在文档中使用命令时,不会显示框\@sabstract
和\@eabstract
,如下所示。
如果我将代码定义\maketitle
放在\AtEndDocument
:
\AtEndDocument{%
\twocolumn[%
{\centering \@spanishabstractname\par}\linespace
\noindent\usebox{\@sabstract}\par\linespace
\@skeyw\par\onecmskip
{\centering \@englishabstractname\par}\linespace
\noindent\usebox{\@eabstract}\par\linespace
\@ekeyw
]
}
一切都很完美!
我该如何修复这个问题?为什么错了?谢谢!
答案1
该框是在组(环境)中定义的,因此在组外不可用。您需要全局设置它:
\newcommand{\@spanishabstractname}{{\bfseries Resumen}}
\newsavebox\@sabstract
\newenvironment{spanishabstract}
{\begin{lrbox}{8}
\minipage{1\textwidth}\selectlanguage{spanish}\itshape}
{\endminipage\end{lrbox}\global\setbox\@sabstract\box8 }
英文摘要亦同。
不建议使用\lrbox
和。我会把指令放在后面( 之后),而不是 的定义中。\endlrbox
\bfseries
\centering
\@spanishabstractname
答案2
我尝试创建一个 MWE,其中以下命令我不知道:
\@ekeyw
\@skeyw
\linespace
这里是 MWE
\documentclass{article}
\usepackage[spanish,english]{babel}
\usepackage{blindtext}
\makeatletter
%Abstracts
\newcommand{\@spanishabstractname}{{\bfseries Resumen}}
\newsavebox\@sabstract
\newenvironment{spanishabstract}{%
\lrbox\@sabstract\minipage{1\textwidth}\selectlanguage{spanish}\itshape}%
{\endminipage\endlrbox\normalfont}
\newcommand{\@englishabstractname}{{\bfseries Abstract}}
\newsavebox\@eabstract
\newenvironment{englishabstract}{%
\lrbox\@eabstract\minipage{1\textwidth}\selectlanguage{english}\itshape}%
{\endminipage\endlrbox\normalfont}
%Making Title
\renewcommand{\maketitle}{%
\twocolumn[%
{\centering \@spanishabstractname\par}
\noindent\usebox{\@sabstract}\par
\par
{\centering \@englishabstractname\par}
\noindent\usebox{\@eabstract}\par
]
}
\makeatother
\begin{document}
\begin{spanishabstract}
\blindtext
\end{spanishabstract}
\begin{englishabstract}
\blindtext
\end{englishabstract}
\maketitle
\end{document}