使用 Babel 时无法更改摘要的名称

使用 Babel 时无法更改摘要的名称

我正在写一篇论文,我想用不同的语言写两篇摘要,英语和加泰罗尼亚语。我从大学的论文模板开始(只有英语),然后添加了 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

相关内容