Centrar la cita solo si cabe en una línea

Centrar la cita solo si cabe en una línea

Escribí un código para un entorno de cotización. Me gustaría que la cita esté centrada solo si es lo suficientemente corta como para caber en una línea; de lo contrario, no debería estar centrada. este es el codigo

\documentclass{article}
\usepackage{changepage, xparse}
\ExplSyntaxOn

\NewDocumentEnvironment{ myquote }{ o }{
  \begin{center}
  \begin{adjustwidth}{50pt}{50pt}
  \begin{itshape}
}{
  \end{itshape}
  \end{adjustwidth}
  \end{center}  
  \IfValueT{ #1 }{
    \vspace{-0.15cm}
    \begin{adjustwidth}{0pt}{20pt}
    \flushright { \small -\hspace{2pt}#1\hspace{2pt}- }
    \end{adjustwidth}
    \vspace{0.3cm}
  }
}

\ExplSyntaxOff

\begin{document}
\begin{myquote}[Someone]
This should be centered.
\end{myquote}

\begin{myquote}[Someone else]
This is a longer quote and therefore shouldn't be centered. This is some more text.
\end{myquote}
\end{document}

ingrese la descripción de la imagen aquí

¿Cómo podría hacer esto?

Respuesta1

Esto usa \NewEnvirony verifica el ancho de la cursiva \BODYdentro de un archivo \hbox. Si es menor que \linewidth, \hfilse antepone an a \BODY.

\documentclass{article}
\usepackage{changepage, environ}
\usepackage[pass,showframe]{geometry}

\NewEnviron{myquote}[1][\relax]{
  \begin{center}
  \begin{adjustwidth}{50pt}{50pt}
  \setbox0=\hbox{\itshape\BODY}%
  \begin{itshape}
  \ifdim\wd0>\linewidth\relax\BODY\else\hfil\BODY\fi
  \end{itshape}
  \end{adjustwidth}
  \end{center}  
  \ifx\relax#1\relax\else
    \vspace{-0.15cm}
    \begin{adjustwidth}{0pt}{20pt}
    \flushright { \small -\hspace{2pt}#1\hspace{2pt}- }
    \end{adjustwidth}
    \vspace{0.3cm}
  \fi
}


\begin{document}
\begin{myquote}[Someone]
This should be centered.
\end{myquote}

\begin{myquote}[Someone else]
This is a bit longer, but should still be centered.
\end{myquote}

\begin{myquote}[Someone else]
This is a longer quote and therefore shouldn't be centered. This is some more text.
\end{myquote}

\end{document}

ingrese la descripción de la imagen aquí

información relacionada