只需动动鼠标,你就能将在 Ulysses 上的创作导出为多种多样的样式。在某种意义上来说,所谓的样式是用以定义最终文件外观的一个概念。Ulysses 本身有几个内置的样式,你可以在我们的样式和主题网站上下载更多。对于使用 Mac 版的 Ulysses 用户,还能使用 Ulysses样式表创建你自己的自定义样式。

Ulysses 样式表 (ULSS) 以一种简单而灵活的文本格式存储你的样式设置。ULSS 格式类似于流行的CSS (层叠样式表) 格式。如果你对CSS很熟悉,你可以跳过本教程的第一部分,直接从我们对 CSS 的介绍开始阅读。

关于 Ulysses 样式表的语法、描述和例子的详细介绍,请查阅ULSS参考资料

本篇教程内容如下 (你也可以按照自己需求,直接查看自己感兴趣的部分):

  • 适用于初学者的 Ulysses 样式表
  • 适用于已熟悉 CSS 用户的 Ulysses 样式表
  • Ulysses 样式表如何:
    • 创建一个新的样式
    • 设置自定义字体
    • 使用一个字体的浅色或深色变体
    • 在标题前添加分页符
    • 改变首段的缩进
    • 改变列表的序列方式
    • 改变脚注的序列或位置
    • 导出我的原始标记
    • 设置论文格式
    • 创建目录、书目或参考文献

适用于初学者的 Ulysses 样式表

以下会为你逐步讲解 Ulysses 样式表,且不需要你预先掌握任何其他样式表语言的知识。

唯一的要求是需要你有一个文本编辑器。为了实现自动完成和语法彩色高亮,我们建议使用 TextMate 2Sublime Text 2 或是 Atom。我们还为 BBEditTextWrangler 的简单语法高亮创建了一个插件。对于这两个应用程序,我们提供了 ULSS 的插件

这篇教程是针对 Ulysses Style Sheets(ULSS)的初学者。在阅读这篇文章之前,你不需要提前具有Ulysses或其它样式表的任何知识。只需一个本文编辑器就可以创建你专有的导出样式。

为了获得自动完成和语法高亮功能,我们建议使用 TextMate 2Sublime Text 2 或 Atom。为了在 BBEdit 和 TextWrangler 上实现语法高亮,我们还创建了插件。通过此链接可在ULSS中下载插件

让我们开始吧

我们建议你可以先从修改一个内置的 Ulysses 风格的副本开始。这样,你就可以把这个样式作为一个简单的框架,而不需要从头开始。从 Ulysses 菜单,打开 Ulysses 偏好设置 > 样式> 选择 "Novel Cochin" 样式(这里可下载此样式表)> 右键选择复制 >选择副本,并右键编辑工具 > 选择你的文本编辑器打开它。

现在你会看到一个文本文件,其中包含对你的导出样式的描述。该描述分为许多不同的区段,每一区段看起来都与下面的例子类似。

如果你浏览整个文件,你会发现几乎所有的 Ulysses 标记语言都有相应的区段。例如:heading-all 区段描述了标题的通用样式。另一个区段,inline-strong,包含了使用强标记的文本的样式。我们称这样的区段为样式级

每个样式级都以样式选择符开始 (如同 heading-all inline-strong ), 它决定了 Ulysses 何时应该用怎样的样式级别。选择符后面紧跟着一个被花括号 { } 括起来的”代码块”。这个代码块涵盖了实际的样式设置,包括设置名称与数值。比如在上面的例子中,规定所有的标题都应使用 “Futura” 字体。

现在,让我们练习一下吧:将你样式表中 heading-all 中的字体从 “Futura” 改为 “Avenir Next“

在文本编辑器中保存这个操作,并切换回 Ulysses 。创建一个新文稿,并包含以下内容:

在 PDF 导出预览中,选择你修改过的样式表,你会看到所有的标题字体现在都变成了 ”Avenir Next” 字体。

 

无需重复!

当创建一个样式时,你无需不断重复编辑操作:Ulysses 不会为每个标记单独设置字体系列或大小,而是自动选择正确的默认值。这样,你只需在一个地方改变设置即可,而不会因此改变其他设置。当你仔细查看你的样式表时,你会发现所有的标题都共享一个字体,只是字体大小有所不同而已:

