我在 的项目符号方面遇到了麻烦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 的帖子。)