latex剧本排版需用playtex宏包实现语义化结构:①导言区加载usepackage[english]{playtex}并配置xecjk支持中文;②用character{角色名}定义角色;③用said{角色名}{对白}包裹每段对白,角色名须完全一致;④旧文档可正则批量替换“角色名:对白”为said格式并补全声明。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在LaTeX中排版剧本时,人物名称与对白若未正确分离,会导致缩进错乱、行距不均、换行断裂,甚至编译报错。直接用普通段落硬敲会丢失语义结构,无法批量调整格式或生成角色列表。
使用playtex宏包实现标准剧本排版
playtex是专为戏剧文本设计的LaTeX宏包,内置角色名左对齐+加粗、对白自动缩进、空行分隔等规则,避免手动调节带来的不一致。
第一步:在导言区加载宏包并设置语言→usepackage[english]{playtex}(若用中文需额外配置xeCJK,见下文)。
第二步:用Character{角色名}定义人物→该命令会注册角色并生成左对齐加粗名称,后续可用CastList自动汇总。
第三步:每段对白前必须用said{角色名}{对白内容}包裹→【角色名必须与Character中定义的完全一致,大小写和空格都不能差】,否则编译失败且无提示。
纯中文剧本的xeCJK适配方案
playtex默认依赖TeX Live的英文断字规则,直接输入中文会因缺少字间距控制导致对白挤在一起,甚至角色名被截断。
方法一:用xeCJK重设中文字体与间距→在导言区加入:setmainfont{Noto Serif CJK SC}setCJKmainfont{Noto Serif CJK SC},并确保XeLaTeX编译引擎启用。
方法二:禁用playtex的自动断行,改用\手动换行→在said内部遇到长句时,在合适词尾后加\,例如said{张三}{你好啊,\今天天气不错}。
注意:xeCJK与playtex的Character命令存在字体缓存冲突,首次编译后需清空辅助文件再重编一次,否则角色名显示为空白。
快速修复已错乱的旧文档
若已有大量手敲的“角色名:对白”格式文本,不必逐行重写。
① 全选文本 → 用编辑器正则替换:查找^([^:]+):(.+)$ → 替换为said{}{}(注意中文冒号要匹配)。
② 在文档开头补上Character{角色名}声明——【每个角色只需声明一次,且必须出现在首次said之前】。
③ 删除所有手动添加的quad、hspace等缩进命令,playtex会自动处理对白缩进量。











