5个版本 (3个破坏性更新)

0.4.1 2019年10月8日
0.4.0 2019年8月4日
0.3.0 2019年8月4日
0.2.0 2019年7月24日
0.1.0 2019年7月23日

#1075 in 文本处理

MIT 许可证

24KB
110

scripter

Build Status Coverage Status

剧本编译器。

这是做什么的?

有一个不错的剧本LaTeX包,但使用它并不特别方便,因为代码相当冗长。

因此,让我们使用一个临时的最小脚本语言并将其转换为TeX。

语言的规则

  • 忽略行首和行尾的空白
  • 只包含空白行的行将被忽略
  • 第一行是标题
  • 第二行是作者
  • 忽略空行
  • INT. EXT. 开始的行被视为场景标题,INT. EXT. 之后的是自由形式
  • 以空白字符开头的行假定包含对话。这要求它们至少包含一个:字符。第一个冒号之前的部分是说话的角色,第二个是所说的内容。括号中的部分被视为插入语。除了第一个冒号之外的其他冒号被视为普通文本。
  • 其他行被视为描述

示例

输入

The Alienant, version 1
Firstname Lastname

INT. SPACE STATION

Dark corridor. Something lurks in the shadows.

EXT. MILITARY BASE -- DAY

COLONEL SMITH smokes a cigarette. There are items on his desk: a bottle of whisky, a gun and a doll. SMITH looks up as CAPTAIN PARKER approaches.

CAPTAIN PARKER doesn't look too well.

	SMITH: So, it's begun.
	PARKER: Yes. (inhales) Yes, it has.
	SMITH: I was afraid it'd come to this. Look: how about we –
	PARKER: No.
	SMITH: But & % $ # _ { } ~ ^ \
	PARKER: Hold on, what?

TeX输出

\documentclass{screenplay}
\usepackage[T1]{fontenc}
\usepackage[polish]{babel}
\usepackage[utf8]{inputenc}
\title{The Alienant, version 1}
\author{Firstname Lastname}
\begin{document}
\coverpage
\fadein
\intslug{SPACE STATION}

Dark corridor. Something lurks in the shadows.

\extslug{MILITARY BASE -- DAY}

COLONEL SMITH smokes a cigarette. There are items on his desk: a bottle of whisky, a gun and a doll. SMITH looks up as CAPTAIN PARKER approaches.

CAPTAIN PARKER doesn't look too well.

\begin{dialogue}{SMITH}So, it's begun.\end{dialogue}

\begin{dialogue}{PARKER}Yes. \paren{inhales} Yes, it has.\end{dialogue}

\begin{dialogue}{SMITH}I was afraid it'd come to this. Look: how about we –\end{dialogue}

\begin{dialogue}{PARKER}No.\end{dialogue}

\begin{dialogue}{SMITH}But \& \% \$ \# \_ \{ \} \textasciitilde{} \textasciicircum{} \textbackslash{}\end{dialogue}

\begin{dialogue}{PARKER}Hold on, what?\end{dialogue}

\fadeout
\theend
\end{document}

输出PDF

无运行时依赖