使用剧作家时舞台指导的对齐问题

使用剧作家时舞台指导的对齐问题

我一直在使用剧作家软件包编写脚本,并遵循这些论坛上的指南,以使名称和对话的合理性得到很好的体现。

使用 dramast 包的理由

我的问题是,使用该解决方案时,戏剧环境中的舞台指导与文本的对话栏对齐,而不是页面对齐。戏剧环境之外的舞台指导按预期与页面对齐。

 \documentclass[a4paper,12pt]{article}                  

 \usepackage{dramatist}
 \usepackage{etoolbox,enumitem}

 \makeatletter
 \renewenvironment{drama}
   {\if@lnpa
   \PackageWarning{dramatist}{\lnpwarning{a}}
   \fi
   \if@lnps
   \PackageWarning{dramatist}{\lnpwarning{s}}
   \fi
   \begin{itemize}[labelwidth=\speakswidth,leftmargin=!]} 
  {\end{itemize}}
 \patchcmd{\speaker}{\item[#1\speaksdel]}{\item[\speaksfont#1]}{}{}
 \patchcmd{\@character}{\item[#1\speaksdel]}{\item[\speaksfont#1]}{}{}
 \makeatother

 \begin{document}
 \Character[The milkman]{Milkman}{milk}
 \settowidth{\speakswidth}{\speaksfont{Milkman}\speaksdel\hspace{\speechskip}}
 \Scene{Milkman Arrives}
 \StageDir{\begin{center}Some stage directions.\end{center}}
 \begin{drama}
 \milkspeaks{Some text. Some text. Some text. Some text. Some text. Some text. Some text.}
 \StageDir{\begin{center}Some more stage directions.\end{center}}
 \end{drama}
 \end{document}

在此处输入图片描述

有没有办法来解决这个问题?

答案1

这实际上是包的一个“特性” dramatist。的通常定义\StageDir相当于

\newcommand{\StageDir}[1]{\begin{quote}\em #1\end{quote}}

drama因此它继承了环境(作为环境实现)产生的左边距list,因此其水平位置将始终略微位于对话行开始的右侧。center居中将相对于对话行。

解决这个问题的一种方法可能是将舞台指示放在右边:

\renewcommand{\StageDir[1]{\begin{flushright}\em #1\end{flushright}}

(但\StageDir在 之前必须有一个首字母\begin{drama})。可以使用以下技巧实现居中:

\renewcommand\StageDir[1]{%
  \par\addvspace{\topsep}
  \centerline{\em #1}
  \addvspace{\topsep}}

如果你想要居中的多行舞台指示,那么

\renewcommand\StageDir[1]{%
  \par\addvspace{\topsep}
  \centerline{%
    \begin{minipage}{\dimexpr\textwidth-2\leftmargini\relax}
    \centering\em\strut#1\strut\end{minipage}}
  \addvspace{\topsep}}

应该做。

答案2

我稍微修改了 egreg 的答案,以使我的舞台指导与角色名称齐平,使用以下命令:

\renewcommand\StageDir[1]{%
  \par\addvspace{\topsep}
  \centerline{%
    \begin{minipage}{\dimexpr\textwidth\leftmargini\relax}
    \em\strut#1\strut\end{minipage}}
  \addvspace{\topsep}}
\begin{document}

相关内容