No memoir
manual do página 183, este exemplo é dado:
\begin{figure} \centering \hspace*{\fill} {ILLUSTRATION 1} \hfill {ILLUSTRATION 2} \hspace*{\fill} \caption{Example float with two illustrations} \label{fig:mult1} \end{figure}
Tentei descobrir qual é a diferença entre \hspace*{\fill}
e \hfill
é !?
A \hfill
definição e \hspace
definição não me ajudaram muito.
Comentários
Resposta
Usando seu snippet de código como exemplo, \centering
tem impacto apenas no \caption
. No entanto,
\hspace*{\fill} {ILLUSTRATION 1} \hfill {ILLUSTRATION 2} \hspace*{\fill}
destina-se a definir ILLUSTRATION 1
e ILLUSTRATION 2
mesmo distribuído em \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}
No entanto, substituindo \hspace*{\fill}
por \hfill
, o espaço da margem direita é " gobbled ":
\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 à definição do comando para \hspace*
:
LaTeX remove o espaço horizontal que vem no final de uma linha. Se você não quiser que o LaTeX remova este espaço, inclua o argumento opcional
*
. Então, o espaço nunca será removido.
Uma alternativa para usar se \hfill
for mais intuitivo do que \hspace*{\fill}
é inserir um texto fictício (como \null
ou \mbox{}
) no (início e) final da linha. Dessa forma, o \hfill
sempre tenha " algo para esticar infinitamente ":
\null\hfill% {ILLUSTRATION 1} \hfill {ILLUSTRATION 2}% \hfill\null%
Nos exemplos acima, showframe
apenas destacou o bloco de texto.
Comentários
-
\hspace{\fill}
e\hfill
são iguais? Por que não há\hfill*
? - Por que você precisa de
\null
no início da linha? Eu posso ' t ver o diff erence com ou sem. - @adl: Você não ' não precisa disso no início da linha. Ele apenas fornece codificação simétrica.
Resposta
Há uma discussão e respostas muito boas em Qual é a diferença entre ' fil ' e ' preencher '? .
Conforme relacionado aos detalhes de sua pergunta \hfill
é um Primitivo TeX que se expande para,
\hfill = \hskip 0pt plus 1fill minus 0pt
enquanto \hspace*{\fill}
, é uma macro LaTeX, que deixa um espaço igual a a 1fill
. A versão estrela do comando é usada se a cola for inserida no início de uma linha.
a\hfill b\hfill \hspace{0.01mm}