我对以下自定义命令有疑问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}
选项之间不要有空格,否则空格会被排版。