使用 Linux 和开源工具编写剧本

5 位读者喜欢这篇文章。
Typewriter keys

April Killingsworth。由 Rikki Endsley 修改。CC BY-SA 2.0。

今年五月,Jason van Gumster 撰写了4 款用于编写下一部剧本的开源工具。它包含了一些我以前从未听说过的工具,一些我非常熟悉的工具,并且遗漏了一些我个人喜欢的工具。我认为一篇姊妹篇可能会引起我们编剧同行的兴趣,更仔细地看看 Jason 提到的某些剧本工具,并重点介绍一些我发现(或创建)的工具。

多年来(事实上,直到今天),年轻的艺术家们被告知,如果他们对自己的艺术是“认真的”,他们就会使用一套非常特定的工具。这些工具恰好是特定供应商的产品。虽然学生折扣可能在最初适用,但最终全价会生效。在你意识到之前,你就会永远受制于该应用程序。

令人惊讶的是,像输入剧本文本这样简单的事情也受到完全相同的营销推动:你被告知,如果你想被“认真对待”,就必须使用特定的应用程序或特定的云服务。但事实是,一旦剧本打印在白色、粉色、黄色和蓝色的纸张上,只要格式正确,它就只是可以输入到任何应用程序中的文本。而且,让我们面对现实:如果说 Linux 有什么丰富的东西,那就是文本编辑器。

剧本格式

剧本格式很重要。事实上,行业内的一个经验法则是,一页剧本相当于一分钟的屏幕时间,而电影的拍摄单位是页面的八分之一。如果页面的八分之一包含的内容过多,就会对一个拍摄环节需要拍摄的内容产生不公平的期望。这里需要取得微妙的平衡,这就是为什么剧本格式演变成今天这种古怪的、偏离中心的布局的原因。

虽然从技术上讲,你可以手动输入剧本并设置格式,但编剧们往往更喜欢使用能够自动管理页边距和一些基本大写的应用程序。如果该应用程序还具有帮助管理地点和人名等功能,那将是额外的奖励。

不过,如果你是传统主义者,你也可以自行设置制表符并为 LibreOffice 开发样式。简而言之

  • Courier 12pt 字体
  • 1.5 英寸左右页边距
  • 对话 2.5 英寸左右页边距

假设你正在寻找不那么手动的工具,那么有三款剧本应用程序可以轻松实现开源剧本创作。

字体

严格来说,剧本的首选字体是 12 磅的 Courier 字体。Courier 字体是很久以前在 IBM 设计的,并且有多个版本。大多数人对 Courier 字体的体验来自操作系统捆绑的 Courier 字体(通常是 Courier 10 Pitch),但该特定的 .ttf 文件可能在技术上受版权保护。Alan Dague-Greene 为编剧 John August 提供了一种开源 Courier 字体,名为 Courier Prime

你应该下载并使用它,特别是对于你的剧本。

Trelby

如果你在电影学院接受了闭源剧本工具的培训,或者采用了曾经开源但后来转移到闭源云模型的应用程序,那么你可能正在寻找 Trelby(无论你是否知道)。

Trelby 在 Linux 和 Windows 上运行,并使用 Python 和 wxPython 框架编写。如果你尚未安装 wxPython,你可以从 Python 包服务 PyPi 或你的发行版的存储库中获取它。

如果你运行的是 Ubuntu 或类似的发行版,你应该能够从其可下载的 .deb 包中安装 Trelby。否则,下载通用 tarball,将其解压缩到 /opt,然后从那里使用它。确切步骤(其中 XY 是主版本号和次版本号)

$ sudo wget -qO- \
http://trelby.org/files/release/X.Y/trelby-X.Y.tar.gz \
| tar -C ./opt/ -xvz trelby-X.Y/trelby --strip 1
$ sudo mv /opt/trelby/trelby.desktop \
/usr/share/applications

照常启动。

现代便利

基本上,Trelby 是一款完美的应用程序。它拥有所有必备功能、一些锦上添花的功能、没有臃肿的功能,并且它的编写目的是智能、不妨碍你,并尊重你的数据。它就像一台有大脑的打字机——而且没有态度。

首次启动 Trelby 时,单击左侧工具栏中的 设置 图标,或导航到 文件 > 设置 > 更改

设置 窗口中,单击左列中的 显示 类别。如果 Trelby 没有自动检测到你的 Courier 字体,则将所有字体设置为 12 磅的 Courier Prime

Remember the Courier Prime directive

记住 Courier Prime 指令。

