Ich setze ein Dramaskript mithilfe des dramatist
Pakets, das die drama
Umgebung definiert, die im Grunde eine list
Umgebung ist, und jeder Spracheintrag ist ein Listenelement. Da ich das Skript mehrmals drucken muss, möchte ich den Abstand zwischen den Sprachelementen verringern.
Die drama
Umgebung 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.sty
folgenden 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:
Ü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.sty
direkt 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 tcolorbox
Paket fügt die tcolorbox
Umgebungen in einen Absatz ein, sofern die Option nicht nobeforeafter
verwendet wird. Eine bessere Möglichkeit, die Einrückungen beizubehalten, besteht darin, before={\hskip\dimexpr\leftmargin-\speechskip}
ein leeresafter={}
Der verbleibende Abstand beträgt \itemsep
und der natürliche \interlineskip
. Vergleichen Sie den Unterschied zwischen \martax
und\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}
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}