\newcommand 中的 \RaggedLeft 未按预期工作

\newcommand 中的 \RaggedLeft 未按预期工作

我希望每个子部分都有两行(某种“页面元数据”)右对齐。这些行是绝不将是全宽(一个仅包含日期)。

为此,我尝试定义一个命令,将它们放入 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}

结果是第二行是左边界的,但我仍然收到“水平盒子未满”的警告。

有趣的事实:如果我将它放在一个\FlushRight环境中,它可以工作,但这是(1)不是我想要的,(2)我仍然会收到警告,(3)我完全不明白,我不喜欢我不理解的东西;)。

使用非 ragged2e 命令的实验产生了相同的结果。

我在 Mac 上使用 latexmk (带有 luatex 1.10.0 / TeX live 2019)。

答案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}

在此处输入图片描述

相关内容