定义样式

使用Ulysses样式表,您可以创建自定义的RTF样式以导出Ulysses文档。 为了将样式分配给Ulysses中的某个定义,您只需编写一个所谓的样式类。 样式类由样式选择器和一些样式设置组成:

  1. inline-strong {
  2. font-family: "Cochin"
  3. font-weight: bold
  4. }

样式设置被写为键值对,例如font-family: "Cochin". 样式设置被写为键值对,例如font-family:“ Cochin”。 样式设置在换行符上结束。 要在一行中放置多个设置,请使用分号 ';' 也可以使用:

  1. inline-strong { font-family: "Cochin"; font-weight: bold; }

Ulysses样式表为您提供了许多通过变量和表达式重新使用样式设置的灵活方法。 我们在后面提供了有关样式设置的更详细的概述。 您可以在设置参考中找到所有样式设置的概述。

样式选择器

样式选择器指定何时应应用样式。 最简单的样式选择器是定义选择器,例如 inline-strong 或者 heading-1.但是,如果要为整个定义类创建样式,则也可以使用定义类选择器,例如list-all. 这些选择器匹配特定类型的任何内容:例如,选择器 list-all 匹配所有列表:例如 list-orderedlist-unordered.

除了您的Ulysses文档中使用的定义外,还有一些通用的类选择器,它们描述有关整个导出文档的视觉外观的设置。 例如,选择器的 area-headerarea-footer 可用于为文档中任何页面的页眉或页脚区域设置样式。The class document-settings 包含文档的常规设置,例如纸张格式。The setting defaults 描述文档中任何节点的基本样式。

您可以在 Class Reference中找到所有可能的定义及其设置的全面概述。.

相对选择器

可以使用非常灵活的方式来使用样式选择器:使用相对样式选择器,可以指定仅将样式用于相对于其他内容放置在特殊位置的内容。 例如,您可以声明一种样式,该样式仅应用于文档中heading1之后的段落:

  1. heading-1 + paragraph {
  2. margin-top: 0pt
  3. }

以下关系可用于相对样式选择器:

关系 例子 描述
Definition strong 样式类使用特定的
Definition
匹配所有节点。
Definition
+
SuccessorDefinition
heading1 + all-paragraphs 样式类使用
SuccessorDefinition
匹配所有节点,这些节点紧随使用
Definition
的节点。
ParentDefinition

ChildDefinition
area-footnotes image 样式类使用
ChildDefinition
匹配所有节点,这些节点位于使用
ParentDefinition
嵌套在节点下的某个位置。
ParentDefinition
>
ChildDefinition
orderedList > unorderedList 样式类使用
ChildDefinition
匹配所有节点,这些节点立即嵌套在使用
ParentDefinition
的节点下。

伪类

可以使用pseudoclasses对样式选择器进行进一步的改进。 一些伪类可用于确定节点在其父节点内的位置。 例如,通过使用:first伪类,您可以指定某种样式只能应用于块引用的第一段:

  1. block-quote > paragraph :first {
  2. first-line-indent: 0pt
  3. }

也可以一次指定多个伪类:

  1. block-quote > paragraph :first :last {
  2. first-line-indent: 0pt
  3. }

还有一些伪类根据生成的输出上的位置进行匹配。 例如,伪类:left-page:right-page可用于在导出双面文档的左或右页面时指定页眉或页脚的格式。 最后,还有一些伪类用于指定样式的某个方面。 例如,:enumerator伪类用于为有序列表的枚举器设置样式(例如,将项目符号点加粗)。

当前,存在以下伪类:

名称 可用性 描述
:first-page Headers and Footers 该样式将仅应用于节的第一页上的页眉或页脚。
:left-page Headers and Footers 该样式将仅应用于节左侧页面上的页眉或页脚。
:right-page Headers and Footers 该样式将仅应用于节右页上的页眉或页脚。
:anchor Footnotes Area 脚注区域内锚点的样式。 请参阅
Inline 类
。 默认为上标文本。
:first Inline, Headers and Footers, Footnotes Area, Media, Footnotes, Paragraph, Figures, Figure Captions, Divider, Block, List, Syntax Highlight, Technical 样式匹配作为其父级的第一个子级的任何节点。
:last Inline
,
Headers and Footers
,
Footnotes Area
,
Media
,
Footnotes
,
Paragraph
,
Figures
,
Figure Captions
,
Divider
,
Block
,
List
,
Syntax Highlight
,
Technical
样式匹配作为其父级的最后一个子级的任何节点。
:anchor Footnotes 用于对与注释内容分开的注释的参考锚点进行样式设置。 请参阅
Inline 类
。 默认为上标文本。
:enumerator List 列表枚举器的样式。 支持所有
Inline
样式设置。

评估顺序

在某些情况下,多个样式可能与您的内容匹配,如以下示例所示:

  1. list-all {
  2. margin-top: 5pt
  3. margin-left: 10pt
  4. }
  5. list-ordered {
  6. margin-left: 20pt
  7. }
  8. defaults {
  9. font-size: 14pt
  10. }

在这种情况下,将按照样式的出现顺序应用样式。 例如,如果应该首先设置list-ordered类型的节点的样式,则将应用list-all,然后是list-ordered,最后是defaults。 因此,计算出的样式将是:

  1. margin-top: 5pt // from list-all
  2. margin-left: 20pt // from list-ordered
  3. font-size: 14pt // from defaults

继承

如果要导出嵌套在其他节点中的节点,则嵌套的内容会继承其自身未定义的所有更高级别的样式。 考虑一下,您具有以下Markdown文档和以下Ulysses样式表:

  1. > # Heading with **strong text**
  2. > Normal text inside quote
  3. block-quote {
  4. font-family: "Cochin"
  5. font-slant: italic
  6. }
  7. heading-1 {
  8. font-family: "Futura"
  9. font-size: 24pt
  10. }
  11. inline-strong {
  12. font-weight: bold
  13. }

“强文本”的样式将通过将“块引用”样式与heading-1inline-strong混合使用而得出。 而内部元素的设置将覆盖外部元素的设置。 因此,计算出的样式将是:

  1. font-family: "Futura" // heading-1 overwrites the font-family of block-quote
  2. font-slant: italic // Inherited form block-quote
  3. font-size: 24pt // Set by heading-1
  4. font-weight: bold // Set by inline-strong

Mixins

有时创建可以在多种样式之间共享的常规预设很有用。 例如,样式inline-codecode-block 可以共享相同的字体设置。 这可以通过使用mixins完成。 混入是一组可以嵌入其他样式的预定义设置。 以下示例显示了如何定义mixin@general-code-style 以及如何将其嵌入到样式中:

  1. @general-code-style {
  2. font-family: "Courier"
  3. font-size: 12pt
  4. }
  5. inline-code : @general-code-style {
  6. color: #0000ff
  7. }
  8. block-code : @general-code-style {
  9. color: #ffffff
  10. background-color: #0000ff
  11. }

混合标识符始终以“@”字符开头。 混合标识符可以包含任何字母数字字符。 多个单词通常用破折号分隔: @my-mixin-name。 使用冒号“:”将其应用于样式选择器之后的样式定义。 要将多个mixin应用于样式,只需使用逗号分隔的列表即可:

  1. some-style : @first-mixin, @second-mixin, @third-mixin {
  2. }