El dramaturgo elimina el espacio entre los elementos del discurso.

El dramaturgo elimina el espacio entre los elementos del discurso.

Estoy escribiendo un guión dramático usando el dramatistpaquete, que define el dramaentorno, que es básicamente un listentorno, y cada entrada del discurso es un elemento de la lista. Como necesito imprimir el guión varias veces, quiero reducir el espacio entre los elementos del discurso.

El dramamedio ambiente declara lo siguiente:

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

Las dimensiones también se declaran a dramatist.stycontinuación:

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

Incluso admite la lectura de un archivo de configuración:

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

Descubrí que el espacio entre los elementos probablemente lo establece la \speechskipdimensión -, así que intenté crear un archivo de configuración con el siguiente contenido:

\speechskip=0em
\speaksindent=0em

El paquete lee ese archivo de configuración, como se indica en el registro:

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

Pero ni las sangrías ni el salto entre elementos cambian. No sé por qué el archivo de configuración no se lee correctamente, ya que creo que las declaraciones de dimensiones que hice son correctas.

Una MWE podría verse así:

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

Esto produce el siguiente resultado para mí: Ejemplo de salida MWE

¡Cualquier idea sobre cómo reducir la distancia entre los elementos será muy apreciada! Gracias de antemano ;)

Editar:La respuesta de Christian Hupfer arregló el espacio entre los cuadros de diálogo, lo cual aprecio mucho;) ¿Qué pasa con el espacio a la izquierda? Cualquier idea es bienvenida;)

Edición 2:También intenté cambiar la fuente de dramatist.stydirectamente para corregir la sangría izquierda incorrecta, pero fue en vano: (por supuestosólo para fines de prueba)

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

y:

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

Edición 3:Utilizando la nueva solución de Christian Hupfer, pude reducir la sangría izquierda al mínimo. Pero todavía hay un poquito de espacio hacia la izquierda, y un poco más hacia la derecha, no mucho, pero se vuelve visible cuando un cuadro de diálogo está al lado de algún otro contenido sin sangría, como un cuadro de diálogo de color o algún texto normal (fuera del drama). ambiente). ¿Hay alguna manera de arreglar este último espacio no deseado?

Respuesta1

El tcolorboxpaquete coloca los tcolorboxentornos en un párrafo, a menos que nobeforeafterse utilice la opción. Una mejor manera de preservar las sangrías es aplicar before={\hskip\dimexpr\leftmargin-\speechskip}y un vacíoafter={}

El espaciado restante es \itemsepel natural \interlineskip. Compara la diferencia entre \martaxy\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}

ingrese la descripción de la imagen aquí

Actualizar

Cambié el texto insertado y eliminé los \mbox{}comandos que conducen a espacios horizontales falsos.

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

ingrese la descripción de la imagen aquí

información relacionada