Dramatiker entfernt Abstände zwischen Redeelementen

Dramatiker entfernt Abstände zwischen Redeelementen

Ich setze ein Dramaskript mithilfe des dramatistPakets, das die dramaUmgebung definiert, die im Grunde eine listUmgebung ist, und jeder Spracheintrag ist ein Listenelement. Da ich das Skript mehrmals drucken muss, möchte ich den Abstand zwischen den Sprachelementen verringern.

Die dramaUmgebung deklariert wie folgt:

\newenvironment{drama}{%
    \if@lnpa
    \PackageWarning{dramatist}{\lnpwarning{a}}
    \fi
    \if@lnps
    \PackageWarning{dramatist}{\lnpwarning{s}}
    \fi
    \list{}{%
        \labelwidth\speakswidth
        \itemindent\speaksindent
        \itemsep\speechskip
        \parsep\Dparsep
        \labelsep\Dlabelsep
        \let\makelabel\speakslabel}
    } {\endlist}

Die Abmessungen werden in der dramatist.styfolgenden Tabelle ebenfalls angegeben:

\newdimen\speakswidth
\speakswidth\z@
\newdimen\speaksindent
\speaksindent=-\leftmargin
\newdimen\speechskip
\speechskip\itemsep
\newdimen\Dparsep
\Dparsep\z@
\newdimen\Dlabelsep
\Dlabelsep\labelsep

Es unterstützt sogar das Lesen einer Konfigurationsdatei:

\InputIfFileExists{dramatist.cfg}{\foundfile}{\inputfilewarning}

Ich habe herausgefunden, dass der Abstand zwischen den Elementen wahrscheinlich durch die \speechskip-Dimension bestimmt wird, also habe ich versucht, eine Konfigurationsdatei mit folgendem Inhalt zu erstellen:

\speechskip=0em
\speaksindent=0em

Das Paket liest diese Konfigurationsdatei, wie im Protokoll angegeben:

Package dramatist Warning: Using Configuration file dramatist.cfg. .

Aber weder die Einrückungen noch der Abstand zwischen den Elementen ändern sich. Ich weiß nicht, warum die Konfigurationsdatei nicht richtig gelesen wird, da ich davon ausgehe, dass die von mir vorgenommenen Deklarationen der Dimensionen korrekt sind.

Ein MWE könnte wie folgt aussehen:

