Im Handbuch memoir
Auf Seite 183 wird dieses Beispiel gegeben:
\begin{figure} \centering \hspace*{\fill} {ILLUSTRATION 1} \hfill {ILLUSTRATION 2} \hspace*{\fill} \caption{Example float with two illustrations} \label{fig:mult1} \end{figure}
Ich habe versucht herauszufinden, was der Unterschied zwischen \hspace*{\fill}
ist und \hfill
ist!?
Die \hfill
Definition und \hspace
Definition hat mir nicht viel geholfen.
Kommentare
- Sie können Folgendes verwenden:
a\hfill b\hfill \hspace{0.01mm}
Antwort
Am Beispiel Ihres Code-Snippets hat \centering
nur Auswirkungen auf \caption
.
\hspace*{\fill} {ILLUSTRATION 1} \hfill {ILLUSTRATION 2} \hspace*{\fill}
soll jedoch ILLUSTRATION 1
und ILLUSTRATION 2
setzen gleichmäßig verteilt auf \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}
Wenn Sie jedoch \hspace*{\fill}
durch \hfill
ersetzen, ist der Abstand vom rechten Rand " verschlungen ":
\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}
Geben der Befehlsdefinition für \hspace*
:
LaTeX entfernt den horizontalen Raum am Ende einer Zeile. Wenn Sie nicht möchten, dass LaTeX diesen Speicherplatz entfernt, fügen Sie das optionale Argument
*
ein. Dann wird der Speicherplatz niemals entfernt.
Eine Alternative, die verwendet werden kann, wenn \hfill
intuitiver als \hspace*{\fill}
ist, besteht darin, Dummy-Text einzufügen (wie \null
oder \mbox{}
) am (Anfang und) Ende der Zeile. Auf diese Weise wird die \hfill
immer " etwas haben, das sich unendlich gegen " strecken kann:
\null\hfill% {ILLUSTRATION 1} \hfill {ILLUSTRATION 2}% \hfill\null%
In den obigen Beispielen hat showframe
lediglich den Textblock hervorgehoben.
Kommentare
- Ist
\hspace{\fill}
und\hfill
dasselbe? Warum gibt es kein\hfill*
? - Warum benötigen Sie
\null
am Zeilenanfang? Ich kann ' t sehen die diff mit oder ohne. - @adl: Sie benötigen es ' am Zeilenanfang nicht. Es ist nur eine symmetrische Codierung vorgesehen.
Antwort
Unter Was ist der Unterschied zwischen ' fil ' und ' fülle '? .
In Bezug auf die Einzelheiten in deiner Frage ist \hfill
a Das TeX-Grundelement, das auf
\hfill = \hskip 0pt plus 1fill minus 0pt
erweitert wird, während \hspace*{\fill}
ein LaTeX-Makro ist, das ein Leerzeichen gleich lässt a 1fill
. Die Sternversion des Befehls wird verwendet, wenn der Kleber am Zeilenanfang eingefügt werden soll.