当为文本添加样式时,Ulysses 会从上到下扫描你所有的样式级。只要有一个样式级与你的内容相匹配,它将会被自动选定为你的样式。例如,对于二级标题的文本可能会与 heading-allheading-2 匹配。根据它们在你样式表中的顺序,Ulysses 将自动进行匹配。在刚刚的例子中,Ulysses 会将 heading-all font-familyheading-1heading-2font-size 相匹配。如果两个样式包含相同的设置,将自动使用后一个样式的设置。

 

层叠样式

回顾一下我们的样本文本:

除了一个标题标记,它还包含一个 “强标记 “。 在一种情况下,这个文本是标题的一部分,而在另一种情况下,它属于一个普通段落。在你的导出结果中,你可以看到,无论段落类型如何,强标记文本均为粗体字。

 

每当一个标记被嵌套在另一个标记中时,Ulysses会在导出时自动混合它们的样式:实际的样式是由内部标记的样式(如 inline-strong)和外部标记的样式(如 heading-2)组成。你不必为所有可能的组合创建样式级;一个就足够。

 

条件样式

然而,在某些情况下,你可能想根据文本的位置来确定其样式。让我们假设你不想在标题内导出任何粗体字。如何防止这两种样式被混合在一起呢?只需一个条件选择器。只需在你的inline-strong 级别之后添加另一个级别。

​样式选择器会从右到左进行识别,上方例子第一行的意思是:“任何标题内的强文本”。这个样式级的设置说明,这样的强文本不应作为粗体样式。由于这个样式级被放在了inline-strong  出现之后(在样式表内),所以标题的样式级将覆盖掉它。

当然,对于条件样式也有其他情况。例如,你想让一个段落的第一行缩进,这取决于它是否是标题后的第一段。在这种情况下,你只需通过 "+" 关系来创建一个条件样式:

第一个样式级使任何段落的第一行缩进为 10pt 。第二个样式级为紧跟标题的所有段落创建了无需缩进的设置。

还有更多设定你内容的可能性;你可以在语法概述中,以浏览关于样式选择器更完整的概述。

如何继续?

到目前为止,你已经改变了一些标题的样式。在阅读样式表时,你会发现还有许多样式级。其中许多与你的 Ulysses 标记的定义名称相似:例如,inline-emphasis样式强调文本,block-code设置代码块,以及list-ordered 设置你的有序列表。

然而,还有一些特殊的样式级:defaults级设定了你文档内所有的基本样式。如果你改变了它,所有无样式文本也会因此而改变。document-settings级包含了适用于整个导出文档的细节,如论文格式或脚注列举的方式。

我们已经整理了几个常见的样式调整样式的方法。这主要还是要根据你想要实现的效果,自己多多练手试一试,就会让你在之后的使用中更加游刃有余。

要了解更多关于所有现有的风格级和它们的样式设置,你可以查阅我们的综合参考目录。如果想深入了解 ULSS 的一些高级功能,我们推荐你看一下我们为大家准备的语法概述

适用于已熟悉 CSS 用户的 Ulysses 样式表
 

若你很熟悉CSS, ULSS 样式表对你而言将会非常简单。 只需通过双击复制其中一个内置样式,然后用你喜欢的文本编辑器进行编辑。我们为Text Mate 2Sublime Text 2Atom提供了自动完成和语法高亮的插件。还有一个简单的语法高亮插件,适用于 BBEditTextWrangler

与 CSS 类似,ULSS 样式表由样式级组成,这些样式级将根据样式选择器应用到你的文本中。例如,设置1级标题的字体大小可以通过以下样式级轻松搞定:

为了简化样式,我们在ULSS中添加了一些高级功能,并跳过了 CSS 中一些不太相关的功能。这一章将为你简要介绍两者主要的区别和相似之处。要全面了解所有可用的样式设置,请看完整的参考资料。​

 

通用选择器

除了特定标记的选择器(如 inline-strong),ULSS 还支持通用选择器。通用选择器就是匹配整个类别的标记。例如,你可以使用 heading-all 级为所有的标题创建一个样式。目前,有以下的通用级可供使用:

  • defaults用作所有文本的基础样式。
  • heading-all设定任何标题的样式
  • list-all设定任何文本列表的样式
  • block-all设定任何代码块的样式 (代码块引用 等)

相对选择器

