Renewcommand labelitem 不支持多种语言

Renewcommand labelitem 不支持多种语言

我在 的项目符号方面遇到了麻烦itemize
我需要将文档的一部分用英语表达,将另一部分用法语表达。因此我使用:

\usepackage[english,french]{babel}

然后在我的文档中,当需要时我使用它:

\selectlanguage{english}
\selectlanguage{french}

我在序言中也用过:

\renewcommand{\labelitemi}{$\bullet$}

结果是,在我的列表中,我没有项目符号,而只有破折号!我想要一个项目符号。

我注意到,如果我只使用

\usepackage[english]{babel}

(因此整个文档都是英文的)问题就消失了,我有了要点。但是我需要英文和法文,因为例如“chapter”和“chapitre”这两个词。

那么,是否有人有解决方案,能够在英语和法语文档的列表中使用项目符号?

这是一个有效的例子:

\documentclass[10pt,a4paper]{report}
\usepackage[utf8x]{inputenc}
\usepackage{ucs}
\usepackage[english,french]{babel}
%\usepackage[english]{babel}
\usepackage{amsmath,amsthm}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{enumerate}

\renewcommand{\labelitemi}{$\bullet$}

\begin{document}

\selectlanguage{english}

\chapter{First chapter}

This is my list :

 \begin{itemize}
    \item Value 1
    \item Value 2
 \end{itemize}

 \selectlanguage{french}
 \chapter{Second chapitre}

 Ceci est ma liste:

 \begin{itemize}
    \item Valeur 1
    \item Valeur 2
 \end{itemize}

 \end{document}

答案1

这是french在嘲笑,尝试添加这个

\addto\captionsenglish{
  \renewcommand{\labelitemi}{$\bullet$}
}

基本上french会改变列表,但english实际上不会(AFAIR)。所以我们将这样的开关添加回english


french编辑,全部忽略,使用

\usepackage[shortlabels]{enumitem}
\setlist[itemize]{label=\textbullet}

enumitem是一个非常好的软件包,该shortlabels选项使它成为该enumerate软件包的 1-1 替代品。

答案2

使用\frenchbsetup{StandardItemLabels=true},所以babel-french不会使用法式风格的逐项列表。

\documentclass[10pt,a4paper]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,french]{babel}
\usepackage{amsmath,amsthm}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{enumerate}

\frenchbsetup{StandardItemLabels=true}

\begin{document}

\selectlanguage{english}

\chapter{First chapter}

This is my list:

\begin{itemize}
\item Value 1
\item Value 2
\end{itemize}

\selectlanguage{french}

\chapter{Second chapitre}

Ceci est ma liste:

\begin{itemize}
\item Valeur 1
\item Valeur 2
\end{itemize}

\end{document}

(我用了一个巧妙的技巧来将输出放在一页中,这里没有显示。)请注意,对于法语,强烈建议使用\usepackage[T1]{fontenc}。我不推荐utf8x

在此处输入图片描述

答案3

您可以将iflang包与 一起使用enumitem,而不是。请注意,在移交给 enumitem时,enumerate您可能还必须指定间距。如果您想使用项目符号返回,即使在法语部分,也只需使用。顺便说一句,我认为法语中的 itemize 标记应该是。frenchb\setlistitemize,1]{label=\textbullet}endash

\documentclass[10pt, a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english,french]{babel}
\usepackage{iflang}

\usepackage{enumitem}

\setlist[itemize, 1]{label = \IfLanguageName{french}{\textendash}{\textbullet}}

\begin{document}

\selectlanguage{english}

\chapter{First chapter}

This is my list :

 \begin{itemize}
    \item Value 1
    \item Value 2
 \end{itemize}

 \selectlanguage{french}
 \chapter{Second chapitre}

 Ceci est ma liste:

 \begin{itemize}
    \item Valeur 1
    \item Valeur 2
 \end{itemize}


 \chapter{Chapitre troisième}

\setlist[itemize, 1]{label = \textbullet}
 Ceci est ma liste:

 \begin{itemize}
    \item Valeur 1
    \item Valeur 2
 \end{itemize}

 \end{document} 

在此处输入图片描述

在此处输入图片描述

答案4

babel包以延迟方式执行各种任务,即在\begin{document}遇到指令时执行。要使您的(重新)定义\labelitemi起作用,您还需要延迟它。因此,替换

\renewcommand{\labelitemi}{$\bullet$}

\AtBeginDocument{\renewcommand{\labelitemi}{$\bullet$}}

或者更好的是,

\AtBeginDocument{\renewcommand{\labelitemi}{\textbullet}}

(如果您想要一个明确与之兼容的解决方案babel,请参阅@daleif 的帖子。)

相关内容