\RaggedLeft в \newcommand не работает должным образом

\RaggedLeft в \newcommand не работает должным образом

Я хочу, чтобы в каждом подразделе были две строки (что-то вроде «метаданные страницы»), выровненные по правому краю. Эти строкиникогдабудет полной ширины (один содержит только дату).

Для этого я пытался определить команду, которая помещает их в среду RaggedLeft, чтобы (1) избежать всех этих предупреждений «Underfull hbox» и (2) не печатать так много.

Это просто не работает.

% !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}

В результате вторая строка оказывается связанной слева, и я все равно получаю предупреждение «незаполненный hbox».

Интересный факт: если я помещаю это в \FlushRightсреду, то это работает, но это (1) не то, что мне нужно, (2) я все равно получаю предупреждения и (3) я вообще этого не понимаю, и мне не нравятся вещи, которых я не понимаю ;) .

Эксперименты с командами, отличными от ragged2e, дают те же результаты.

Я использую latexmk (с luatex 1.10.0 / TeX live 2019) на Mac.

решение1

Происходит следующее: \end{RaggedLeft}просто завершается набор текста по правому краю, но не выполняется команда завершения абзаца, поэтому вторая строка набирается со стандартными настройками.

В вашем случае \RaggedLeftэто не тот инструмент, потому что с короткими строками вы получите недозаполненные поля. Используйте стандартное \raggedleftобъявление.

Я минимизировал пример, удалив все ненужные части.

\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}

введите описание изображения здесь

Связанный контент