与 CSS 类似,样式选择器不仅仅可以选择单个标记,还可以通过一个条件来关联多个样式。例如:选择器 heading-all + paragraph规定,只有当段落在标题之后时,才应该应用某个段落级。 ULSS 支持以下 CSS 的关系:

  • parent child
  • parent > immediate-child
  • predecessor + successor
  • 一些 伪级别 比如:first:last

样式继承

如同 CSS,Ulysses 样式表是层叠的:内部标记的样式覆盖外部标记的样式。

与 CSS不同的是,对于一个样式级的特殊性并无等级之分。如果多个样式级可以应用到一个标记(例如 heading-allheading-1),样式在样式表中的顺序是优先的。样式表中之后的设定将覆盖之前的设定。

混入(Mixins)

如果你想在多个样式级之间共享样式设置,你可以使用样式混入。混入(Mixin)扩展了一个样式级:

 

在上面的例子中,@code 中的设置同时应用于了 block-code inline-code ,你无需重复相同的设置。

变量和表达式

为了提高样式的可读性,且更易创建变体,你可以使用变量 。例如,你可以在一个变量中设定好一个常用颜色,并在多个样式中多次使用它:

变量甚至还可以在你的样式表的任意地方包含简单的计算("表达式"):

当然,表达式同样可以在样式设定中使用:

 

Ulysses 样式表:如何...

创建一个新的样式?
 

开始的最好的方法是复制一个内置的样式表。通过 "Ulysses "菜单,打开 "偏好设置",进入 "样式 "部分。双击其中一个内置的DOCX/PDF样式,并将其复制,然后选择副本,并选择合适的文本编辑器来编辑它。对于一些文本编辑器,我们提供了语法高亮和自动完成的插件

设置自定义字体?

只需修改样式类中font-family中的字体即可。例如你想修改一个标题的字体,则可直接修改 heading-allheading-1中的字体。若你想修改一般性的字体,修改defaults样式类下的字体即可:

使用一个字体的浅色或深色变体
 

若要使用某个字体系列的某个变体,请对font-style进行设置:

你可以从macOS 的 Font Book (字体册) 应用程序中获得所有字体系列及字体样式的概览。在字体列表中,只要展开字体系列条目,你就会得到所有可用的字体样式列表。

设置标题的文本对齐方式(text-alignment)。

如果你想只将一个特定的标题级别居中,可以使用像 heading-1heading-4这样的选择器。
 

在标题前添加分页符

如果你想在某个标题级别前添加一个分页符,可以在相应的标题级中添加 page-break: before

此外,若分页的脚注也需要重新编号,可以考虑更新document-settings级中的 section-break设置。

改变首段的缩进

使用伪级:first, 你可以创建一个只适用于首段的样式:

若标题后的首段不需要缩进,你可以如下操作:

这个样式只匹配那些紧跟在标题后面的段落。想了解更多关于伪级和样式关系的内容,请参考语法参考

改变列表的序列方式

可以通过  enumeration-formatenumeration-style设定来改变序列样式。比如,若你想通过字母的形式对序列进行排序,只需改变list-ordered内的样式:

占位符%p 在导出时将会被列举的字符所代替,在上述例子中,你的序列将以 “a), b), c)” 的形式被列举出来,若你想在不同级别的序列使用不同的符号,改变相应级别下的设定即可:

使用这种方式,第一级序列将使用用 "1.,2.,3. ", 而所有嵌套的序列将按字母 "a), b), c)" 排列。

改变脚注的序列和位置

若需改变脚注的序列和位置,可以在 document-settings 级别下,调整 footnote-enumerationfootnote-placement 的设定。

导出我的原始标记

对于所有的技术内容,你可以使用像 ulysses-tagulysses-escape-character等级别。这些级别默认是不可见的。要使它们可见,请插入以下代码片段:

 

设置论文格式

要调整你的PDF文件的论文格式,你可以使用document-settings级中的page-heightpage-width设置。你也可以在那里创建一个具有不同页面嵌入的two-sided(双面文档)。

创建目录、参考书目或参考文献

很遗憾,目前还不支持这个功能。然而,我们计划在 Ulysses 之后的版本中添加这个功能。

 

 

 


原文及其他有关样式的教程请参见Ulysses官网。本文将持续更新。如果您在使用过程中有任何问题,欢迎您通过邮件方式与我们联系help@ulysses.app。