字体整理完毕后,剩下要做的就是写作。Trelby 会为你处理繁琐的格式设置;剧本的典型开头(在强制性的 FADE IN: 之后)是场景开头行。这是一个花哨的术语,指的是场景(场景内位置的表示)。场景开头行用全部大写字母书写,并且始终以 EXT.(表示外景)或 INT.(表示内景)开头。只要你将前三个字母大写,Trelby 就会自动检测到你正在输入场景开头行或“场景标题”,并在该行持续时间内保留大写字母和粗体字体。

Slug line

场景开头行

场景开头行之后通常是舞台指示(或“动作”);即非对话文本。Trelby 假定是这种情况,并在你按 回车键 后进入标准类型。

当你需要覆盖 动作 样式设置时,你可以通过键入 EXT.INT. 来强制新的场景开头行,或者添加一些对话(电影显然现在有声音了,而且据各方说法,它很吸引人)。

要进入 对话 模式,请按 Tab 键。这会将光标向内移动到标准角色名称缩进位置,并强制使用大写字母。在下一行,缩进会进一步调整,以便你可以输入对话块。

Talkies are a fad

有声电影只是一时的潮流

再次按 Tab 键 退出对话模式并返回正常输入。与往常一样,键入内容会产生动作,而适当的前缀会产生场景开头行。

适用于各种场合的元素

场景动作对话 元素类型涵盖了你 95% 的剧本创作需求,但剧本还使用其他输入类型,其中最重要的是 转场。可以通过右键单击或通过 ALT 键盘快捷键输入额外的元素类型,这些快捷键记录在 设置 > 更改 > 键盘 中(查找 ChangeTo 操作,这些操作在空白行切换到特定模式,并在已包含文本的行上转换文本)。

公平地说,转场在目前大多数情况下只是装饰性的;CUT TO: 几乎是默认的(传统上,它区分了物理剪切和叠化,叠化是一种光学效果,成本更高),而且你并不真的一定意味着 FADE INFADE OUT,但它们分别是剧本中的“很久以前……”和“……他们从此过上了幸福的生活”。

其他元素类型不太常见,通常在剧本中,你越不具体、越不精确就越好。剧本是故事的蓝图,而不是表演或剪辑的蓝图,因此通常认为少即是多。

标题页

与剧本世界中的其他一切一样,标题页也有一种预期的外观和感觉。诚然,在实践中它确实有所不同,但基本的标题页非常具有标志性[地简单]。

Behold, the title page

瞧,标题页

要创建你自己的标题页,请导航到 剧本 菜单 > 标题页

加分项

关于剧本的有趣之处在于,无论你在剧本上花费多少精力,你都永远无法完全回忆起你最终是如何决定拼写那个小角色名字的,或者你在一开始使用过的那个地点,只是为了在结尾处把它带回来。从历史上看,你不得不翻阅页面,疯狂地寻找答案,而你的灵感也慢慢从你的掌握中溜走。

不再需要这样了!借助 Trelby 等现代应用程序,你的剧本被授予角色名称和地点数据库。在场景开头行中键入地点或在对话开头键入角色都会调出自动完成功能,以便你可以根据需要从正确的条目中进行选择。

一开始就想不出名字?Trelby 也涵盖了这一点。打开浏览器并导航到充斥着广告的“给你的宝宝起什么名字”网站的日子已经一去不复返了。Trelby 具有按性别和种族分类的内置名称数据库。

更重要的是,你甚至可以从 Trelby 生成报告,以便你(或制片办公室)可以快速参考电影中需要哪些角色、角色的重要性(就台词和对话百分比而言)以及地点。

随着你的剧本变得更长更复杂,导航可能会变得令人生畏。Trelby 通过按场景编号 (Alt-G) 或页码 (Ctrl-G) 提供导航,帮助你找到方向。你还可以按场景选择整个文本块,使修改剧本变得稍微容易一些。

简而言之,Trelby 中有大量功能,即使对于最资深的编剧来说也是如此,而且最棒的是,功能不多此类编剧想要的功能。不再有无人实际使用的愚蠢功能,不再有专有的保存文件格式,也不再有许可问题。

Fountain

与此相反的另一种选择是不使用剧本编辑器,甚至不费心格式化你写的内容。听起来很疯狂?这很可能是疯狂的好处,它被称为 Fountain

Fountain 不是编辑器,而是一种 markdown 格式。要以 Fountain 格式编写,你只需要一个纯文本编辑器,例如 GeditAtom,并遵守这些简单的格式规则

  • 场景开头行大写(与往常一样)
  • 对话的角色标题大写并以换行符结尾(与往常一样)。角色名称和对话块之间没有空格。对话段落之间没有空格,只有换行符。
  • 动作块用一个空行分隔
  • 转场放在 双星号** 中

