角色与台词
角色是剧本的核心。DraMark 使用 @ 标记来声明角色并进入角色台词模式。
角色声明
语法:@<角色名>[<情绪/状态提示>] 或 @<角色名>【<情绪/状态提示>】
重要:角色声明必须独占一行。
基本用法
dramark
@哈姆雷特
生存还是毁灭,这是个问题。
@奥菲利亚
殿下!带情绪提示
dramark
@哈姆雷特 [犹豫地]
这是一个值得考虑的问题。
@克劳狄斯【愤怒】
给他点颜色看看!使用方括号 [] 或中文方括号 【】 都可以。
角色名含空格
对于包含空格的角色名,推荐使用引号包裹:
dramark
@"冉 阿让"
我已经赎清了我的罪过。
@"让·瓦尔让" [低声]
没有人能理解我。如果不使用引号,解析器会裁剪首尾空白,以下写法等价:
dramark
@ 冉 阿让 [低声]
我有话要说。行尾附着内容
角色声明行允许附加以下内容:
- 行内 Tech Cue:
<<...>> - 注释:
% ...
dramark
@小帕 <<MIC=B1>>
你好!
@小塔 [兴奋地] % 注意语气
终于等到你了!除上述附着内容外,声明行不得包含普通对白正文。
台词内容
一旦进入 CharacterBlock,后续的 CommonMark 区块(段落、列表、引用块等)均作为该角色的台词内容:
dramark
@哈姆雷特
我有两个选择:
- 生存
- 还是毁灭
也许还有更多可能...退出角色
隐式退出
遇到以下标记时自动退出角色台词模式:
@新角色名:切换到新角色---:场景分隔#标题:新场景/幕$$:进入唱段
dramark
@哈姆雷特
我要走了。
---
场景变换,回到叙述模式。显式退出
使用 @@ 显式退出角色:
dramark
@哈姆雷特
我说完了。
@@
哈姆雷特走下舞台。@@ 作为一个显式的状态边界标记,不生成 AST 节点,仅触发栈关闭操作。
多角色声明(可选)
允许同一声明行出现多个 @ 角色标识:
dramark
@彼得·潘 @温迪 [旁白]
我们一起说:
永无岛万岁!这在合唱或齐声对白场景中很有用。
注意事项
- 独占一行:角色声明必须独占一行,否则会被降级为普通文本
- 前导空白:
@后的前导空白会被跳过 - 终止符:角色名读取到以下任一字符终止:
[、【、换行、下一个@ - 空角色名:空角色名非法,会产生警告