定义样式
使用Ulysses样式表,您可以创建自定义的RTF样式以导出Ulysses文档。 为了将样式分配给Ulysses中的某个定义,您只需编写一个所谓的样式类。 样式类由样式选择器和一些样式设置组成:
inline-strong {
font-family: "Cochin"
font-weight: bold
}
样式设置被写为键值对,例如font-family: "Cochin"
. 样式设置被写为键值对,例如font-family:“ Cochin”。 样式设置在换行符上结束。 要在一行中放置多个设置,请使用分号 ';'
也可以使用:
inline-strong { font-family: "Cochin"; font-weight: bold; }
Ulysses样式表为您提供了许多通过变量和表达式重新使用样式设置的灵活方法。 我们在后面提供了有关样式设置的更详细的概述。 您可以在设置参考中找到所有样式设置的概述。
样式选择器
样式选择器指定何时应应用样式。 最简单的样式选择器是定义选择器,例如 inline-strong
或者 heading-1
.但是,如果要为整个定义类创建样式,则也可以使用定义类选择器,例如list-all
. 这些选择器匹配特定类型的任何内容:例如,选择器 list-all
匹配所有列表:例如 list-ordered
和 list-unordered
.
除了您的Ulysses文档中使用的定义外,还有一些通用的类选择器,它们描述有关整个导出文档的视觉外观的设置。 例如,选择器的 area-header
和 area-footer
可用于为文档中任何页面的页眉或页脚区域设置样式。The class document-settings
包含文档的常规设置,例如纸张格式。The setting defaults
描述文档中任何节点的基本样式。
您可以在 Class Reference中找到所有可能的定义及其设置的全面概述。.
相对选择器
可以使用非常灵活的方式来使用样式选择器:使用相对样式选择器,可以指定仅将样式用于相对于其他内容放置在特殊位置的内容。 例如,您可以声明一种样式,该样式仅应用于文档中heading1之后的段落:
heading-1 + paragraph {
margin-top: 0pt
}
以下关系可用于相对样式选择器:
关系 | 例子 | 描述 |
---|---|---|
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
伪类,您可以指定某种样式只能应用于块引用的第一段:
block-quote > paragraph :first {
first-line-indent: 0pt
}
也可以一次指定多个伪类:
block-quote > paragraph :first :last {
first-line-indent: 0pt
}
还有一些伪类根据生成的输出上的位置进行匹配。 例如,伪类: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 样式设置。 |
评估顺序
在某些情况下,多个样式可能与您的内容匹配,如以下示例所示:
list-all {
margin-top: 5pt
margin-left: 10pt
}
list-ordered {
margin-left: 20pt
}
defaults {
font-size: 14pt
}
在这种情况下,将按照样式的出现顺序应用样式。 例如,如果应该首先设置list-ordered
类型的节点的样式,则将应用list-all
,然后是list-ordered
,最后是defaults
。 因此,计算出的样式将是:
margin-top: 5pt // from list-all
margin-left: 20pt // from list-ordered
font-size: 14pt // from defaults
继承
如果要导出嵌套在其他节点中的节点,则嵌套的内容会继承其自身未定义的所有更高级别的样式。 考虑一下,您具有以下Markdown文档和以下Ulysses样式表:
> # Heading with **strong text**
> Normal text inside quote
block-quote {
font-family: "Cochin"
font-slant: italic
}
heading-1 {
font-family: "Futura"
font-size: 24pt
}
inline-strong {
font-weight: bold
}
“强文本”的样式将通过将“块引用”样式与heading-1
和inline-strong
混合使用而得出。 而内部元素的设置将覆盖外部元素的设置。 因此,计算出的样式将是:
font-family: "Futura" // heading-1 overwrites the font-family of block-quote
font-slant: italic // Inherited form block-quote
font-size: 24pt // Set by heading-1
font-weight: bold // Set by inline-strong
Mixins
有时创建可以在多种样式之间共享的常规预设很有用。 例如,样式inline-code
和code-block
可以共享相同的字体设置。 这可以通过使用mixins完成。 混入是一组可以嵌入其他样式的预定义设置。 以下示例显示了如何定义mixin@general-code-style
以及如何将其嵌入到样式中:
@general-code-style {
font-family: "Courier"
font-size: 12pt
}
inline-code : @general-code-style {
color: #0000ff
}
block-code : @general-code-style {
color: #ffffff
background-color: #0000ff
}
混合标识符始终以“@
”字符开头。 混合标识符可以包含任何字母数字字符。 多个单词通常用破折号分隔: @my-mixin-name
。 使用冒号“:
”将其应用于样式选择器之后的样式定义。 要将多个mixin应用于样式,只需使用逗号分隔的列表即可:
some-style : @first-mixin, @second-mixin, @third-mixin {
}