这就是全部内容。如果你在编写时牢记这些规则,那么你就生成了一个 Fountain markdown 文件。

它看起来有点像这样

**FADE IN:**

INT. FACTORY - DAY

It's still daylight. Or is it? Through the
thick black smoke and the crowd of sweating
bodies, it's hard to tell.

FOREMAN
Git on with it, we're not paying you to stand
around gaping at the ceiling.

The worker, STAN, looks one-and-two-thirds his
age. He wipes sweat from his brow, then looks
at his sleeve.

Blood.

The stigmata. It's back.

如你所见,即使它缺少适当的格式,它看起来和感觉也像剧本。

要生成精美的行业风格标题页,需要一些标记。它并不复杂,但它应该出现在剧本的顶部

Title:  The Stigmata of Stan
Credit: written by
Author: Seth Kenlon
Source: based on the novel by Seth Kenlon
Notes:
        FIRST DRAFT
    Copyleft: CC-BY-SA Seth Kenlon

A story of the Great Depression, and how a guy named
Stan accidentally invents microprocessors and becomes
a messiah of a technological apocalypse..

====

**Fade In:**

INT. FACTORY - DAY

Fountain 的优点在于,只要你可以像在任何文本文档中一样按下 回车键,你就不必考虑光标在页面上的位置。缺点是你对实际编写了多少内容的感知较少。跨越全屏文本编辑器的文本在 5 英寸页边距之间受到约束时会大不相同。但凭借经验和频繁检查,你可以培养对页面长度的感觉。

Trelby 中的 Fountain

你可以使用 Fountain 文件做什么?你可以使用众多 Fountain 转换器之一将其转换为剧本。

我们已经介绍了一个转换器:是的,Trelby 可以导入和格式化 .fountain 文件。只需启动 Trelby 并选择 文件 > 导入 并选择文件。如果你使用扩展名 .fountain,这将有所帮助。

在 Fountain 中赤脚

另一个转换器是跨平台 shell 命令 Barefoot。这个命令用 C++ 编写,确实需要编译(据我所知,它尚未在任何 Linux 存储库中),但编译过程在 Linux 上很简单。

在 Slackware 上

$ g++ -I /usr/include/boost/
barefoot.cpp -o barefoot
-L /usr/lib64/ -lboost_regex

或在 Fedora 上

$ g++ -I /usr/include/boost/ \
barefoot.cpp -o barefoot \
-L /usr/lib/ -lboost_regex

此类命令的结果是 barefoot 可执行文件,你可以将其放置在 $HOME/bin(如果你有)或 /usr/local/bin 中,然后从终端运行。

Barefoot 做一件事:它将 .fountain 剧本文件转换为格式化文本。这意味着你可以将其用作单个命令

$ barefoot ~/my.fountain > movie.txt

或者你可以在更大的管道中使用它

$ barefoot myScreenplay.fountain \
| pr -f -t | text2pdf > \
myScreenplay.pdf

等等。

数十个 Fountain 转换器,因此无论你需要什么工作流程,都可能有一个应用程序适合。

Screenwriter-Mode

GUI 应用程序 Trelby 和非应用程序 Fountain 之间可能存在一个快乐的媒介,那就是 Emacs screenwriter-mode

这个概念与 Trelby 非常相似:键盘快捷键允许你编写几种不同的元素。所有类型都有按键绑定;新用户和 Emacs 老手

  • alt-tctrl-c t 输入转场
  • alt-sctrl-c s 输入场景开头行
  • alt-actrl-c a 输入动作
  • alt-dctrl-c d 输入对话块

通常,screenwriter-mode 在流程方面与 Trelby 的自动化程度大致相同;它不会自动检测场景开头行,但由于动作和场景开头行之间除了大写之外真的没有区别,因此你实际上可以只输入内容,而无需切换到“场景开头行元素”。Screenwriter-mode 不像 Trelby 那样处理元数据;所有 c-c salt-s 所做的只是将文本转换为大写。

Emacs screenwriter-mode

Emacs screenwriter-mode

更有用的是转场和角色对话元素。这些都涉及复杂的缩进,因此进入这些输入模式确实很有帮助。与 Trelby 类似,新行会离开这些模式并返回到默认的动作输入。

Emacs 本身就是这样,你可以利用各种便利工具来管理地点和角色名称。我使用 auto-complete,但有很多选择。

