第一行左对齐,第二行右对齐

第一行左对齐,第二行右对齐

我正在排版手动创建的作者索引。我想将姓名放在左边距,将页码放在右边距。我设法将第二行右对齐,以防因为姓名太长而插入换行符。

问题是我想要\flushleft第一行。但是使用 \flushleft会破坏页码的对齐。

(一起跑xelatex

\documentclass{article}
\usepackage{fontspec}

\newfontfamily{\defaultfont}{Times New Roman}
\newfontfamily{\latinfont}{Times New Roman}
\usepackage[Latin]{ucharclasses}
\setDefaultTransitions{\defaultfont}{}
\setTransitionsForLatin{\latinfont}{}

\usepackage{multicol}

\begin{document}
\pagestyle{empty}
\begin{multicols*}{2}
  %%% Right align second line
  %%% https://tex.stackexchange.com/a/43239/2483
  \leftskip=0pt plus 0.5fil%
  \rightskip=0pt plus -0.5fil%
  \parfillskip=0pt plus 0fil%
  \noindent Lasserre, Jean\hfill{}Vol. 3, 3743\par
  \noindent Logunov, Alexander (Александр Логунов)\hfill{}Vol.~2,~2361\par
\end{multicols*}

\end{document}

enter image description here

答案1

TeXbook 中“Bourbaki 技巧”的一个变体:

\documentclass{article}
\usepackage{fontspec}
\usepackage{ragged2e}
\usepackage{multicol}

\setmainfont{Times New Roman}

\newcommand{\entry}[2]{% #1 = author, #2 = ref
  \par\noindent{\RaggedRight
    #1%
    \nobreak\hfill\penalty50\hskip1em\null\nobreak
    \hfill\mbox{\normalfont(#2)}%
    \parfillskip=-\rightskip\par}%
}

\begin{document}

\begin{multicols*}{2}
\entry{Lasserre, Jean}{Vol. 3, 3743}
\entry{Logunov, Alexander (Александр Логунов)}{Vol.~2,~2361}
\end{multicols*}

\end{document}

该条目的排版很乱,但会在最后一行或唯一一行中\parfillskip和。\rightskip

名称和引用之间至少留出 1em。

enter image description here

相关内容