En el manual memoir
sobre página 183, se da este ejemplo:
\begin{figure} \centering \hspace*{\fill} {ILLUSTRATION 1} \hfill {ILLUSTRATION 2} \hspace*{\fill} \caption{Example float with two illustrations} \label{fig:mult1} \end{figure}
He tratado de averiguar cuál es la diferencia entre \hspace*{\fill}
y \hfill
es !?
La \hfill
definición y \hspace
definición no me ayudaron mucho.
Comentarios
Responder
Usando su fragmento de código como ejemplo, \centering
solo tiene un impacto en el \caption
. Sin embargo,
\hspace*{\fill} {ILLUSTRATION 1} \hfill {ILLUSTRATION 2} \hspace*{\fill}
está destinado a configurar ILLUSTRATION 1
y ILLUSTRATION 2
incluso distribuidos en \textwidth
:
\documentclass{article} \usepackage{showframe}% http://ctan.org/pkg/showframe \begin{document} \begin{figure} \centering \hspace*{\fill} {ILLUSTRATION 1} \hfill {ILLUSTRATION 2} \hspace*{\fill} \caption{Example float with two illustrations} \label{fig:mult1} \end{figure} \end{document}
Sin embargo, al reemplazar \hspace*{\fill}
con \hfill
, el espacio del margen derecho es " engulló ":
\documentclass{article} \usepackage{showframe}% http://ctan.org/pkg/showframe \begin{document} \begin{figure} \centering \hfill%\hspace*{\fill} {ILLUSTRATION 1} \hfill {ILLUSTRATION 2}% \hfill%\hspace*{\fill} \caption{Example float with two illustrations} \label{fig:mult1} \end{figure} \end{document}
dando valor a la definición del comando para \hspace*
:
LaTeX elimina el espacio horizontal que viene al final de una línea. Si no desea que LaTeX elimine este espacio, incluya el argumento opcional
*
. Entonces el espacio nunca se elimina.
Una alternativa para usar si \hfill
es más intuitivo que \hspace*{\fill}
, es insertar texto ficticio (como \null
o \mbox{}
) al (inicio y) final de la línea. De esa manera, \hfill
siempre tener " algo para estirar infinitamente contra ":
\null\hfill% {ILLUSTRATION 1} \hfill {ILLUSTRATION 2}% \hfill\null%
En los ejemplos anteriores, showframe
simplemente resaltó el bloque de texto.
Comentarios
- ¿Son
\hspace{\fill}
y\hfill
iguales? ¿Por qué no hay\hfill*
? - ¿Por qué necesita
\null
al principio de la línea? Puedo ' t ver la diferencia erence con o sin. - @adl: No ' no lo necesita al principio de la línea. Solo proporciona codificación simétrica.
Respuesta
Hay una muy buena discusión y respuestas en ¿Cuál es la diferencia entre ' fil ' y ' fill '? .
En relación con los detalles de su pregunta, \hfill
es un Primitiva TeX que se expande a,
\hfill = \hskip 0pt plus 1fill minus 0pt
mientras que \hspace*{\fill}
, es una macro LaTeX, que deja un espacio igual a a 1fill
. La versión estrella del comando se usa si el pegamento se va a insertar al principio de una línea.
a\hfill b\hfill \hspace{0.01mm}