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オプションにより、パッケージの 1 対 1 の置き換えが可能になりますenumerate

答え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}

(出力を 1 ページに収めるために巧妙なトリックを使用しましたが、ここでは示していません。) フランス語の場合は を使用することを強くお勧めします\usepackage[T1]{fontenc}。 はお勧めできませんutf8x

ここに画像の説明を入力してください

答え3

の代わりに、iflangと一緒に パッケージを使用できます。enumitem に渡すときにスペースも指定する必要があることに注意してください。箇条書き記号に戻りたい場合は、フランス語の部分でも を使用します。ちなみに、フランス語の itemize マーカーは であるべきだと思います。enumitemenumeratefrenchb\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 の投稿を参照してください。)

関連情報