web-dev-qa-db-fra.com

Projecteur LaTeX: comment changer l'indentation des balles?

J'ai vérifié le manuel de la classe Beamer (fichier PDF).

Je n'arrive pas à comprendre comment modifier les affectations des puces d'indentation à\itemize.

[C'est assez important, car j'utilise 2 diapositives de colonne, et je ne veux pas que le beamer vole trop d'espace horizontal].

43
anon

Beamer délègue simplement la responsabilité de la gestion de la mise en page des environnements itemize aux packages LaTeX de base, il n'y a donc rien de génial à faire dans Beamer lui-même pour modifier l'apparence/la mise en page de vos listes.

Étant donné que Beamer redéfinit itemize, item, etc., la manière la plus appropriée de manipuler des éléments tels que l'indentation est de redéfinir les modèles Beamer. J'ai l'impression que vous ne cherchez pas à aller aussi loin, mais si ce n'est pas le cas, faites-le-moi savoir et je développerai.

Il y a au moins trois façons d'atteindre votre objectif à partir de votre document, sans avoir à discuter avec les modèles Beamer.

Avec itemize

Dans l'extrait de code suivant, vous pouvez modifier la valeur de \itemindent De 0em En ce que vous voulez, y compris les valeurs négatives. 0em Est l'indentation par défaut de l'élément.

L'avantage de cette méthode est que la liste est stylée normalement. L'inconvénient est que la redéfinition de Beamer de itemize et \item Signifie que le nombre de paramètres pouvant être manipulés pour modifier la disposition de la liste est limité. Il peut être très difficile d'obtenir un bon espacement avec des éléments multilignes.

\begin{itemize}
  \setlength{\itemindent}{0em}
  \item This is a normally-indented item.
\end{itemize}

Avec list

Dans l'extrait de code suivant, le deuxième paramètre de \list Est la puce à utiliser et le troisième paramètre est une liste de paramètres de disposition à modifier. Le paramètre \leftmargin Ajuste le retrait de l'ensemble de l'élément de liste et de toutes ses lignes; \itemindent Modifie le retrait des lignes suivantes.

L'avantage de cette méthode est que vous avez toute la flexibilité des listes en non-Beamer LaTeX. L'inconvénient est que vous devez configurer le style de puce (et d'autres éléments visuels) manuellement (ou identifier la bonne commande pour le modèle que vous utilisez). Notez que si vous laissez le deuxième argument vide, aucune puce ne sera affichée et vous économiserez de l'espace horizontal.

\begin{list}{$\square$}{\leftmargin=1em \itemindent=0em}
  \item This item uses the margin and indentation provided above.
\end{list}

Définition d'un environnement customlist

Les lacunes de la solution list peuvent être améliorées en définissant un nouvel environnement customlist qui redéfinit fondamentalement l'environnement itemize de Beamer mais intègre également les \leftmargin Et \itemindent (Etc.) paramètres. Mettez ce qui suit dans votre préambule:

\makeatletter
\newenvironment{customlist}[2]{
  \ifnum\@itemdepth >2\relax\@toodeep\else
      \advance\@itemdepth\@ne%
      \beamer@computepref\@itemdepth%
      \usebeamerfont{itemize/enumerate \beameritemnestingprefix body}%
      \usebeamercolor[fg]{itemize/enumerate \beameritemnestingprefix body}%
      \usebeamertemplate{itemize/enumerate \beameritemnestingprefix body begin}%
      \begin{list}
        {
            \usebeamertemplate{itemize \beameritemnestingprefix item}
        }
        { \leftmargin=#1 \itemindent=#2
            \def\makelabel##1{%
              {%  
                  \hss\llap{{%
                    \usebeamerfont*{itemize \beameritemnestingprefix item}%
                        \usebeamercolor[fg]{itemize \beameritemnestingprefix item}##1}}%
              }%  
            }%  
        }
  \fi
}
{
  \end{list}
  \usebeamertemplate{itemize/enumerate \beameritemnestingprefix body end}%
}
\makeatother

Maintenant, pour utiliser une liste détaillée avec indentation personnalisée, vous pouvez utiliser l'environnement suivant. Le premier argument est pour \leftmargin Et le second est pour \itemindent. Les valeurs par défaut sont respectivement 2,5em et 0em.

\begin{customlist}{2.5em}{0em}
   \item Any normal item can go here.
\end{customlist}

Un style de puce personnalisé peut être incorporé dans la solution customlist en utilisant le mécanisme Beamer standard de \setbeamertemplate. (Voir les réponses à la question this sur le TeX Stack Exchange pour plus d'informations.)

Alternativement, le style de puce peut simplement être modifié directement dans l'environnement, en remplaçant \usebeamertemplate{itemize \beameritemnestingprefix item} Par le style de puce que vous souhaitez utiliser (par exemple $\square$).

60
RTBarnard

J'utilise le package enumitem . Vous pouvez ensuite définir de telles marges lorsque vous déclarez vos listes (énumérer, décrire, détailler):

\begin{itemize}[leftmargin=0cm]
    \item Foo
    \item Bar
\end{itemize}

Naturellement, le package fournit de nombreuses autres personnalisations Nice pour les listes (utilisez 'label =' pour changer la puce, utilisez 'itemsep =' pour changer l'espacement entre les éléments, etc ... )

13
Geoff

Réglage \itemindent pour un nouvel environnement itemize résout le problème:

\newenvironment{beameritemize}
{ \begin{itemize}
  \setlength{\itemsep}{1.5ex}
  \setlength{\parskip}{0pt}
  \setlength{\parsep}{0pt}   
  \addtolength{\itemindent}{-2em}  }
{ \end{itemize} } 
7
Gergely