\crefname 具有多种语言定义

\crefname 具有多种语言定义

我正在制作一个包含 2 种语言的 LaTeX 模板,并\selectlanguage{english}在之后使用来设置文档语言\begin{document}。这对于包来说很好cleveref,只是我已经使用创建了一个 box 环境tcolorbox,并且希望每种语言都有不同的 cref 名称。

\documentclass[5p,a4paper]{elsarticle}

\usepackage[english,norsk,nynorsk]{babel}

% Stuff from the .sty file of the project:
\RequirePackage{hyperref}
\hypersetup{hidelinks}
\RequirePackage[english,norsk]{cleveref}
\RequirePackage{appendix}
\RequirePackage[table]{xcolor}
\definecolor{NTNU_blue}{HTML}{2E5AAC}
\definecolor{bg_blue}{HTML}{cde4ff}
\RequirePackage{etoolbox}
\RequirePackage{tcolorbox}
\newcounter{infoboxCounter}
\setcounter{infoboxCounter}{0}
\newcommand{\infoboxbgcolor}{}
\newcommand{\infoboxframecolor}{}
\newcommand{\SetInfoBoxBgColor}[1]{\renewcommand{\infoboxbgcolor}{#1}} % command to change box color
\newcommand{\SetInfoBoxFrameColor}[1]{\renewcommand{\infoboxframecolor}{#1}} % command to change frame color
\SetInfoBoxBgColor{bg_blue} % default background color
\SetInfoBoxFrameColor{NTNU_blue} % default frame color
\newtcolorbox[use counter=infoboxCounter,
                number within= section
                ]
                {infobox}[2][]%
    {boxrule = 1.5pt,
    colback=\infoboxbgcolor,
    colframe = \infoboxframecolor,
    rounded corners,
    arc = 6pt,   % corners roundness
    title=\bfseries\sffamily #2 \hfill \theinfoboxCounter,
    #1
}

\crefname{infoboxCounter}{box}{boxes} % also needs to be defined for other languages.
\Crefname{infoboxCounter}{Box}{Boxes}

\begin{document}
\selectlanguage{norsk}

\begin{infobox}[label=box:info]{Infobox}
Here is an infobox.
\end{infobox}

\begin{equation}
    E=mc^2 \label{eq:E=mc}
\end{equation}

\Cref{eq:E=mc}.\par
See \cref{box:info} for more information. 

\appendix

\section{test}

\end{document}

通过更改\selectlanguage\selectlanguage{norsk}您可以看到附录的标题发生了变化(正确),公式引用也发生了变化。但是,自定义引用保持不变。所以,我的问题是:如何让自定义环境引用根据所选语言而改变?

可能是 if 语句?如果所选语言是英语,则给出此名称作为参考,等等。?

另外需要注意的是:cleveref 不适用于语言选项nynorsk。我该如何让它工作(我想我必须为这种语言定义 fig、tab 和所有其他环境?)?

答案1

每次调用时,您都需要相应地重新定义 crefname \selectlanguage,例如 via(我不懂 Norsk,所以我使用单词“nbox”来代替)。

\crefname{infoboxCounter}{box}{}
\Crefname{infoboxCounter}{Box}{}
\AtBeginDocument{%
    \addto\extrasenglish{%
        \crefname{infoboxCounter}{box}{boxes}%
        \Crefname{infoboxCounter}{Box}{Boxes}%
    }%
    \addto\extrasnorsk{%
        \crefname{infoboxCounter}{nbox}{nboxes}%
        \Crefname{infoboxCounter}{Nbox}{Nboxes}%
    }%
}

在此处输入图片描述

相关内容