如何才能让戏剧中某个角色的对话以不同的字体显示?

如何才能让戏剧中某个角色的对话以不同的字体显示?

我正在使用dramatist包,我想让某些角色用斜体或小型大写字母,以区分它们。我当前的解决方案是创建一个自定义环境来包装speaks环境并将其放入斜体,但我想知道是否还有更优雅的解决方案。

答案1

以下 MWE 提供了一种实现,\characterfont在宏的末尾添加了一个额外的宏\xxxspeaks。使用\Character{name}{abbreviation}调用,您可以将其重新定义\characterfont为参数的一部分name。使用辅助宏,\perfont您可以进行一次性定义,即定义\characterfont为字体命令,然后进行自我重新定义\normalfont。我把这是否优雅留给读者判断。

梅威瑟:

\documentclass{article}
\usepackage{dramatist}
\def\characterfont{\normalfont} % initial setting
\makeatletter % copied from the dramatist.sty source code
\def\@character#1#2{%
    \@namedef{#2}{{\namefont #1}\xspace}
    \n@me@ppend@nddef{#2}{\@ppendname}{%
        \normalfont
        \if@drverse
            {\speakstab\speaksfont{#1}\speaksdel\par\nobreak\addvspace{-\parskip}}
        \else
            \item[#1\speaksdel]
        \fi\characterfont}% added extra command here
}
\makeatother

% use the font setting one time and switch to normalfont on next call
% needed to reset the value for characters that don't set the font explicitly
\def\perfont#1{%
\gdef\characterfont{#1\gdef\characterfont{\normalfont}}%
}

\begin{document}
% add font settings to character names
\Character{Alice\perfont{\itshape}}{ali}
\Character{Bob}{bob}
\Character{Charlie\perfont{\scshape}}{cha}

\begin{drama}
\alispeaks
Hi Bob!
\bobspeaks
Hi Alice! Have you seen Bob?
\chaspeaks
I'm not here.
\end{drama}
\end{document}

结果:

在此处输入图片描述

相关内容