我正在编写一个乳胶课程,并希望有一个命令可以用不同的语言打印一个句子如果 babel
已导入。如果babel
没有导入(检测到),它将只打印英文句子。我本来想自己写这个句子,但不知怎么的告诉 LaTeX,如果它检测到西班牙语,则打印这个句子。
\documentclass{article}
% This is some command in the .sty file
\newcommand{\printText}{%
This is a sentence
% Esta es una frase % for spanish
% Dette er en setning % for norwegian
% To jest zdanie % for polish
}
%% Babel may or may not be imported afterwards:
%\usepackage[spanish]{babel}
\begin{document}
\printText % If babel is not imported, this prints the english sentence.
\end{document}
我可以这样做吗没有导入babel
我的.cls
文件?另外:如果在调用时使用了命令不支持的语言(例如意大利语)\printText
,则使用该命令最好打印一些错误(并且 PDF 上没有文本输出)。可能是这样的:
\msg_new:nnn { printText } { unsupported-language }
{ Unsupported~ language~ `<current language>'~ for~ command. }
{ printText~ currently~ supports~ english,~ spanish,~ norwegian~ and~ polish. }
答案1
您可以使用\languagename
(它也可以在不使用 Babel 的情况下定义):
\documentclass{article}
\ExplSyntaxOn
\prop_new:N\g_vebjorn_text_prop
\prop_gset_from_keyval:Nn \g_vebjorn_text_prop
{
english = { This~is~a~sentence },
spanish = { Esta~es~una~frase },
polish = { To~jest~zdanie }
}
\newcommand{\printText}
{
\prop_get:NVNTF \g_vebjorn_text_prop \languagename \l_tmpa_tl
{ \l_tmpa_tl }
{ \prop_item:Nn \g_vebjorn_text_prop {english} }
}
\ExplSyntaxOff
\usepackage[spanish]{babel}
\begin{document}
\printText
\end{document}