使用 Babel 支持的命令编写包/文档类

使用 Babel 支持的命令编写包/文档类

我正在编写一个乳胶课程,并希望有一个命令可以用不同的语言打印一个句子如果 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}

相关内容