기본적으로 환경인 환경을 dramatist
정의하는 패키지를 사용하여 드라마 대본을 조판하고 있으며 각 음성 항목은 목록 항목입니다. 스크립트를 여러번 인쇄해야 하기 때문에 음성 항목 사이의 간격을 줄이고 싶습니다.drama
list
환경 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}
항목 사이의 거리를 좁히는 방법에 대한 아이디어는 대단히 감사하겠습니다! 미리 감사드립니다 ;)
편집하다:Christian Hupfer의 답변으로 음성 상자 사이의 간격이 고정되었습니다. 매우 감사합니다. ;) 왼쪽 간격은 어떻습니까? 어떤 아이디어라도 환영합니다;)
편집 2:dramatist.sty
또한 잘못된 왼쪽 들여쓰기를 수정하기 위해 소스를 직접 변경해 보았지만 소용이 없었습니다.물론테스트 목적으로만 사용)
\newenvironment{drama}{%
...
\list{}{%
...
\itemindent0em
...
} {\endlist}
그리고:
\newenvironment{drama}{%
...
\list{}{%
...
\itemindent=0em
...
} {\endlist}
편집 3:Christian Hupfer의 새로운 솔루션을 사용하여 왼쪽 들여쓰기를 최소한으로 줄일 수 있었습니다. 하지만 여전히 왼쪽으로 약간의 간격이 있고 오른쪽으로 조금 더 간격이 있습니다. 그다지 많지는 않지만 음성 상자가 컬러 파박스나 일부 일반 텍스트(드라마 외부)와 같이 들여쓰기되지 않은 다른 콘텐츠 옆에 있으면 눈에 띄게 나타납니다. 환경). 원하지 않는 공백의 마지막 부분을 수정할 수 있는 방법이 있나요?
답변1
옵션을 사용 하지 않는 한 패키지 는 환경을 단락에 tcolorbox
넣습니다 . 들여쓰기를 유지하는 더 좋은 방법은 적용 하고 비어 있는 것 입니다.tcolorbox
nobeforeafter
before={\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}