Alterando o formato do texto ao usar o pacote de diálogo

Alterando o formato do texto ao usar o pacote de diálogo

Gostaria de formatar o texto do diálogo enquanto uso odiálogopacote. Já deixei o palestrante em negrito, mas não conseguiformatar o texto dos palestrantes. Gostaria que o texto ficasse meio que em uma caixa (sem recuo)

Ao usar o seguinte 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}

Obtenho o seguinte resultado, onde a segunda linha de um parágrafo não está alinhada com a primeira linha:

Resultado Atual

O que eu desejo é o seguinte formato(o itálico e as aspas são opcionais):

insira a descrição da imagem aqui

Muito obrigado!

Responder1

Para obter o efeito desejado, acho que o que você precisa fazer é redefinir o ambiente de diálogo para que \labelwidthseja definido com a largura do nome de caractere mais longo e definir \leftmarginexatamente isso mais o valor de \labelsep(a largura do espaço entre o rótulo do nome e o texto), que defini como 0.5em.

Você pode usar o comando calcdo pacote \widthof{...}para determinar o comprimento do nome de caractere mais longo. Abaixo, presumo que seja "Marina", mas se você tiver um personagem com nomes mais longos, será necessário alterar o \setlength{\widestname}{...comando adequadamente.

Por exemplo:

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

Isso fornece essa saída.

diálogo com parágrafos após nomes

Se você também quiser itálico e aspas em cada diálogo, acho que precisará usar uma sintaxe um pouco diferente. Você pode alterar a definição de \speakreceber dois argumentos e colocar o segundo argumento em itálico e aspas. Ou seja, altere a linha do \renewenvironmentfor dialogueacima que diz:

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

Nisso:

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

E então você teria que escrever o diálogo assim, com colchetes em torno dos nomes e do texto do diálogo:

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

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

E você conseguiria isso.

com itálico e aspas

Estilisticamente, também posso considerar alinhar os nomes à direita em relação ao texto:

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

Com nomes alinhados à direita

O pacote de diálogo não é tão complexo. Você basicamente reescreveu metade dele neste ponto; você pode considerar simplesmente dispensar ele e usar \enuitemum pacote semelhante para configurar o diálogo, mas esse é um tópico separado.

(Parece que mudei "Marie" para "Maria"; tudo bem, não acho que isso importe para demonstrar a solução.)

informação relacionada