극작가는 음성 항목 사이의 간격을 제거합니다.

극작가는 음성 항목 사이의 간격을 제거합니다.

기본적으로 환경인 환경을 dramatist정의하는 패키지를 사용하여 드라마 대본을 조판하고 있으며 각 음성 항목은 목록 항목입니다. 스크립트를 여러번 인쇄해야 하기 때문에 음성 항목 사이의 간격을 줄이고 싶습니다.dramalist

환경 drama은 다음과 같이 선언합니다.

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

차원은 다음 dramatist.sty과 같이 선언됩니다.

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

구성 파일 읽기도 지원합니다.

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

항목 사이의 간격은 아마도 -dimension에 의해 설정된다는 것을 알아냈 \speechskip으므로 다음 내용으로 구성 파일을 만들려고 했습니다.

\speechskip=0em
\speaksindent=0em

패키지는 로그에 명시된 대로 해당 구성 파일을 읽습니다.

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

그러나 항목 간의 들여쓰기나 건너뛰기는 변경되지 않습니다. 내가 수행한 치수 선언이 정확하다고 생각하기 때문에 구성 파일이 올바르게 읽히지 않는 이유를 모르겠습니다.

MWE는 다음과 같습니다.

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

이것은 나에게 다음과 같은 결과를 생성합니다. 예제 출력 MWE

항목 사이의 거리를 좁히는 방법에 대한 아이디어는 대단히 감사하겠습니다! 미리 감사드립니다 ;)

편집하다:Christian Hupfer의 답변으로 음성 상자 사이의 간격이 고정되었습니다. 매우 감사합니다. ;) 왼쪽 간격은 어떻습니까? 어떤 아이디어라도 환영합니다;)

편집 2:dramatist.sty또한 잘못된 왼쪽 들여쓰기를 수정하기 위해 소스를 직접 변경해 보았지만 소용이 없었습니다.물론테스트 목적으로만 사용)

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

그리고:

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

편집 3:Christian Hupfer의 새로운 솔루션을 사용하여 왼쪽 들여쓰기를 최소한으로 줄일 수 있었습니다. 하지만 여전히 왼쪽으로 약간의 간격이 있고 오른쪽으로 조금 더 간격이 있습니다. 그다지 많지는 않지만 음성 상자가 컬러 파박스나 일부 일반 텍스트(드라마 외부)와 같이 들여쓰기되지 않은 다른 콘텐츠 옆에 있으면 눈에 띄게 나타납니다. 환경). 원하지 않는 공백의 마지막 부분을 수정할 수 있는 방법이 있나요?

답변1

옵션을 사용 하지 않는 한 패키지 는 환경을 단락에 tcolorbox넣습니다 . 들여쓰기를 유지하는 더 좋은 방법은 적용 하고 비어 있는 것 입니다.tcolorboxnobeforeafterbefore={\hskip\dimexpr\leftmargin-\speechskip}after={}

남은 간격은 \itemsep이고 자연스럽 습니다 \interlineskip. \martax와 의 차이점을 비교해보세요 .\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}

여기에 이미지 설명을 입력하세요

업데이트

텍스트 삽입을 변경하고 \mbox{}잘못된 수평 간격을 초래하는 명령을 제거했습니다.

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

여기에 이미지 설명을 입력하세요

관련 정보