Как выровнять последнюю строку блока текста по правому краю?

Как выровнять последнюю строку блока текста по правому краю?

Я использую pandocдля конвертации файла Markdown в документ LaTeX, а затем в PDF. Документ, который у меня есть, содержит некоторые цитаты. Исходя из стандартного Markdown, они отображаются как quotationили quoteв документе LaTeX.

В Markdown нет возможности специально указать подпись или атрибуцию цитаты. В результате я не могу использовать пакет like attribдля стилизации части атрибуции по-другому.

Вопрос: как выровнять подпись цитаты по правому краю? В более общем смысле, как можно выровнять по правому краю последнюю строку блока? Или можно ли выровнять по правому краю строку, начинающуюся с «--»? (Подойдет любой из этих трех вариантов.)

Вот минимальный документ LaTeX, который показывает мое намерение. Я бы хотел, чтобы часть "-- Walt Disney" была смещена вправо.

\documentclass{book}
\setlength{\parindent}{0em} % Added for clarity.
\renewcommand{\quote}{\list{}{\itshape}\item\relax} % Making quote italic.
\begin{document}
\begin{quote}
The way to get started is to quit talking and begin doing.

-- Walt Disney
\end{quote}
\end{document}

И нет, использование пакета типа dirtytalk, csquotes, или epigraphне сработает. Источник из Markdown не различает (и не может) цитату и атрибуцию. Это все один quoteблок.

решение1

Мне кажется, что вы хотите Markdownрасшириться, чтобы получить новый вид цитаты. Вы говорите, что "Идея документа Markdown не в том, чтобы включать команды стиля/рендеринга", но это так --- это позволяет специфицироватькурсивисмелыйшрифты.

Что касается LaTeX, вот объявление ( \justlastragged), которое выравнивает последнюю строку абзаца по правому краю.

% lastraggedprob.tex  SE 641048

\documentclass{article}

\newcommand{\paratext}{Just some text to fill up a couple of lines,
  which might be used for a paragraph or
  some other kind of text block. Let's hope it works out.}

\begin{document}

\newcommand{\justlastragged}{%
  \leftskip =0pt plus 1fil
  \rightskip =-\leftskip
  \parfillskip=\leftskip
% \parindent = 0pt
}
  
\section{First}

Normal paragraph setting

\paratext

\paratext

\section{Second}

Last line of a paragraph being set flush right (ragged left).
\justlastragged

\paratext

\paratext

\paratext \paratext

\end{document}

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

Это \justlastraggedобъявление является одним из нескольких вариантов настройки для абзацев с различным стилем, которые я описал в TUGboat в 2007 году.https://tug.org/TUGboat/tb28-2/tb89glister.pdf

решение2

Попробуйте использовать \hfillдля заполнения горизонтального пространства перед -- Walt Disney.

\documentclass{book}
\setlength{\parindent}{0em} % Added for clarity.
\renewcommand{\quote}{\list{}{\itshape}\item\relax} % Making quote italic.
\begin{document}
\begin{quote}
The way to get started is to quit talking and begin doing.

\hfill -- Walt Disney
\end{quote}
\end{document}

И да, pandoc будет обрабатывать данные, \hfillесли они выводятся в формате LaTeX или используют LaTeX на сервере, например, для создания PDF-файла.

> The way to get started is to quit talking and begin doing.
> 
> \hfill -- Walt Disney

выход pandoc

(Изображение создано pandoc; если вы хотите, чтобы оно было курсивным, как в вашем коде LaTeX, вам, конечно, придется добавить больше в файл разметки или параметры pandoc, но я полагаю, вы уже знаете, как это сделать?)

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