如下面的 MWE 所示,一些frenchb
开关(例如)在( )条件\FBFrenchFootnotestrue
中被考虑,但不是全部(例如):后者只有直接插入文档主体中才会被考虑。babel
\iflanguage
\FBStandardItemLabelsfalse
\documentclass[french,english]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\begin{document}
%
\newcommand{\test}[1][english]{%
\selectlanguage{#1}
\iflanguage{french}{
\section{French}
\FBStandardItemLabelsfalse%
\FBFrenchFootnotestrue%
}{
\section{English}
\FBStandardItemLabelstrue%
\FBFrenchFootnotesfalse%
}%
Foo\footnote{Bar}.%
\begin{itemize}
\item Foo
\item Bar
\end{itemize}
}
%
\test
\test[french]
\test
\FBStandardItemLabelsfalse%
\test[french]
\end{document}
\iflanguage
您知道为什么以及如何强制在条件中考虑所有这些开关吗?
答案1
您可以通过发出以下命令明确要求将列表布局更新为当前开关指定的布局
\update@frenchlists
这在 内部或外部均可行\iflanguage
。由于宏名称包含内部@
字符,因此您必须用它括住代码\makeatletter...\makeother
\documentclass[french,english]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\makeatletter
\newcommand{\test}[1][english]{%
\selectlanguage{#1}
\iflanguage{french}{%
\section{French}
\FBStandardItemLabelsfalse
\FBFrenchFootnotestrue
}{%
\section{English}
\FBStandardItemLabelstrue
\FBFrenchFootnotesfalse
}%
\update@frenchlists
Foo\footnote{Bar}.
\begin{itemize}
\item Foo
\item Bar
\end{itemize}
}
\makeatother
\begin{document}
\test
\test[french]
\test
\test[french]
\end{document}