Labelitem Renewcommand não funciona com vários idiomas

Labelitem Renewcommand não funciona com vários idiomas

Estou tendo problemas com as balas de itemize.
Preciso ter uma parte do meu documento em inglês e outra em francês. Portanto eu uso:

\usepackage[english,french]{babel}

então, no meu documento, uso quando necessário:

\selectlanguage{english}
\selectlanguage{french}

Também usei no preâmbulo:

\renewcommand{\labelitemi}{$\bullet$}

E o resultado é que na minha lista não tenho uma bala e sim um travessão! E eu gostaria de uma bala.

Algo que notei é que se eu usar apenas

\usepackage[english]{babel}

(então todo o documento está em inglês) o problema desaparece e eu tenho os marcadores. Mas preciso do inglês e do francês por causa das palavras “capítulo” e “chapitre”, por exemplo.

Alguém tem uma solução para poder usar marcadores nas listas de um documento com inglês e francês?

Aqui está um exemplo prático:

\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}

Responder1

Isso é frenchzombaria, tente adicionar isso

\addto\captionsenglish{
  \renewcommand{\labelitemi}{$\bullet$}
}

Basicamente frenchaltera listas, mas englishnão (AFAIR). Então, adicionamos essa mudança de volta paraenglish


Edite, para ignorar frenchtudo junto, use

\usepackage[shortlabels]{enumitem}
\setlist[itemize]{label=\textbullet}

enumitemé um pacote muito bom de se conhecer, a shortlabelsopção o torna um substituto 1-1 para o enumeratepacote.

Responder2

Use \frenchbsetup{StandardItemLabels=true}, portanto babel-frenchnão usará listas detalhadas no estilo francês.

\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}

(Usei um truque tortuoso para obter a saída em uma única página, não mostrada aqui.) Observe que com o francês é altamente recomendável ter arquivos \usepackage[T1]{fontenc}. Eu não posso recomendar utf8x.

insira a descrição da imagem aqui

Responder3

Você pode usar o iflangpacote junto com enumitem, em vez de enumerate. Observe que talvez você também precise especificar espaçamentos ao frenchbpassar para enumitem. Se quiser voltar com o símbolo de bala, mesmo na parte francesa, é só usar \setlistitemize,1]{label=\textbullet}. Aliás, acho que o marcador itemize em francês deveria ser um arquivo 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} 

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Responder4

O babelpacote executa diversas tarefas de maneira retardada, ou seja, quando a \begin{document}instrução é encontrada. Para que sua (re)definição \labelitemifuncione, você também precisa atrasá-la. Assim, substitua

\renewcommand{\labelitemi}{$\bullet$}

com

\AtBeginDocument{\renewcommand{\labelitemi}{$\bullet$}}

ou, melhor ainda, com

\AtBeginDocument{\renewcommand{\labelitemi}{\textbullet}}

(Se você deseja uma solução que funcione explicitamente com babelela, consulte a postagem de @daleif.)

informação relacionada