Beamer 多语言模板:自定义命令空格问题

Beamer 多语言模板:自定义命令空格问题

我对以下自定义命令有疑问beamer 多语言模板

\newcommand{\boldlang}[2]{\lang{#1}{\textbf{#2}}}
\boldlang{it}{Text} \boldlang{en}{Text}

输出中添加了使用以下命令不存在的空格:

\textbf{Text}

您可以在 gitlab 上将项目下载为 MWE。在使用多种语言时,有什么方法可以避免添加空格?

答案1

Beamer 与此无关。问题在于multilanguage.sty

\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{multilanguage}[2015/10/04 Create a document in one of multiple languages]

% ... comments omitted ...

\usepackage{ifthen}

\newcommand{\setdoclang}[2]
{% <--- missing
    \main@language{#2}% <--- missing
    \def\doclang{#2}% <--- missing
    \def\doclangshort{#1}% <--- missing
}

% set short and long language codes, the second one must be known by babel
\setdoclang{en}{english}
%\setdoclang{it}{italian}

%
% Multilingual support commands
%
\newcommand{\langif}[3]
{% <--- missing
    \ifthenelse{\equal{#1}{\doclang} \OR \equal{#1}{\doclangshort}}
        {#2}
        {#3}% <--- missing
}

\newcommand{\lang}[2]{\langif{#1}{#2}{}}
\newcommand{\sectionlang}[2]{\lang{#1}{\section{#2}}}
\newcommand{\subsectionlang}[2]{\lang{#1}{\subsection{#2}}}
\newcommand{\subsubsectionlang}[2]{\lang{#1}{\subsubsection{#2}}}

\newcommand{\frametitlelang}[2]{\lang{#1}{{#2}}}

\newcommand{\boldlang}[2]{\lang{#1}{\textbf{#2}}}

该字符串显示包代码中缺少的% <--- missing位置。%

正如代码最初写的那样,每次使用\langif,因此\lang也会添加两个空格。

保护行尾\setdoclang并不是真正需要的,但谨慎一点总是好的。

此外,你应该输入

\boldlang{it}{Text}\boldlang{en}{Text}

选项之间不要有空格,否则空格会被排版。

相关内容