Estoy escribiendo un guión dramático usando el dramatist
paquete, que define el drama
entorno, que es básicamente un list
entorno, 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 drama
medio 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.sty
continuació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 \speechskip
dimensió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í:
¡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.sty
directamente 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 tcolorbox
paquete coloca los tcolorbox
entornos en un párrafo, a menos que nobeforeafter
se 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 \itemsep
el natural \interlineskip
. Compara la diferencia entre \martax
y\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}
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}