El paquete graphicx ofrece comandos que colocan contenido en una *caja* y luego lo rotan, escalan o reflejan. El contenido no tiene que ser una imagen: una frase, una fórmula o todo un tabular, cualquier cosa que quepa en una caja puede transformarse. Esta página cubre cuatro comandos, \rotatebox (rotar), \scalebox (escalar por un factor), \reflectbox (reflejar horizontalmente) y \resizebox (escalar a un tamaño objetivo), y la distinción central: ¿especificas un *factor* o un *tamaño objetivo*?
Transformaciones de caja en graphicx
Para usar estos comandos, carga \usepackage{graphicx} en el preámbulo. A pesar del nombre, no son solo para imágenes. Las transformaciones que define graphicx, \rotatebox, \scalebox, \resizebox (y \resizebox*) y \reflectbox, funcionan igual: componen su argumento dentro de una caja y luego transforman toda esa caja. Así puedes transformar no solo una imagen (\includegraphics), sino cualquier material que quepa en una caja, texto, una fórmula, un tabular, etc.
La idea organizadora es distinguir entre comandos que toman un factor y comandos que toman un tamaño objetivo. \scalebox recibe un factor relativo, como “0,8 veces el original” o “el doble”. \resizebox, en cambio, recibe un tamaño final absoluto, como “5cm de ancho” o “todo el ancho del texto”, y calcula el factor necesario. \rotatebox toma un ángulo y \reflectbox refleja. La tabla siguiente resume el panorama.
| Comando | Qué se indica | Efecto |
|---|---|---|
\rotatebox | Un ángulo (grados) | Rota el contenido en sentido antihorario |
\scalebox | Un factor (relativo) | Escala el contenido por un factor |
\reflectbox | (nada) | Refleja el contenido horizontalmente |
\resizebox | Ancho y alto objetivo (absolutos) | Escala el contenido para ajustarlo a ese tamaño |
Rotar - \rotatebox
\rotatebox{angle}{content} coloca el contenido en una caja y lo rota en sentido antihorario por el ángulo indicado, en grados. Un ángulo positivo lo gira a la izquierda; uno negativo, a la derecha. Por ejemplo, \rotatebox{90}{...} pone el contenido de pie, como si estuviera en vertical, mientras que \rotatebox{-90}{...} lo inclina al otro lado.
これは \rotatebox{45}{斜めの文字} です。
This is \rotatebox{45}{slanted text}.En este ejemplo solo la frase “slanted text” se eleva 45 grados alrededor de su esquina inferior izquierda, mientras el texto alrededor permanece horizontal. Ten en cuenta que la caja rotada es más alta que la original, así que la línea donde aparece crece para acomodarla.
Puedes cambiar el pivote con el argumento opcional [origin=...]. En origin se indican una o dos letras de l (izquierda), r (derecha), c (centro), t (arriba), b (abajo) y B (línea base). Por ejemplo, \rotatebox[origin=c]{180}{...} gira el contenido 180 grados alrededor del centro de su caja, dejándolo boca abajo. El pivote por defecto es lB (izquierda-línea base). Para más control, x= e y= fijan un punto arbitrario, y units= redefine la unidad del ángulo (units=-360 da sentido horario; units=6.283185 da radianes).
\rotatebox[origin=c]{180}{さかさま}\quad\rotatebox{90}{タテ}Escalar por factor y reflejar - \scalebox y \reflectbox
\scalebox{factor}{content} escala el contenido por un factor. \scalebox{2}{...} lo duplica; \scalebox{0.5}{...} lo reduce a la mitad. El factor se aplica igual en ambas direcciones, así que se conserva la forma o relación de aspecto.
Para estirar las dos direcciones por separado, da un factor vertical como segundo argumento opcional. La forma es \scalebox{h-factor}[v-factor]{content}. \scalebox{1}[2]{...} deja igual el ancho pero duplica la altura; \scalebox{0.8}[1.2]{...} lo hace 0,8 de ancho y 1,2 de alto. Si omites el factor vertical, toma el mismo valor que el horizontal, produciendo una escala uniforme.
\scalebox{2}{大きく}\quad\scalebox{0.5}{小さく}\quad\scalebox{1}[2]{縦長}Un factor también puede ser negativo, lo que refleja a lo largo de ese eje. \scalebox{-1}[1]{...} tiene factor horizontal -1 y vertical 1: una imagen especular horizontal. Es tan común que graphicx ofrece el atajo \reflectbox{content}, que significa exactamente \scalebox{-1}[1]{...}. Del mismo modo, \scalebox{1}[-1]{...} da un volteo vertical.
Able was I \reflectbox{Able was I}Aquí la frase “Able was I” va seguida de su imagen especular, la misma frase invertida de izquierda a derecha.
Escalar a un tamaño objetivo - \resizebox
\resizebox{width}{height}{content} escala el contenido a un tamaño final especificado. Mientras \scalebox es relativo (“tantas veces el original”), \resizebox recibe un tamaño objetivo absoluto, “5cm de ancho”, “2cm de alto”, y LaTeX calcula el factor necesario. \resizebox{3cm}{2cm}{...} estira el contenido, de forma independiente en cada dirección, para que mida exactamente 3cm de ancho y 2cm de alto.
Para fijar solo una dimensión manteniendo la relación de aspecto, pon un signo de exclamación ! en la otra. La dirección con ! reutiliza el factor derivado de la dimensión especificada. Esta es la forma más común del comando: \resizebox{\textwidth}{!}{...}, por ejemplo, hace que el contenido sea exactamente tan ancho como el texto y escala la altura proporcionalmente. \resizebox{!}{1cm}{...} lo hace de 1cm de alto y deja que el ancho siga.
Dentro de los argumentos de tamaño puedes usar \width, \height, \totalheight y \depth, que representan las dimensiones originales del contenido. \resizebox{2\width}{!}{...} significa “hacerlo el doble de su ancho original”. La forma con estrella \resizebox*{width}{height}{content} interpreta el segundo argumento como altura + profundidad, la altura total incluyendo descensos bajo la línea base; la forma sin estrella cuenta solo la altura sobre la línea base.
% 元の幅の倍に
\resizebox{2\width}{!}{倍の幅}
% 高さ 1cm、横は比例
\resizebox{!}{1cm}{Tall}Reducir una tabla demasiado ancha
El uso práctico más común de \resizebox es reducir una tabla que se sale del ancho del texto para que encaje. Envuelve todo el entorno tabular en \resizebox{\textwidth}{!}{...} y la tabla completa se escala exactamente al ancho del texto. Como las transformaciones de caja no distinguen qué hay dentro, una tabla funciona igual que cualquier otro material.
\resizebox{\textwidth}{!}{%
\begin{tabular}{lrrr}
項目 & 第1四半期 & 第2四半期 & 第3四半期 \\
\hline
売上 & 120 & 138 & 151 \\
費用 & 80 & 84 & 90 \\
\end{tabular}%
}Pero este truco es un arma de doble filo. Como \resizebox escala todo lo que hay dentro, incluido el texto, una reducción fuerte produce letra más pequeña que el cuerpo, a veces difícil de leer, y desentonada con el texto alrededor. Redefinir después el tamaño de fuente de la tabla no surte efecto, porque al final se escala toda la caja. Por eso la solución correcta es primero hacer que la propia tabla encaje: ajustar anchos de columna, usar \small y similares, o quitar columnas. Trata \resizebox como último recurso. Consulta la página de diseño de tablas para más detalles.
adjustbox: una alternativa de más alto nivel
Los comandos de graphicx son simples y potentes, pero al combinarlos tienden a anidarse mucho. El paquete adjustbox (cargado con \usepackage{adjustbox}) es una alternativa de más alto nivel que los reúne en una interfaz clave-valor al estilo de \includegraphics. Con \adjustbox{key=value,...}{content} puedes fijar angle= (rotar), scale= (factor), width=/height= (tamaño objetivo), reflect (reflejar) y más a la vez; también existe un entorno adjustbox correspondiente.
\adjustbox{angle=45,scale=0.8}{まとめて変形}
\adjustbox{max width=\textwidth}{%
\begin{tabular}{lrr} ... \end{tabular}%
}Resulta especialmente práctico max width=\textwidth (y max totalheight=, etc.). El \resizebox{\textwidth}{!}{...} de la sección anterior también agranda una tabla que sea más estrecha que el texto, mientras que max width= solo reduce cuando el contenido se desborda y lo deja intacto si ya encaja. Así, las tablas que caben conservan el tipo del cuerpo, y solo las demasiado anchas se reducen. En documentos que usan mucha rotación, escala y reflejo, o cuando quieres manejar desbordes limpiamente, adjustbox es la opción más cómoda.