o dramaturgo remove o espaçamento entre os itens do discurso

o dramaturgo remove o espaçamento entre os itens do discurso

Estou escrevendo um roteiro de drama usando o dramatistpacote, que define o dramaambiente, que é basicamente um listambiente, e cada entrada de fala é um item de lista. Como preciso imprimir o roteiro diversas vezes, quero diminuir o espaço entre os itens da fala.

O dramaambiente declara o seguinte:

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

As dimensões também são declaradas da dramatist.styseguinte forma:

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

Ele ainda suporta a leitura de um arquivo de configuração:

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

Descobri que o espaçamento entre os itens provavelmente é definido pela \speechskipdimensão, então tentei criar um arquivo de configuração com o seguinte conteúdo:

\speechskip=0em
\speaksindent=0em

O pacote lê esse arquivo de configuração, conforme indicado no log:

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

Mas nem os recuos nem o salto entre os itens mudam. Não sei porque o arquivo de configuração não é lido corretamente, pois acho que as declarações das dimensões que fiz estão corretas.

Um MWE poderia ser parecido com:

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

Isso produz a seguinte saída para mim: Exemplo de saída MWE

Qualquer ideia sobre como diminuir a distância entre os itens será muito apreciada! Desde já, obrigado ;)

Editar:A resposta de Christian Hupfer corrigiu o espaçamento entre as caixas de fala, o que aprecio muito;) E o espaçamento à esquerda? Qualquer ideia é bem vinda ;)

Editar 2:Também tentei alterar a fonte dramatist.stydiretamente para corrigir o recuo esquerdo incorreto, mas sem sucesso: (claroapenas para fins de teste)

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

e:

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

Editar 3:Usando a nova solução de Christian Hupfer, consegui reduzir ao mínimo o recuo esquerdo. Mas ainda há um pouquinho de espaçamento à esquerda, e um pouco mais à direita, não muito, mas fica visível, quando uma caixa de fala está próxima a algum outro conteúdo não recuado, como uma caixa colorida ou algum texto normal (fora do drama ambiente). Existe uma maneira de corrigir esse último espaçamento indesejado?

Responder1

O tcolorboxpacote coloca os tcolorboxambientes em um parágrafo, a menos que a opção nobeforeafterseja usada. A melhor maneira de preservar os recuos é aplicar before={\hskip\dimexpr\leftmargin-\speechskip}e um vazioafter={}

O espaçamento restante é \itemsepo natural \interlineskip. Compare a diferença entre \martaxe\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}

insira a descrição da imagem aqui

Atualizar

Alterei a inserção do texto e removi os \mbox{}comandos que levavam aos falsos espaçamentos horizontais.

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

insira a descrição da imagem aqui

informação relacionada