W instrukcji memoir
dotyczącej strona 183, podano ten przykład:
\begin{figure} \centering \hspace*{\fill} {ILLUSTRATION 1} \hfill {ILLUSTRATION 2} \hspace*{\fill} \caption{Example float with two illustrations} \label{fig:mult1} \end{figure}
Próbowałem dowiedzieć się, jaka jest różnica między \hspace*{\fill}
a \hfill
jest !?
Definicja \hfill
i \hspace
definicja niewiele mi pomogła.
Komentarze
Answer
Na przykładzie fragmentu kodu \centering
ma wpływ tylko na \caption
. Jednak
\hspace*{\fill} {ILLUSTRATION 1} \hfill {ILLUSTRATION 2} \hspace*{\fill}
ma na celu ustawienie ILLUSTRATION 1
i ILLUSTRATION 2
równomiernie rozmieszczone w \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}
Jednak zamiast \hspace*{\fill}
z \hfill
, spacja z prawego marginesu wynosi " 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}
nadanie wartości definicji polecenia dla \hspace*
:
LaTeX usuwa poziome odstępy, które pojawiają się na końcu linii. Jeśli nie chcesz, aby LaTeX usuwał tę spację, dołącz opcjonalny argument
*
. Wtedy spacja nigdy nie zostanie usunięta.
Alternatywą do użycia if \hfill
jest bardziej intuicyjna niż \hspace*{\fill}
, jest wstawienie fikcyjnego tekstu (np. \null
lub \mbox{}
) na (początku i) końcu wiersza. Dzięki temu \hfill
będzie zawsze mieć " coś do nieskończonego rozciągania względem ":
\null\hfill% {ILLUSTRATION 1} \hfill {ILLUSTRATION 2}% \hfill\null%
W powyższych przykładach showframe
jedynie podświetlił blok tekstu.
Komentarze
- Czy
\hspace{\fill}
i\hfill
to to samo? Dlaczego nie ma\hfill*
? - Dlaczego potrzebujesz
\null
na początku wiersza? Mogę ' t zobacz różnicę erence z lub bez. - @adl: Nie ' nie potrzebujesz tego na początku wiersza. Po prostu zapewnia symetryczne kodowanie.
Odpowiedź
Bardzo dobra dyskusja i odpowiedzi na Jaka jest różnica między ' fil ' a ' fill '? .
W związku ze szczegółami w pytaniu \hfill
to Prymityw TeX, który rozwija się do,
\hfill = \hskip 0pt plus 1fill minus 0pt
natomiast \hspace*{\fill}
to makro LaTeX-a, które pozostawia spację równą a 1fill
. Gwiazdkowa wersja polecenia jest używana, jeśli klej ma być wstawiony na początku wiersza.
a\hfill b\hfill \hspace{0.01mm}