screenwriter-mode 的主要优点是它是跨平台的(Emacs 运行的任何平台,几乎是所有平台)也运行 screenwriter-mode。这意味着无论如何你都拥有一个一致的剧本创作环境,并且由于 Emacs 在终端中也运行得非常好,你甚至不需要 GUI 来编写你的杰作(对于无干扰打字来说怎么样?)。

Unix 在电影中

Screenwriter-mode,就像 Fountain 一样,生成纯文本文件;没有元数据或特殊文件格式。与 Fountain 不同,不需要转换。除了易于格式化之外,screenwriter-mode 没有像 Trelby 那样的额外功能,尽管对于前期制作工作,纯文本工作流程同样强大。

Screenwriter-mode 附带了几个用于常见剧本相关任务的 shell 脚本。screenplay-character 脚本生成脚本所需的所有角色的报告。Screenplay-location 打印地点报告。Screenplay-title 生成标题页。

与 Trelby 不同,没有完全快捷的方式可以转到特定场景编号,也没有任何菜单选项可以选择整个场景。但是,以模块化方式编写剧本可以解决这些问题;将每个场景保存到单独的文件中,以便你可以根据需要移动它们,然后使用 screenplay-build 使用 cat 生成单个文件,并使用 screenplay-print 提供页码并使用 pr 命令打印。

剧本更改是出了名的难以管理的事情(主要是对人来说很难,但有时对软件来说也很难),但纯文本工作流程可以轻松处理它。就像源代码一样,剧本即使在制作过程中也会经历多次修订。由于页码和场景编号一旦剧本投入制作就会被冻结,因此这提出了一个有趣的问题;如何在不打乱已安排的页面的情况下向剧本添加页面?

答案是将修订后的页面打印在自己的页面上,并带有唯一的编号(23、23a、23b 等),并且通常使用彩色编码的纸张(第一次修订用粉色纸张,第二次修订用黄色纸张,依此类推)。使用纯文本,由于 diff,此类插入非常简单。

淡出

提醒人们 Linux 甚至可以编辑文本似乎很愚蠢,但剧本创作是一个利基行业,具有古怪的要求。人们有时会认为开源没有针对较小市场(尤其是创意市场)的工具,但幸运的是,也有一些创意人士也投入了开源。在 Trelby、Fountain 和 Emacs Screenwriter-mode 之间,我们这些有故事要讲且手指发痒想打字的人没有什么可担心的。

Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家以及 D&D 爱好者。他曾在电影和计算机行业工作,通常同时进行。

5 条评论

太棒了!谢谢你。有这么多很棒的小应用程序。我很想尝试一下 Tkscenarist。感谢您让我们知道。

回复 ,作者:burak (未验证)

不幸的是,Trelby 顽固地想要 wxwidgets 2.8,但 Ubuntu 16.04 上只有更高版本可用。代码在运行时检查 wxwidgets 版本,并拒绝版本 2.8。Debian 包也引用了此要求,从而关闭了安装途径。因此,不可能在当前版本的 Ubuntu 上安装 Trelby。

s/possible/easy。这是可以做到的;使用 pip(或自行编译)在本地安装 wx 版本,并在启动 Trelby 时使用本地版本的 wx。但是,正如你所说,这并不完全是用户友好的。

我将看看是否有机会查看 Trelby;从 2.8 升级到 3.x 可能很容易修复... 如果我有时间,我会向 Trelby 社区提交一个建议的补丁。

与此同时,请查看其他一些选项,特别是刚刚推荐的那个看起来很棒的 tkscenarist!

回复 ,作者:Johannes Rexx (未验证)

看起来在去年年底,对 3.0 的支持已提交到 Github → https://github.com/oskusalerma/trelby

如果你从 Github 下载 Trelby,那么它应该可以使用 wx 3.x,大概在 Ubuntu 16 及更高版本上(我没有机会在 Ubuntu 上进行测试,但开发人员正在使用 Debian,所以我假设它应该可以工作)。如果你不熟悉 Git 或 Github,请查看我关于 Git 的文章:https://open-source.net.cn/resources/what-is-git

我正在更新文章,链接到 Github 而不是 trelby.org(尽管最近在 2015 年 12 月进行了更新,但该网站上的版本来自 2012 年或更早版本)。

与此同时,我已经修补了 Trelby 代码,以便它应该可以与 2.8 或 3.0 一起使用。合并请求正在等待中。https://github.com/oskusalerma/trelby/pull/384

回复 ,作者:Johannes Rexx (未验证)

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.