我希望每个子部分都有两行(某种“页面元数据”)右对齐。这些行是绝不将是全宽(一个仅包含日期)。
为此,我尝试定义一个命令,将它们放入 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}