Como alinhar à direita a última linha de um bloco de texto?

Como alinhar à direita a última linha de um bloco de texto?

Estou usando pandocpara converter um arquivo Markdown em um documento LaTeX e depois em PDF. O documento que possuo contém algumas citações. Vindo do Markdown padrão, eles são renderizados como quotationou quoteno documento LaTeX.

Não há possibilidade no Markdown de indicar especificamente uma assinatura ou atribuição da cotação. Como resultado, não posso usar um pacote attribpara estilizar a parte de atribuição de maneira diferente.

Pergunta: como posso alinhar corretamente a assinatura da cotação? De maneira mais geral, como a última linha de um bloco pode ser liberada à direita? Ou uma linha que começa com "--" pode ser alinhada à direita? (Qualquer um desses três servirá.)

Aqui está um documento LaTeX mínimo que mostra minha intenção. Eu gostaria que a parte “--Walt Disney” fosse mudada para a direita.

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

E não, usar um pacote como dirtytalk, csquotesou epigraphnão funcionará. A fonte do Markdown não faz (e não pode) distinguir entre a cotação e a atribuição. É tudo um quotequarteirão.

Responder1

Parece-me que você deseja Markdownser estendido para ter um novo tipo de cotação. Você diz que "Não é idéia de um documento Markdown incluir comandos de estilo/renderização", mas inclui --- permite a especificação deitálicoeaudaciosofontes.

Em relação ao LaTeX, aqui está uma declaração ( \justlastragged) que definirá a última linha de um parágrafo à direita.

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

insira a descrição da imagem aqui

A \justlastraggeddeclaração é uma entre várias configurações para parágrafos com estilos diferentes que descrevi no TUGboat em 2007https://tug.org/TUGboat/tb28-2/tb89glister.pdf

Responder2

Tente usar \hfillpara preencher o espaço horizontal antes -- 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}

E sim, o pandoc será processado \hfilldesde que esteja gerando LaTeX ou usando LaTeX no backend para, por exemplo, produzir um PDF.

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

saída pandoc

(Imagem produzida por pandoc; se você quiser itálico como seu código LaTeX, você terá que adicionar mais ao arquivo markdown ou às opções do pandoc, é claro, mas presumo que você já sabe como fazer isso?)

informação relacionada