Ändern des Textformats bei Verwendung des Dialogpakets

Ändern des Textformats bei Verwendung des Dialogpakets

Ich möchte den Dialogtext formatieren und dabei dieDialogPaket. Ich habe den Lautsprecher bereits fett gedruckt, konnte ihn aber nichtFormatieren Sie den Text der Sprecher. Ich möchte, dass der Text in einer Art Kasten steht (ohne Einrückung)

Bei Verwendung des folgenden Skripts:

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

Ich erhalte das folgende Ergebnis, wenn die zweite Zeile eines Absatzes nicht mit der ersten Zeile ausgerichtet ist:

Aktuelles Ergebnis

Ich wünsche mir folgendes Format(Kursivschrift und Zitate sind optional):

Bildbeschreibung hier eingeben

Vielen Dank!

Antwort1

Um den gewünschten Effekt zu erzielen, müssen Sie meiner Meinung nach die Dialogumgebung neu definieren, sodass \labelwidthauf die Breite des längsten Charakternamens eingestellt ist, und \leftmargingenau auf diesen Wert plus den Wert \labelsep(die Breite des Abstands zwischen der Namensbezeichnung und dem Text) einstellen, den ich auf eingestellt habe 0.5em.

Sie können den Befehl calcdes Pakets verwenden \widthof{...}, um die Länge des längsten Charakternamens zu bestimmen. Im Folgenden gehe ich davon aus, dass es „Marina“ ist, aber wenn Sie Charaktere mit längeren Namen haben, müssen Sie den \setlength{\widestname}{...Befehl entsprechend ändern.

Zum Beispiel:

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

Dies ergibt diese Ausgabe.

Dialog mit Absätzen nach Namen

Wenn Sie auch Kursivschrift und Anführungszeichen um jeden Dialog haben möchten, müssen Sie meiner Meinung nach eine etwas andere Syntax verwenden. Sie könnten die Definition von ändern, \speaksodass zwei Argumente verwendet werden, und das zweite Argument kursiv und in Anführungszeichen setzen. Das heißt, ändern Sie die Zeile von \renewenvironmentfor dialogueoben, die lautet:

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

Das mögen:

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

Und dann müssten Sie den Dialog folgendermaßen schreiben, mit Klammern sowohl um die Namen als auch um den eigentlichen Dialogtext:

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

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

Und Sie würden dies bekommen.

mit Kursivschrift und Anführungszeichen

Stilistisch könnte ich auch erwägen, die Namen rechtsbündig am Text auszurichten:

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

Mit rechtsbündigen Namen

Das Dialogpaket ist nicht so komplex. Sie haben es an dieser Stelle im Grunde schon zur Hälfte neu geschrieben. Sie könnten es auch weglassen und \enuitemein ähnliches Paket zum Einrichten des Dialogs verwenden, aber das ist ein anderes Thema.

(Sieht aus, als hätte ich „Marie“ in „Maria“ geändert; na ja, ich nehme an, für die Demonstration der Lösung ist das nicht wichtig.)

verwandte Informationen