Warum benötigt \hspace*{\fill} \null für die gewünschte Ausgabe?

Warum benötigt \hspace*{\fill} \null für die gewünschte Ausgabe?

Ich habe versucht, einige mathematische Operationen in einer Aufzählungsliste zu zentrieren, ohne einen Zeilensprung durchzuführen.

Ich fand schließlichdiese Diskussionvon \hfillvs \hspace*{\fill}, was darauf hindeutet, dass durch die Verwendung \hspace*{\hfill}vermieden wird, dass Speicherplatz auf der rechten Seite verschlungen wird. Wenn ich es jedoch implementiere, erkenne ich zwischen den beiden keinen Unterschied in der Darstellung.

NB: Ich habe das spezifische Problem durch die Einfügung eines gelöst \null, würde aber gerne wissen, welches Missverständnis dazu führt, dass ich eine andere Ausgabe erwarte.

dhwarum ist es \hspace*{\hfill}immer noch erforderlich \null, den rechten Platz nicht zu verschlingen?

MWE:

\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}
    \item \hspace*{\fill} %
            % Some math content
            $y(x) = a_o + a_1 (x-k) + a_2(x-k)^2 + a_3(x-k)^3 + a_4(x-k)^4$ 
            %
            \hspace*{\fill}
    %
    \item \hspace*{\fill} %
            % Some math content
            $y(x) = a_o + a_1 (x-k) + a_2(x-k)^2 + a_3(x-k)^3 + a_4(x-k)^4$
            %
            \hspace*{\fill}\null
\end{enumerate}
\end{document}

Beachten Sie den Unterschied zwischen der ersten Zeile (ohne \null) und der zweiten Zeile (mit \null):

Bildbeschreibung hier eingeben

Antwort1

In Latex ist es normaler, zum Zentrieren von Dingen die Umgebung \centeringoder das Symbol zu verwenden. Sie benötigen dies jedoch , weil bei Verwendung im horizontalen Modus der horizontale Abstand am Ende des vorherigen Absatzes entfernt wird.center\null\item

Wenn Sie %diese beiden Zeilen entfernen, werden sie auf die gleiche Weise eingestellt

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}
    \item \hspace*{\fill} %
            % Some math content
            $y(x) = a_o + a_1 (x-k) + a_2(x-k)^2 + a_3(x-k)^3 + a_4(x-k)^4$ 
            %
            \hspace*{\fill}
    % > If you remove this % (or add a line above it) both will render the same.
    \item \hspace*{\fill} %
            % Some math content
            $y(x) = a_o + a_1 (x-k) + a_2(x-k)^2 + a_3(x-k)^3 + a_4(x-k)^4$
            %
            \hspace*{\fill}\null
\end{enumerate}
\end{document}

Beachten Sie auch, dass die Verwendung \hspace*{\fill} %auch die Zentrierung unterbricht, da sie Füllkleber und einen Wortabstand hinzufügt, was Sie wahrscheinlich beabsichtigt haben.\hspace*{\fill}%

Antwort2

Erstens:

  • \hspace*{\fill} %erzeugt \hfill, gefolgt vonRaum(Beachten Sie das Leerzeichen vor dem Prozentzeichen), aber Direct \hfillmacht das nicht.

  • \hspace*schützt am Anfang der Leitung, nicht am Ende.

  • TeX (kein LaTeX!) entfernt den letzten Klebstoff, wenn \pargefolgt wird.

  • \itemDies geschieht beim LaTeX- Makro \unskip\unskip\par, wenn es im horizontalen Modus verarbeitet wird.

  • \hspace*{\fill}Das Makro von LaTeX wird \vrule width0pt \hfill \hskip0ptin horizontaler Metamorphose eingefügt.

Das \hspace*{\fill} %folgende „by“ \itementfernt das unerwünschte Leerzeichen vor dem Prozentzeichen zuerst mit \unskip, dann \hskip0ptmit dem zweiten \unskipund schließlich \parmit \hfill. Dies ist der Grund, warum Ihr \hspace*{\fill} %verschwindet, wenn darauf ein folgt \item.

verwandte Informationen