\documentclass[oneside,12pt]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{scrpage2}
\usepackage[utf8]{inputenc}
\usepackage{dramatist}
\usepackage[x11names]{xcolor}
\usepackage{tcolorbox}
\usepackage[bookmarks]{hyperref}
\begin{document}
  \newcommand{\role}[1]{\textcolor{blue}{(\textit{#1})}}
  \begin{CharacterGroup}{Andere alte Leute}
  \GCharacter{Marta \role{Elisa}}{Marta}{marta}
  \end{CharacterGroup}
  \newcommand{\martax}[1]{\item\leavevmode\begin{tcolorbox}[title=\marta,colframe=red]#1\end{tcolorbox}}
  This is the regular document inset.
  \begin{drama}
    \martax{I can talk}
    This is the list inset.
    \martax{I can talk}
    \martax{I can talk}
    \martax{I can talk}
  \end{drama}
\end{document}

Bei mir ergibt sich folgende Ausgabe: Beispielausgabe MWE

Über Ideen, wie man den Abstand zwischen den Gegenständen verringern kann, bin ich sehr dankbar! Vielen Dank im Voraus ;)

Bearbeiten:Christian Hupfers Antwort hat den Abstand zwischen den Sprachfeldern korrigiert, was ich sehr schätze ;) Was ist mit dem Abstand nach links? Alle Ideen sind willkommen ;)

Bearbeitung 2:Ich habe auch versucht, die Quelle dramatist.stydirekt zu ändern, um die fehlerhafte linke Einrückung zu beheben, aber ohne Erfolg: (Natürlichnur zu Testzwecken)

\newenvironment{drama}{%
    ...
    \list{}{%
        ...
        \itemindent0em
        ...
    } {\endlist}

Und:

\newenvironment{drama}{%
    ...
    \list{}{%
        ...
        \itemindent=0em
        ...
    } {\endlist}

Bearbeitung 3:Mit Christian Hupfers neuer Lösung konnte ich die linke Einrückung auf ein Minimum reduzieren. Aber es gibt immer noch ein kleines bisschen Abstand nach links und etwas mehr nach rechts, nicht viel, aber es wird sichtbar, wenn eine Sprachbox neben anderem, nicht eingerücktem Inhalt wie einer farbigen Parbox oder einem normalen Text (außerhalb der Drama-Umgebung) steht. Gibt es eine Möglichkeit, diesen letzten unerwünschten Abstand zu beheben?

Antwort1

Das tcolorboxPaket fügt die tcolorboxUmgebungen in einen Absatz ein, sofern die Option nicht nobeforeafterverwendet wird. Eine bessere Möglichkeit, die Einrückungen beizubehalten, besteht darin, before={\hskip\dimexpr\leftmargin-\speechskip}ein leeresafter={}

Der verbleibende Abstand beträgt \itemsepund der natürliche \interlineskip. Vergleichen Sie den Unterschied zwischen \martaxund\martay

\documentclass[oneside,12pt]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{scrpage2}
\usepackage[utf8]{inputenc}
\usepackage{dramatist}
\usepackage[x11names]{xcolor}
\usepackage{tcolorbox}
\usepackage[bookmarks]{hyperref}
\begin{document}
  \newcommand{\role}[1]{\textcolor{blue}{(\textit{#1})}}
  \begin{CharacterGroup}{Andere alte Leute}
  \GCharacter{Marta \role{Elisa}}{Marta}{marta}
  \end{CharacterGroup}
  \newcommand{\martax}[1]{\item\mbox{}\begin{tcolorbox}[before={\hskip\dimexpr\leftmargin-\speechskip},after={},title=\marta,colframe=red]#1\end{tcolorbox}}
  \newcommand{\martay}[1]{\item\mbox{}\begin{tcolorbox}[title=\marta,colframe=blue]#1\end{tcolorbox}}

  This is the regular document inset.
  \begin{drama}
    \martax{I can talk}
    This is the list inset.
    \martax{I can talk}
    \martax{I can talk}
    \martax{I can talk}
  \end{drama}

  \begin{drama}
    \martay{I can talk}
    This is the list inset.
    \martay{I can talk}
    \martay{I can talk}
    \martay{I can talk}
  \end{drama}

\end{document}

Bildbeschreibung hier eingeben

Aktualisieren

Ich habe den Texteinschub geändert und die \mbox{}Befehle entfernt, die zu falschen horizontalen Abständen führten.

\documentclass[oneside,12pt]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{scrpage2}
\usepackage[utf8]{inputenc}
\usepackage{dramatist}
\usepackage[x11names]{xcolor}
\usepackage{tcolorbox}
\usepackage{xpatch}

\usepackage[bookmarks]{hyperref}

\newlength{\dramatextinset}
\setlength{\dramatextinset}{\dimexpr-\leftmargin+\labelsep}

\xapptocmd{\drama}{%
  \setlength{\parindent}{\dramatextinset}%
}{\typeout{Success}}{\typeout{Failure}}

\usepackage{showframe}

\newcommand{\role}[1]{\textcolor{blue}{(\textit{#1})}}
\begin{CharacterGroup}{Andere alte Leute}
  \GCharacter{Marta \role{Elisa}}{Marta}{marta}
\end{CharacterGroup}

\newcommand{\martax}[1]{\item\begin{tcolorbox}[before={},after={},title=\marta,colframe=red]#1\end{tcolorbox}}
\newcommand{\martay}[1]{\item\begin{tcolorbox}[title=\marta,colframe=blue]#1\end{tcolorbox}}

\begin{document}
This is the regular document inset.
\begin{drama}
  \martax{I can talk}

  This is the list inset.
  \martax{I can talk}
  \martax{I can talk}
  \martax{I can talk}
\end{drama}


\begin{drama}
  \martay{I can talk}
  This is the list inset.
  \martay{I can talk}
  \martay{I can talk}
  \martay{I can talk}
\end{drama}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen