
У меня проблемы с маркерами для 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.)