Команда 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}

(Я применил хитрый трюк, чтобы получить вывод на одной странице, здесь он не показан.) Обратите внимание, что для французского языка настоятельно рекомендуется иметь \usepackage[T1]{fontenc}. Я не могу рекомендовать utf8x.

введите описание изображения здесь

решение3

Вы можете использовать iflangпакет вместе с enumitemвместо enumerate. Обратите внимание, что, возможно, вам также придется указать пробелы как frenchbпередачи enumitem. Если вы хотите вернуться с символом маркера, даже во французской части, просто используйте \setlistitemize,1]{label=\textbullet}. Кстати, я думаю, что маркер itemize во французском должен быть 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.)

Связанный контент