我正在为文档编写一个类,该类继承自article
,我遇到了一个问题:文档应该全部分为两列,摘要除外。对于这两列,我使用了包multicol
。
asbtract 也会显示在两列中,我的第一次尝试是将 .cls 文件中的抽象环境重新定义为下一个:
\renewenvironment{abstract}
{\end{multicols}\begin{center}{\scshape Resúmen}\end{center} }
{\begin{multicols}{2}}
和...一起:
\AtBeginDocument{\begin{multicols}{2}}
\AtEndDocument{\end{multicols}}
我认为这会“暂停”多列环境,让摘要位于一列中。
第一个问题是我收到错误:
! LaTeX Error: \begin{abstract} on input line 9 ended by \end{multicols}.
! LaTeX Error: \begin{multicols} on input line 11 ended by \end{abstract}.
因此,它不是放在\end{multicols}
我认为它应该在的位置,而是放在之前\end{abstract}
,等等。
第二个问题是,如果删除所有内容,标题也会\maketitle
出现在一列中。
我该怎么做?比如在定义的环境中暂停多列环境?如果做不到,我希望能有其他更优雅的解决方案。
我希望它尽可能独立于文件.tex
。也就是说,我可以multicol
在文件中的文本中写入环境tex
,但我希望文件.cls
能够处理这个问题。
谢谢
答案1
不要在家里做这个;-)
诀窍是让fake
当前环境multicols
在 的开始时就处于 状态abstract
,然后停止多列环境,正确设置抽象环境并使用包\AfterEndDocument
来etoolbox
恢复\begin{multicols}{2}
。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{multicol}
\usepackage{blindtext}
\usepackage{etoolbox}
\makeatletter
\let\latexabstractend\endabstract
\renewenvironment{abstract}
{\def\@currenvir{multicols}\end{multicols}\def\@currenvir{abstract}\begin{center}{\scshape \abstractname}\end{center} }
{\latexabstractend}%
\AfterEndEnvironment{abstract}{\begin{multicols}{2}}
\AtBeginDocument{\begin{multicols}{2}}
\AtEndDocument{\end{multicols}}
\begin{document}
\blindtext
\begin{abstract}
\blindtext
\end{abstract}
\blindtext
\end{document}
答案2
如果您想考虑使用twocolumn
documentclass 的选项,那么您可以使用包(bundle)中的@twocolumnfalse
环境或环境。strip
cuted
sttools
@twocolumnfalse 环境:
\documentclass[a4paper, twoside, spanish]{article}%
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{geometry}
\usepackage{fourier, erewhon}
\usepackage{lipsum}
\title{A nice title}
\author{Ye author}
\date{\today}
\setlength\columnsep{3em}
\begin{document}
\twocolumn[%
\begin{@twocolumnfalse}
\maketitle
\begin{abstract}
This is a test for an abstract in a two column environment. This is a test for an abstract in a two column environment. This is a test for an abstract in a two column environment. This is a test for an abstract in a two column environment.
\end{abstract}
\vskip2\baselineskip
\end{@twocolumnfalse}
]% {%
\lipsum[1-6]
}%
\end{document}
剥离环境: \documentclass[a4paper, twocolumn, twoside, spanish]{article}% \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{babel} \usepackage{geometry} \usepackage{fourier, cuted, erewhon} \usepackage{lipsum} \title{一个不错的标题} \author{Ye author} \date{\today} \setlength\columnsep{3em}
\begin{document}
\begin{strip}
\vspace*{\dimexpr-\baselineskip-\stripsep\relax}
\centering
\maketitle
\begin{abstract}
\begin{minipage}{0.9\linewidth}
This is a test for an abstract in two column mode. This is a test for an abstract in two column mode. This is a test for an abstract in two column mode. This is a test for an abstract in two column mode. This is a test for an abstract in two column mode.
\end{minipage}
\end{abstract}
\vskip2\baselineskip
\end{strip}
\lipsum[1-6]
\end{document}