惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
Engineering at Meta
Engineering at Meta
腾讯CDC
宝玉的分享
宝玉的分享
H
Help Net Security
I
InfoQ
博客园 - Franky
The GitHub Blog
The GitHub Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Microsoft Security Blog
Microsoft Security Blog
M
MIT News - Artificial intelligence
博客园_首页
美团技术团队
Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
雷峰网
雷峰网
The Cloudflare Blog
博客园 - 司徒正美
Vercel News
Vercel News
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
爱范儿
爱范儿
月光博客
月光博客

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
【风格 & 主题】在 Ulysses 中自定义 PDF/DOCX 导出样式 - 少...
2021-11-05 · via 少数派

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

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

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

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

  • 适用于初学者的 Ulysses 样式表
  • 适用于已熟悉 CSS 用户的 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。