Cambiar el formato del texto al usar el paquete de diálogo

Cambiar el formato del texto al usar el paquete de diálogo

Me gustaría dar formato al texto del diálogo mientras uso eldiálogopaquete. Ya puse en negrita al orador, pero no pudeformatear el texto de los oradores. Me gustaría que el texto estuviera en una especie de cuadro (sin sangría)

Al utilizar el siguiente script:

\documentclass{article}
\usepackage{dialogue}
% bold the speaker name
\renewcommand*\DialogueLabel[1]{%
  \scshape\textbf{#1}:\hfil
}

\begin{document}

\begin{dialogue}
    \speak{Marie} Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
    \speak{Marine} What?
\end{dialogue}

Obtengo el siguiente resultado, donde la segunda línea de un párrafo no está alineada con la primera línea:

Resultado actual

Lo que deseo es el siguiente formato.(la cursiva y las comillas son opcionales):

ingrese la descripción de la imagen aquí

¡Muchas gracias!

Respuesta1

Para lograr el efecto que desea, creo que lo que necesitaría hacer es redefinir el entorno de diálogo para que se \labelwidthestablezca en el ancho del nombre de personaje más largo, y establecerlo \leftmarginexactamente en eso más el valor de \labelsep(el ancho del espacio entre la etiqueta del nombre y el texto), que configuré en 0.5em.

Puede utilizar el comando calcdel paquete \widthof{...}para determinar la longitud del nombre de carácter más largo. A continuación, supongo que es "Marina", pero si tienes personajes con nombres más largos, necesitarás cambiar el \setlength{\widestname}{...comando apropiadamente.

Por ejemplo:

\documentclass{article}

\usepackage[T1]{fontenc} % necessary for bold small caps
\usepackage{setspace} % for double spacing
\usepackage{dialogue}
\usepackage{calc} % to measure width of widest name
\usepackage{lipsum}% dummy text

\renewcommand*\DialogueLabel[1]{%
  \scshape\textbf{#1}:\hfil
}

% set width of widest name
\newlength{\widestname}
\setlength{\widestname}{%
    \widthof{\textbf{\textsc{Marina}}:}
}

% redefine dialogue environment to use new parameters
\makeatletter
\renewenvironment{dialogue} {%
    \begin{list}{} {%
        \setlength\itemsep{\z@ \@plus .5ex}%
        \setlength{\parsep}{\parskip}%
        \setlength{\rightmargin}{0pt}% no indentation on right; change this if you wish
        \setlength{\labelwidth}{\widestname}% set label to widest width
        \setlength{\labelsep}{0.5em}% space between (longest) name and text
        \setlength{\leftmargin}{\labelwidth}% set margin on left to same width
        \addtolength{\leftmargin}{\labelsep}% plus the label sep
        \defcommand\speak [1] {\item[{##1}]}% define speak command
        \let\makelabel\DialogueLabel
      }%
      \PreDialogue\relax
    }{%
  \end{list}%
  }
\makeatother

\begin{document}
\doublespacing

\lipsum[1][3-9]

\begin{dialogue}

\speak{Maria} \lipsum[2][1-2]

\speak{Marina} \lipsum[1][1-3]

\end{dialogue}

\end{document}

Esto da este resultado.

diálogo con párrafos después de los nombres

Si también desea que cada diálogo esté en cursiva y comillas, creo que necesitará usar una sintaxis ligeramente diferente. Puede cambiar la definición de \speakpara tomar dos argumentos y poner el segundo argumento en cursiva y comillas. Es decir, cambie la línea del \renewenvironmentfor dialoguede arriba que dice:

\defcommand\speak [1] {\item[{##1}]}%

Dentro de esto:

\defcommand\speak[2]{\item[{##1}] {\itshape ``{##2}''}}%

Y luego tendrías que escribir el diálogo así, con llaves alrededor de los nombres y del texto del diálogo real:

\speak{Maria}{Nam dui ligula, fingilla \ldots}

\speak{Marina}{Lorem ipsum dolor \dots}

Y obtendrías esto.

con cursiva y comillas

Estilísticamente también podría considerar alinear a la derecha los nombres con el texto:

\defcommand\speak[2]{\item[\hfill {##1}] {\itshape ``{##2}''}}%

Con nombres alineados a la derecha

El paquete de diálogo no es tan complejo. Básicamente, has reescrito la mitad en este punto; podría considerar prescindir de él y usar \enuitemun paquete similar para configurar el diálogo, pero ese es un tema aparte.

(Parece que cambié "Marie" por "Maria"; bueno, supongo que no importa para demostrar la solución).

información relacionada