\RaggedLeft em um \newcommand não funciona conforme esperado

\RaggedLeft em um \newcommand não funciona conforme esperado

Quero ter duas linhas (algum tipo de "metadados de página") em cada subseção alinhadas à direita. Essas linhas sãonuncaterá largura total (um contém apenas uma data).

Para isso eu estava tentando definir um comando que os colocasse em um ambiente RaggedLeft para (1) evitar todos aqueles avisos de "Hbox insuficiente" e (2) não digitar tanto.

Isso simplesmente não funciona.

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

O resultado é que a segunda linha está ligada à esquerda e ainda recebo um aviso de "hbox insuficiente".

Curiosidade: se eu colocar isso em um \FlushRightambiente, ele funciona, mas (1) não é isso que eu quero, (2) ainda recebo os avisos e (3) não entendo nada, e não ' não gosto de coisas que não entendo ;) .

Experimentos com comandos não-ragged2e produzem os mesmos resultados.

Estou usando latexmk (com luatex 1.10.0/TeX live 2019) no Mac.

Responder1

O que acontece é que \end{RaggedLeft}simplesmente encerra a composição tipográfica correta, mas não emite nenhum comando de finalização de parágrafo, então a segunda linha é composta com as configurações padrão.

No seu caso \RaggedLeftnão é a ferramenta certa, pois com linhas curtas você obteria caixas pouco cheias. Use a \raggedleftdeclaração padrão.

Minimizei o exemplo removendo todos os bits não essenciais.

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

insira a descrição da imagem aqui

informação relacionada