使用 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 假设是这种情况,并在你按下 Return 键后切换到标准类型。

当你需要覆盖动作样式设置时,你可以通过键入 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 的优点是你不必考虑光标在页面上的位置,只要你可以像在任何文本文档中一样按下 Return 键。缺点是你对实际编写了多少内容的感觉较少。当限制在 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 月进行了更新,但 trelby.org 上的版本来自 2012 年或更早)。

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

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

© . All rights reserved.