我正在写一篇论文,我想用不同的语言写两篇摘要,英语和加泰罗尼亚语。我从大学的论文模板开始(只有英语),然后添加了 Babel 包。我可以成功地用不同的语言创建两篇摘要,但我无法将第二篇摘要的名称更改为“Resum”。在网上发现 Babel 会更改 renewcommand,所以这是大多数人的解决方案:
\addto{\captionscatalan}{\renewcommand{\abstractname}{Resum}}
但这对我来说不起作用,因为第二个仍然显示为“抽象”。这是我对它们的定义:
\documentclass[a4paper, oneside]{discothesis}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english,catalan]{babel}
\begin{document}
%Abstract in English
\begin{abstract}
Abstract
\end{abstract}
%Abstract in Catalan
\begin{abstract}
\selectlanguage{catalan}
\addto{\captionscatalan}{\renewcommand{\abstractname}{Resum}}
Resum
\end{abstract}
\selectlanguage{english}
\end{document}
还尝试定义我自己的环境并得到完全相同的结果:
\documentclass[a4paper, oneside]{discothesis}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english,catalan]{babel}
\newenvironment{poliabstract}[1]
{\renewcommand{\abstractname}{#1}\begin{abstract}}
{\end{abstract}}
\begin{document}
\selectlanguage{english}
\begin{poliabstract}{Abstract}
Abstract in english
\end{poliabstract}
\selectlanguage{catalan}
\begin{poliabstract}{Resum}
Resum en català
\end{poliabstract}
\selectlanguage{english}
\end{document}
摘要在 cls 文件中以这种方式定义,没有触及模板文件中的任何内容:
\newenvironment{abstract}
{\chapter*{Abstract}}
{\vfill %kai
\noindent %kai
\ifx \@keywords \@empty
\relax
\else
{\bf Keywords:} \@keywords \\[6pt] %tobias
\fi
%
\ifx \@categories \@empty
\relax
\else
{\bf CR Categories:} \@categories %tobias
\fi
\addcontentsline{toc}{chapter}{Abstract}
}
答案1
名称“Abstract”在(有些错误的)类中是硬编码的。因此,您必须重新定义abstract
,如之前所建议的那样。以下方法对我有用,并且(在我看来)这是使用两个抽象的规范方法(我假设加泰罗尼亚语是主要语言):
\documentclass[a4paper, oneside]{discothesis}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english,catalan]{babel}
\makeatletter
\renewenvironment{abstract}
{\chapter*{\abstractname}}
{\vfill %kai
\noindent %kai
\ifx \@keywords \@empty
\relax
\else
{\bf Keywords:} \@keywords \\[6pt] %tobias
\fi
\ifx \@categories \@empty
\relax
\else
{\bf CR Categories:} \@categories %tobias
\fi
\addcontentsline{toc}{chapter}{\abstractname}}
\makeatother
\begin{document}
\begin{otherlanguage}{english}
\begin{abstract}
Abstract
\end{abstract}
\end{otherlanguage}
\begin{abstract}
Resum
\end{abstract}
\end{document}
如果主要语言是英语,则反转语言顺序(即catalan,english
),并将摘要更改为:
\begin{abstract}
Abstract
\end{abstract}
\begin{otherlanguage}{catalan}
\begin{abstract}
Resum
\end{abstract}
\end{otherlanguage}
如果您发现更多问题(例如,“关键词”也是硬编码的),请扩展您的 MWE。
答案2
您的模板中的 定义abstract
有点奇怪。但由于您或多或少地受模板的约束,因此这是我的简单而快速的解决方案。
只需重新定义环境,使用xparse
其可选参数的检查机制,在 praeambel 中如下方式:
\makeatletter
\RenewDocumentEnvironment{abstract}{o}{%
\chapter*{\abstractname}%
\IfValueT{#1}{\begin{otherlanguage}{#1}}%
}{%
\vfill %kai
\noindent %kai
\ifx \@keywords \@empty
\relax
\else
{\bf Keywords:} \@keywords \\[6pt] %tobias
\fi
%
\ifx \@categories \@empty
\relax
\else
{\bf CR Categories:} \@categories %tobias
\fi
\addcontentsline{toc}{chapter}{\abstractname}%
\IfValueT{#1}{\end{otherlanguage}}%
}
\makeatother
现在您可以按照以下方式使用它:
\begin{abstract}[<language-option>]
Text...
\end{abstract}
如果可选参数被省略,则使用文档的主要语言。
您仍然可以使用\addto{\captionscatalan}{\renewcommand{\abstractname}{Resum}}
命令,这是推荐的使用方式babel
。