Le paquet graphicx fournit des commandes qui placent un contenu dans une *boîte*, puis la font pivoter, la redimensionnent ou la reflètent. Le contenu n’a pas besoin d’être une image : une phrase, une formule ou tout un tabular, tout ce qui tient dans une boîte peut être transformé. Cette page présente quatre commandes, \rotatebox (rotation), \scalebox (mise à l’échelle par facteur), \reflectbox (miroir horizontal) et \resizebox (mise à une taille cible), ainsi que leur distinction centrale : indique-t-on un *facteur* ou une *taille cible* ?
Les transformations de boîtes de graphicx
Pour utiliser ces commandes, chargez \usepackage{graphicx} dans le préambule. Malgré son nom, elles ne servent pas seulement aux images. Les transformations définies par graphicx, \rotatebox, \scalebox, \resizebox avec sa forme étoilée \resizebox*, et \reflectbox, fonctionnent toutes de la même manière : elles composent leur argument dans une boîte, puis transforment toute cette boîte. On peut donc transformer non seulement une image (\includegraphics), mais tout matériau qui tient dans une boîte, texte, formule, tableau, etc.
L’idée structurante est la différence entre les commandes qui prennent un facteur et celles qui prennent une taille cible. \scalebox reçoit un facteur relatif, par exemple « 0,8 fois l’original » ou « deux fois plus grand ». \resizebox, à l’inverse, reçoit une taille finale absolue, « 5cm de large », « toute la largeur du texte », et calcule le facteur nécessaire. \rotatebox prend un angle, et \reflectbox reflète. Le tableau ci-dessous résume le tout.
| Commande | Argument | Effet |
|---|---|---|
\rotatebox | Un angle (degrés) | Fait pivoter le contenu dans le sens antihoraire |
\scalebox | Un facteur (relatif) | Agrandit ou réduit le contenu par facteur |
\reflectbox | (rien) | Reflète le contenu horizontalement |
\resizebox | Largeur et hauteur cibles (absolues) | Met le contenu à cette taille |
Rotation - \rotatebox
\rotatebox{angle}{content} place le contenu dans une boîte et le fait pivoter dans le sens antihoraire de l’angle indiqué, en degrés. Un angle positif tourne vers la gauche ; un angle négatif vers la droite. Par exemple, \rotatebox{90}{...} dresse le contenu comme s’il était vertical, tandis que \rotatebox{-90}{...} l’incline dans l’autre sens.
これは \rotatebox{45}{斜めの文字} です。
This is \rotatebox{45}{slanted text}.Dans cet exemple, seule l’expression « slanted text » est relevée de 45 degrés autour de son coin inférieur gauche, tandis que le texte environnant reste horizontal. Notez que la boîte tournée est plus haute que l’originale ; la ligne qui la contient s’agrandit donc pour l’accueillir.
On peut changer le pivot avec l’argument optionnel [origin=...]. origin reçoit une ou deux lettres parmi l (gauche), r (droite), c (centre), t (haut), b (bas) et B (ligne de base). Par exemple, \rotatebox[origin=c]{180}{...} fait tourner le contenu de 180 degrés autour du centre de sa boîte, le retournant. Le pivot par défaut est lB (gauche-ligne de base). Pour un contrôle plus fin, x= et y= fixent un pivot arbitraire, et units= redéfinit l’unité de l’angle (units=-360 donne le sens horaire ; units=6.283185 donne les radians).
\rotatebox[origin=c]{180}{さかさま}\quad\rotatebox{90}{タテ}Mise à l’échelle par facteur et miroir - \scalebox et \reflectbox
\scalebox{factor}{content} met le contenu à l’échelle selon un facteur. \scalebox{2}{...} le double ; \scalebox{0.5}{...} le réduit de moitié. Le facteur s’applique de la même façon dans les deux directions, donc la forme, ou rapport d’aspect, est conservée.
Pour étirer séparément les deux directions, donnez un facteur vertical comme deuxième argument optionnel. La forme est \scalebox{h-factor}[v-factor]{content}. \scalebox{1}[2]{...} conserve la largeur mais double la hauteur ; \scalebox{0.8}[1.2]{...} donne une largeur de 0,8 et une hauteur de 1,2. Si le facteur vertical est omis, il prend la valeur du facteur horizontal, ce qui produit une mise à l’échelle uniforme.
\scalebox{2}{大きく}\quad\scalebox{0.5}{小さく}\quad\scalebox{1}[2]{縦長}Un facteur peut aussi être négatif, ce qui reflète selon cet axe. \scalebox{-1}[1]{...} a un facteur horizontal -1 et vertical 1 : c’est une image miroir horizontale. Cet usage est assez fréquent pour que graphicx fournisse le raccourci \reflectbox{content}, exactement équivalent à \scalebox{-1}[1]{...}. De même, \scalebox{1}[-1]{...} produit un retournement vertical.
Able was I \reflectbox{Able was I}Dans cet exemple, l’expression « Able was I » est suivie de son image miroir, la même expression retournée de gauche à droite.
Adapter à une taille cible - \resizebox
\resizebox{width}{height}{content} met le contenu à une taille finale indiquée. Là où \scalebox est relatif, « tant de fois l’original », \resizebox reçoit une taille cible absolue, « 5cm de large », « 2cm de haut », et LaTeX calcule le facteur nécessaire. \resizebox{3cm}{2cm}{...} étire le contenu, indépendamment dans chaque direction, pour qu’il fasse exactement 3cm de large et 2cm de haut.
Pour fixer une seule dimension en conservant le rapport d’aspect, mettez un point d’exclamation ! dans l’autre. La direction ! réutilise simplement le facteur déduit de la dimension spécifiée. C’est la forme la plus courante : \resizebox{\textwidth}{!}{...}, par exemple, rend le contenu exactement aussi large que le texte et ajuste la hauteur proportionnellement. \resizebox{!}{1cm}{...} le rend haut de 1cm, avec une largeur proportionnelle.
Dans les arguments de taille, on peut utiliser \width, \height, \totalheight et \depth, qui désignent les dimensions originales du contenu. \resizebox{2\width}{!}{...} signifie « deux fois la largeur d’origine ». La forme étoilée \resizebox*{width}{height}{content} interprète le second argument comme hauteur + profondeur, c’est-à-dire la hauteur totale incluant ce qui descend sous la ligne de base ; la forme non étoilée ne compte que la hauteur au-dessus de la ligne de base.
% 元の幅の倍に
\resizebox{2\width}{!}{倍の幅}
% 高さ 1cm、横は比例
\resizebox{!}{1cm}{Tall}Réduire un tableau trop large
L’usage pratique le plus courant de \resizebox consiste à réduire un tableau qui dépasse la largeur du texte pour qu’il tienne. Enveloppez tout l’environnement tabular dans \resizebox{\textwidth}{!}{...} et tout le tableau est ramené exactement à la largeur du texte. Comme les transformations de boîte ne se soucient pas du contenu, un tableau fonctionne comme le reste.
\resizebox{\textwidth}{!}{%
\begin{tabular}{lrrr}
項目 & 第1四半期 & 第2四半期 & 第3四半期 \\
\hline
売上 & 120 & 138 & 151 \\
費用 & 80 & 84 & 90 \\
\end{tabular}%
}Mais cette astuce est à double tranchant. Comme \resizebox met à l’échelle tout ce qui se trouve à l’intérieur, texte compris, une forte réduction donne des caractères plus petits que le corps, parfois difficiles à lire, et désaccordés du texte environnant. Redéfinir ensuite la taille de police du tableau ne change rien, puisque toute la boîte est réduite à la fin. La bonne correction consiste donc d’abord à faire tenir le tableau lui-même : ajuster les largeurs de colonnes, utiliser \small et variantes, ou supprimer des colonnes. \resizebox doit rester un dernier recours. Voir la page sur la mise en page des tableaux pour les détails.
adjustbox, une option de plus haut niveau
Les commandes de graphicx sont simples et puissantes, mais leur combinaison crée vite des imbrications profondes. Le paquet adjustbox, chargé par \usepackage{adjustbox}, est une alternative de plus haut niveau qui les réunit dans une interface clé-valeur à la manière de \includegraphics. Avec \adjustbox{key=value,...}{content}, on peut fixer en une fois angle= (rotation), scale= (facteur), width=/height= (taille cible), reflect (miroir), etc. ; un environnement adjustbox correspondant est aussi fourni.
\adjustbox{angle=45,scale=0.8}{まとめて変形}
\adjustbox{max width=\textwidth}{%
\begin{tabular}{lrr} ... \end{tabular}%
}max width=\textwidth est particulièrement pratique, ainsi que max totalheight= et autres. Le \resizebox{\textwidth}{!}{...} de la section précédente agrandit aussi un tableau plus étroit que le texte, tandis que max width= ne réduit que si le contenu déborde et le laisse intact sinon. Les tableaux qui tiennent gardent donc la typographie du corps, et seuls les tableaux trop larges sont réduits. Pour les documents qui utilisent beaucoup rotation, mise à l’échelle et miroir, ou lorsque l’on veut gérer proprement les débordements, adjustbox est plus confortable.