\RaggedLeft in einem \newcommand funktioniert nicht wie erwartet

\RaggedLeft in einem \newcommand funktioniert nicht wie erwartet

Ich möchte in jedem Unterabschnitt zwei Zeilen (eine Art „Seitenmetadaten“) rechtsbündig haben. Diese Zeilen sindniemalswird die volle Breite haben (eines enthält nur ein Datum).

Zu diesem Zweck habe ich versucht, einen Befehl zu definieren, der sie in eine RaggedLeft-Umgebung platziert, um (1) alle diese „Underfull hbox“-Warnungen zu vermeiden und (2) nicht so viel tippen zu müssen.

Es funktioniert einfach nicht.

% !TEX root = ./raggedleft.tex

\documentclass{article}

\usepackage[english,ngerman]{babel}
\usepackage[hidelinks]{hyperref}
\usepackage{lmodern,textcomp}
\usepackage{ifluatex}
\ifluatex
  \usepackage{luacode}
  \usepackage{fourier}
  \usepackage{fontspec}
  \setmainfont{Erewhon}
\else
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage{fourier}
\fi
\usepackage[document]{ragged2e}

\setlength{\parskip}{1em}
\setlength{\parindent}{3em}
\renewcommand{\baselinestretch}{1.2}

%% new command: \postheader{datestring}{tagstring}
%% prints the post date and tags right-aligned
\newcommand\postheader[2]{%
  \begin{RaggedLeft}%
  #1\\#2%
  \end{RaggedLeft}%
}


\begin{document}

\postheader{Some weird words on the right}{and more words, hopefully right-bound}

Normal boring left-aligned text.

\end{document}

Das Ergebnis ist, dass die zweite Zeile linksbündig ist und ich trotzdem eine Warnung „hbox nicht voll“ bekomme.

Interessante Tatsache: Wenn ich dies in eine \FlushRightUmgebung platziere, funktioniert es, aber das ist (1) nicht, was ich will, (2) ich bekomme immer noch die Warnungen und (3) ich verstehe es überhaupt nicht und ich mag keine Dinge, die ich nicht verstehe ;).

Experimente mit anderen Befehlen als „ragged2e“ führen zu den gleichen Ergebnissen.

Ich verwende latexmk (mit Luatex 1.10.0/TeX Live 2019) auf dem Mac.

Antwort1

Dabei \end{RaggedLeft}wird lediglich der rechtsbündige Satz beendet, jedoch kein Absatzende-Befehl ausgegeben, sodass die zweite Zeile mit den Standardeinstellungen gesetzt wird.

In deinem Fall \RaggedLeftist das nicht das richtige Tool, da du bei kurzen Zeilen nicht volle Boxen bekommen würdest. Verwende die Standarddeklaration \raggedleft.

Ich habe das Beispiel minimiert, indem ich alle unwesentlichen Teile entfernt habe.

\documentclass{article}

%% new command: \postheader{datestring}{tagstring}
%% prints the post date and tags right-aligned
\newcommand\postheader[2]{%
  \par\begingroup\raggedleft #1\\#2\\\endgroup
}


\begin{document}

\postheader{Some weird words on the right}{and more words, hopefully right-bound}

Normal boring left-aligned text.

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen