大写法语部件名称

大写法语部件名称

它类似于这个问题,但它的两个答案在这里似乎都不起作用。

我定义标题格式如下:

\usepackage[explicit]{titlesec}
\titleclass{\part}{top} % make part like a chapter
\titleformat{\part}[display]
    {\raggedleft}
    {\MakeUppercase{\partname}~\thepart}
    {1em}
    {\MakeUppercase{#1}}
\usepackage[english,french]{babel}

因此,理想情况下,人们应该PARTIE I在新的部分看到。但实际上人们会看到Première partie I

方法接受的答案对此没有影响。另一方面,使用以下 babel 设置,

\frenchsetup{PartNameFull=false}

结果将变成Partie I,仍然不是大写。

我该如何修复此行为?或者有没有什么方法可以Première partie不显示I法语模式?

下面是 MWE。

\documentclass{article}

\usepackage[explicit]{titlesec}
\titleclass{\part}{top} % make part like a chapter
\titleformat{\part}[display]
    {\raggedleft}
    {\MakeUppercase{\partname}~\thepart}
    {1em}
    {\MakeUppercase{#1}}

\usepackage[english,french]{babel}

%% This produces "Partie"
% \frenchsetup{PartNameFull=false}%

%% These seem to have no effect
% \usepackage{etoolbox}
% \makeatletter
% \renewcommand\FB@emptypart{\def\thepart{\unskip}}
% \patchcmd{\@part}{\partname}{Partie}{}{}
% \makeatother

\begin{document}

\selectlanguage{french}
\part{Test}

\selectlanguage{english}
\part{Test}

\end{document}

添加:我应该提到polyglossia没有这个问题,但另一方面,人们无法毫不费力地Première partie通过其新提供的选项获得类似的东西frenchpart=true——报告“补丁失败”。

答案1

法语 Babel 支持试图确保像“Première partie”这样的结构通过(本地)更改来隐藏数字,从而\partname~\thepart自动翻译成“Première partie” 。这在您的示例中失败了,因为在调用之前使本地重新定义结束。可以通过移动到它的参数并保护它来避免这种情况:\thepart\MakeUppercase\thepart\thepart

更改{\MakeUppercase{\partname}~\thepart}{\MakeUppercase{\partname~\protect\thepart}}以获取“Première partie”。

您还可以本地重新定义\frenchpartname以确保它适用于\MakeUppercase

改变

{\MakeUppercase{\partname}~\thepart}

{\renewcommand\frenchpartname{Partie}\MakeUppercase{\partname}~\thepart}

得到“PARTIE I”。

答案2

该命令\partname被定义为执行一些在您的情况下不需要的复杂的事情。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[english,french]{babel}

\usepackage{titlesec}

\titleclass{\part}{top} % make part like a chapter
\titleformat{\part}[display]
    {\filleft}
    {\MakeUppercase{\partname}~\thepart}
    {1em}
    {\MakeUppercase}
\addto\captionsfrench{\renewcommand{\partname}{Partie}}

\begin{document}

%\selectlanguage{french} % French is already default
\part{Test}

\selectlanguage{english}
\part{Test}

\end{document}

在此处输入图片描述

几点说明:titlesec优先\filleft使用\raggedleft。 没有必要使用explicit:最后一个强制参数中的最后一个标记\titleformat最终会跟随着括号内的标题,因此它可以是一个单参数宏。

实际上,我通常不鼓励使用:最好定义一个单独的宏来执行我们想要的操作,而不是用代码explicit弄乱参数。\titleformat

相关内容