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, 一起使用,而不是enumerate。請注意,也許您還必須在frenchb移交給 enumitem 時指定間距。如果您想返回項目符號,即使在法語部分,也只需使用\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 的帖子。)

相關內容