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 文本处理
24KB
110 行
scripter
剧本编译器。
这是做什么的?
有一个不错的剧本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}