我正在制作一个包含 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}%
}%
}