前列腺素F/TikZ公司手动

这个TikZ公司和PGF包
3.1.10版手册

基本层

100层次结构:包、环境、范围和文本

100.1概述

前列腺素f使用两种层次结构:首先,包本身是结构化的层次结构上,由相互构建的不同包组成。第二,前列腺素f允许您使用环境和范围按层次结构构造图形。

100.1.1程序包的层次结构

这个前列腺素f系统由几个层组成:

系统层。

最底层称为系统层,虽然它也可能被称为“驱动层”,或者“后端层”。它的工作是提供用于转换.dvi格式文件。系统层由包实现pgfsys公司,它将根据需要加载适当的驱动程序文件。

系统层记录在第部分X(X).

基本层。

基本层由包加载pgf孔以及命令的后续使用\使用pgf模块加载基本层的其他模块。

本部分记录了基本层。

前端层。

前端层不是由单个包加载的。相反,不同的包,如TikZ公司pgfpict2e页,是基本层的不同前端。

这个TikZ公司前端记录在第部分.

每一层都会自动加载其下各层所需的文件。

除了这些层的包之外,还有一些库包。这些包提供了其他定义新的箭头提示或新的绘图处理程序。

库包在第.

100.1.2图形的层次结构

中的图形前列腺素f通常是分层结构的。层次结构可用于确定要“以同样的方式”处理的图形元素组。例如,您可以分组将若干条路径放在一起,所有这些路径都要用红色绘制。然后,当您稍后决定是否绘制这些路径时比方说,在蓝色中,你只需要改变一次颜色。

层次结构背后的一般机制称为范围界定在计算机科学中。这个想法就是在范围内对图形的一般“状态”所做的更改是该范围的局部更改。所以,如果你更改范围内的颜色,这不会影响范围外使用的颜色。同样,当您更改线宽时在范围内,外部线宽不变,依此类推。

图形参数的范围有不同的开始和结束方式。不幸的是,这些范围有时相互“冲突”,有时不立即清楚适用于哪些范围。本质上以下范围界定机制可用:

  • 1.支持的“最外层”范围前列腺素f{pgf图片}环境。在内部对图形状态进行的所有更改{pgf图片}都是那张照片的本地人。

    一般来说,它是可以在任何外部全局设置图形参数{pgf图片}环境。因此,您可以\pgf设置线宽{1pt}在文档的开头,默认线宽为1点。相反,您必须(重新)设置每个内部的所有图形参数{pgf图片}.(如果是太麻烦了,试着定义一些宏来完成这项工作。)

  • 2.内部{pgf图片}您可以使用{pgfscope}环境到将图形状态的更改保持在该环境的本地。

    更改图形状态的命令的效果仅限于当前{pgfscope},但是不总是电流组。因此,如果您打开{pgfscope},例如,如果您更改破折号模式,此更改的破折号模式的效果将持续到{pgfscope}.

    不幸的是,情况并非总是如此。有些图形参数仅持续到当前结束组。例如,当您使用\pgf标准箭头将箭头尖设置在组,效果仅持续到电流结束组。

  • 3.一些图形参数的范围不受{pgfscope}但“已经”了组。例如,坐标变换命令的效果总是局部的组。

    自从{pgfscope}自动创建组,当前本地的所有图形参数组也是当前的本地{pgfscope}.

  • 4.某些图形参数的范围只能使用组,因为在某些情况下不可能引入{pgfscope}例如路径必须始终完全构建并在同一个路径中使用{pgfscope}。然而,我们可能会希望对路径上的不同点应用不同的坐标变换。在这种情况下,我们可以使用小组保持局部效果,但我们无法使用{pgfscope}.

  • 5\pgft文本命令可用于创建一个范围,其中“转回”正常模式。传递给的文本\pgft文本“严防”产生任何影响使用范围。例如,可以使用另一个{pgf图片}论点中的环境\pgft文本.

如果你坚持以下规则,大多数并发症都可以避免:

  • •仅在内部提供图形命令{pgf图片}环境。

  • •使用{pgfscope}构造图形。

  • •请勿使用图形中的组,除了保持坐标变换的局部效果。

100.2包的层次结构

在我们讨论由提供的结构化命令之前前列腺素f要构建图形,首先让我们看看包本身的结构。

100.2.1核心包

要使用前列腺素f,包括以下软件包:

  • \usepackage(使用包){pgf孔} %

  • \输入pgf孔.tex%普通

  • \使用模块[pgf孔]Con百分比t吨

  • 此包加载pgf公司,但没有模块。也就是说,它将加载本手册当前部分中描述的所有命令,但不会加载像这样的前端TikZ公司。它还将加载系统层。要加载其他模块,请使用\使用pgf模块命令解释如下。

以下软件包只是一种方便。

  • \usepackage(使用包){前列腺素f} %

  • \输入前列腺素f.tex%普通

  • \使用模块[前列腺素f]Con百分比t吨

  • 此包加载pgf孔和两个模块形状情节.

    ,该包有两个选项:

    • \usepackage(使用包)[草案]{前列腺素}

    • 设置此选项后,所有图像都将替换为空矩形。这可以加快编译速度。

    • \usepackage(使用包)[版本=版本]{前列腺素}

    • 指示版本的命令版本需要定义。如果您设置版本0.65然后是大量的“兼容性命令”加载。如果您设置版本0.96,则这些兼容性命令将不会加载。

      如果根本没有提供此选项,则定义所有版本的命令。

100.2.2模块
  • \使用pgf模块{模块名称}

  • 加载内核后,可以使用此命令加载更多模块。中的模块模块名称列表应以分隔逗号。不用花括号,也可以使用方括号,这是Cont用户会喜欢。如果再次尝试加载模块,则什么也不会发生。

    例子:\使用pgf模块{矩阵,形状}

    此命令的作用是加载文件pgf模块模块代码.tex对于每个模块在列表中模块名称因此,要编写自己的模块,只需放置合适的名字可以找到它。,普通和Con用户可以使用您的库。

以下模块可用于pgf矿石:

  • 情节模块提供用于绘制函数的命令。命令在中进行了解释章节112.

  • 形状该模块提供用于绘制形状和节点的命令。这些命令是在第节中解释106.

  • 装饰品模块提供了向路径添加装饰的命令。这些命令在第节中进行了解释103.

  • 矩阵模块提供了\pgf矩阵命令。这个命令记录在第节中107.

100.2.3图书馆软件包

有一个用于加载库包的特殊命令。库和模块之间的区别如下:库只使用基本层定义其他对象,而模块则添加了全新的功能。例如装饰品库定义了额外的装饰,而装饰模块定义了整个代码用于处理装饰品。

  • \使用flibrary{库列表}

  • 使用此命令加载更多库。库列表应包含由逗号分隔的库名称。你也可以用方括号代替花括号。如果再次尝试加载库,则什么也不会发生。

    例子:\使用flibrary{arrows}

    此命令会导致文件pgflibrary公司图书馆代码.tex每个都要加载图书馆在中库列表这意味着为了编写您自己的库文件,将适当名称的文件放在某个位置可以找到它。,普通和Con用户可以使用您的库。

    您还应该考虑添加TikZ公司只包含您的前列腺素f库。

100.3图形的层次结构
100.3.1主要环境

大多数(但不是全部)命令前列腺素f包必须在{pgf图片}环境。唯一必须在外部发出的命令是必须执行的命令包括图像(如\pgfuse图像)并插入完整的阴影(如\pgfuse阴影). 然而,为了保持生活的娱乐性\pgf阴影路径必须发出命令里面{pgfpicture}环境。

  • \开始{pgf图片}

  • 环境内容

  • \完{pgf图片}

  • 此环境将插入包含由环境内容在当前位置。

    边界框的大小。盒子的大小按以下方式确定:前列腺素f解析环境内容,它跟踪图形的边界框。本质上,这个边界框是包含图形中提到的所有坐标的最小框。一些坐标可以通过以下方式“提及”前列腺素f自身;例如,当您向当前路径添加圆时构成圆圈的曲线也被“提及”,尽管事实上你不会“看到”它们您的代码。

    一旦环境内容已分析完全,a创建的框的大小为计算出的边界框的大小,并将此框插入到当前位置。

    (图像)


    你好 \开始{pgf图片}
    \pgfpath矩形{\pgf点原点}{\pgf点{2倍}{1个}}
    \pgfuse路径{(打、击等的)一下}
    \结束{第页图片}世界!

    有时,您可能需要对边界框的大小进行更精细的控制。例如,计算出的边界框可能太大,或者你故意希望盒子“太小”。在这些情况下,可以使用以下命令\pgfusepath{用作边界框},如第节所述104.6.

    边界框的基线。将包含图形的框插入正常文本时,基线通常在图形的底部。因此,以下两组代码行具有相同的效果,尽管第二个图形使用的坐标比第一个图形“高”:

    (图像)


    矩形 \开始{pgf图片}
    \pgf矩形{\pgf点原点}{\pgf点{2倍}{1个}}
    \pgfuse路径{(打、击等的)一下}
    \结束{pgf图片} \开始{pgf图片}
    \pgfpath矩形{\pgf点{0倍}{1个}}{\pgf点{2倍}{1个}}
    \pgfuse路径{(打、击等的)一下}
    \结束{pgf图片}.

    您可以使用\pgf设置基线命令,请参见下文。

    (图片)


    矩形 \开始{pgf图片}
    \pgf矩形{\pgf点原点}{\pgf点{2倍}{1个}}
    \pgfuse路径{(打、击等的)一下}
    \pgf设置基线{0磅}
    \结束{pgf图片} \开始{pgf图片}
    \pgf矩形{\pgf点{0倍}{1个}}{\pgf点{2倍}{1个}}
    \pgfuse路径{(打、击等的)一下}
    \pgf设置基线{0磅}
    \结束{pgf图片}.

    在图片中包含文本和图像。不能在图片中直接包含文本和图像。因此,您应该只需在{pgf图片}或使用如下命令\包括图形甚至是\pgf图像在所有这些情况下,您需要将文本放在\pgft文本命令。这将“逃脱”到正常状态模式,请参阅第节100.3.3了解详细信息。

    记住图片位置以备日后参考。图片排版后,其在页面上的位置为通常被遗忘前列腺素f也通过。这意味着以后不可能引用此图片中的节点。特别是,通常不可能自动在不同图片中的节点之间绘制线条。

    为了使前列腺素f“记住”一张图片-如果\ifpgf成员图片位置第页应设置为真的.它重要的是-如果是真的在结束时{pgf图片}-环境,所以您可以在环境中打开它。然而,您也可以只在全局范围内打开它,然后再打开所有图片的位置被记住。

    默认情况下,记忆功能没有打开有几个原因。首先,它不适用于所有后端驱动程序(目前,它只适用于pdf). 其次,它需要两次通过在文件上;在第一次传球时,所有位置都会出错。第三,对于每个记忆中的图片,都会在.aux(辅助)-文件,这可能会导致大量额外的行。

    尽管存在所有这些“问题”,但对于使用pdf处理的文档并且其中只有少量图片(少于100张左右),您可以全局打开此选项,它不会导致.

  • \pgf图片

  • 环境内容

  • \endpgf图片

  • 平原环境的版本。请注意,在此版本中组是围绕环境创建的。

  • \startpgf图片

  • 环境内容

  • \停止图片

  • 这是Con环境的t版本。

  • \ifpgf成员图片位置第页

  • 确定是否应记录页面上图片的位置。这个的价值-如果在{pgf图片}环境很重要,而不是一开始的价值。

    如果将图片的此选项设置为true,前列腺素f将尝试记录页面上的图片。(对于大多数驱动程序来说,此尝试都会失败,当它成功时,通常需要两次运行.)该位置无法直接到达。相反,如果从访问节点,则节点机制将使用此位置另一张图片。参见章节106.3.217.13了解更多详细信息。

  • \pgfsetbaselinepointnow(立即设置基线点){指向}

  • 此命令间接指定基线,即指定的指向调用命令时具有。

100.3.2图形范围环境

内部{pgfpicture}您可以使用以下环境对图片进行子结构处理:

  • \pgf示波器

  • 环境内容

  • \endpgf示波器

  • 平原的版本{pgfscope}环境。

  • \启动pgfscope

  • 环境内容

  • \止动镜

  • 这是Con环境的t版本。

以下范围还封装了图形状态的某些属性。然而,它们通常不由直接使用用户。

  • \开始{pgfinterruptpath(pgfin中断路径)}

  • 环境内容

  • \结束{pgfinterruptpath(pgfinterruptpath)}

  • 此环境可用于临时中断当前路径的构建。效果是路径目前在建工程将被“储存起来”,并在环境结束时进行恢复。在内部您可以构建一条新路径并对其进行处理。

    此环境的一个示例应用程序是箭头提示缓存。假设你问前列腺素f使用一种特殊的箭头尖类型。第一次需要渲染箭头尖时,前列腺素f“缓存”组成箭头尖的路径。为此,它中断当前的路径构造,然后协议箭头尖的路径。这个{pgfinterruptpath}环境用于确保这不会干扰箭头尖应连接到的路径。

    此命令可以安装{pgfscope}特别是,它不调用任何\pgfsys公司@命令,这在道路中间确实是危险的结构。

  • \pgfinterruptpath(pgfin中断路径)

  • 环境内容

  • \endpgfinterruptpath(结束pgfin中断路径)

  • 平原环境的版本。

  • \startpgfin中断路径

  • 环境内容

  • \停止中断路径

  • 反对的论点环境的t版本。

  • \pgfinterruptpicture(pgfin中断图片)

  • 环境内容

  • \结束pgfinterruptpicture

  • 平原环境的版本。

  • \startpgfin中断图片

  • 环境内容

  • \停止中断图片

  • 反对的论点环境的t版本。

  • \开始{pgfinterruptbounding框}

  • 环境内容

  • \结束{pgfinterruptbounding框}

  • 此环境会暂时中断边界框的计算并设置新的边界框。开始的时候保存旧的边界框并安装空边界框。环境之后的原始重新安装边界框,就好像什么都没发生一样。

  • \pgfinterruptbounding框

  • 环境内容

  • \结束pgfinterruptboundingbox

  • 平原环境的版本。

  • \startpgfin中断边界框

  • 环境内容

  • \停止中断接线盒

  • 反对的论点t版本的环境。

100.3.3插入文本和图像

通常,您可能希望添加正常文本中特定点的文本{pgf图片}。你不能“直接”这样做,也就是说,你不能简单地在{pgf图片}环境。相反,您必须将文本传递为一个论点\pgft文本命令。

你必须使用\pgft文本命令将图像或着色插入{pgf图片}.

100.4对象标识符

图形对象可以具有标识符,它允许您稍后引用该对象。例如,您可以将对象引用为超链接的目标(尽管驱动程序不一定实现此功能)或动画的目标;实际上,动画总是需要一个对象标识符来识别要动画化的对象。

将标识符附加到对象的过程分为两步:

  • 1.你打电话\pgfuseid类{身份证件}选择一个id,这是一个正常的字符串。

  • 2.接下来,调用以下几个命令之一\pgfid示波器\pgft文本,创建对象。该对象将具有id。

100.4.1用于创建图形对象的命令

以下系统级命令创建具有id的对象:

  • 1\pgfsys@开始@ID示波器,创建图形范围。

  • 2\pgfsys@viewboxmeet\pgfsys@viewboxslice,创建视图盒,

  • 3\pgfsys@填充,\pgfsys@冲程和所有其他路径使用命令,

  • 4\pgfsys@hbox\pgfsys@hboxsynced,创建文本框,以及

  • 5\pgfsys@animate。。。,用于创建动画。

这些系统层命令依次由以下基本层命令调用(也可以由调用它们依次):

  • \pgfid示波器,它创建了一个id范围(参见下文)。

  • \pgf电视盒示波器,它创建一个视图框。

  • \pgfuse路径,创建路径。

  • \第页\pgf节点\pgf多部件节点,创建文本框和节点,以及

  • \pgfanimatea致敬,用于创建动画。

  • \开始{pgfid示波器}

  • 环境内容

  • \结束{pgfid示波器}

  • 创建一个图形范围,该范围将具有上次与一起使用的id\pgfuseid类附加到,提供这样的id已经设置,并且尚未与其他对象一起使用。在后一种情况下,不会创建图形范围。因此,如果如果希望确保创建图形范围,则必须(另外)调用\pgf示波器id范围内或范围外。

平原和Con环境的t个版本是:

  • \pgfid示波器

  • 环境内容

  • \终端机

  • \startpgfid示波器

  • 环境内容

  • \止动窥镜

100.4.2设置和查询标识符

要将标识符附加到对象,请首先使用以下命令:

  • \前列腺素{名称}

  • 这个名称是对象将使用的字符串被引用(参见\pgfidrefnextuse文件). 下次在当前范围,名称将附加到它(实际上,它将自动获得附加到它的系统层标识符使用创建\pgfsys@new@标识,的名称绑定到该标识符,可以使用\pgfidrefnextuse文件). 这仅适用于下一个对象:如果创建了第二个对象不会将名称附加到它上。但这并不意味着您不能将相同的名称附加到不同的物体;你只需要打个电话\pgfuseid类在每个对象之前。

    除了名称(或者更准确地说,除了它引用的系统层标识符),当前标识符类型也很重要:实际上,一个图形对象不是由系统层标识符引用的,而是由标识符和类型的组合引用的。您可以使用以下命令用于修改用于创建对象的类型:

    • \pg保险丝类型{类型}

    • 将用于引用当前范围的图形对象的类型设置为类型或者,如果类型以点开头,附加类型到当前类型。

      将此命令用于复合图形对象:在图形对象的每个部分之前,将类型设置为适当的价值。现在,如果使用\pgfuseid类,您可以稍后访问组合使用名称与一起使用\pgfuseid类以及零件的类型。

      例如,此系统用于让您访问节点的不同部分:当您说\pgfuseid{mynode}然后创建一个节点,可以使用mynode(我的节点)使用空类型引用包含整个节点的图形范围,而且mynode(我的节点)以及类型背景访问节点的背景路径。

      具体来说,前列腺素f使用此命令设置以下类型:

      • •命令内部\pgf电视盒示波器,类型.view(视图)用于视图对象。

      • •命令内部\pgf多部件节点,类型.背景后面用于背景后面的图形范围。同样,.背景之前.在前景后面最后.在前景之前与节点的各个部分一起使用。

      • •也在节点内部,.背景.前景分别用作背景路径和前景路径的类型。

      • •最后,在节点内,对于每个文本部分,文本部分的名称被用作类型(因此.text格式用于主要部件)。

      此外,TikZ公司在以下情况下使用此命令:

      • •类型.路径与命名路径一起使用(使用名称键)。这是要变形时需要引用的图形对象路径。

      • •类型.path图片用于可选路径图片的范围。

      • •类型.路径填充与用于填充的路径一起使用。这不一样例如,当路径被填充和图案化时,作为正常路径。

      • •类型.path阴影与用于着色路径的路径一起使用。

    • \pgf按钮类型

    • 将当前类型推送到内部全局堆栈上。其想法是允许您临时更改当前类型无需打开范围。

    • \pgfpop类型

    • 从类型的内部全局堆栈还原最新的类型。

  • \pgf清除

  • 清除本地作用域的当前id(和类型)。

  • \产品编号{}{名称}

  • 此命令分配系统层标识符(由\pgfsys@新建@标识)至这个,即将用于下一个时间\pgfuseid类使用。您可以使用此命令进行“转发”参考”。

    典型的用例如下:类似于for animations使用此命令获取将用于未来对象的系统标识符。然后,可以将此标识符传递给系统层命令,如\pgfsys@动画@谁.

    请注意,“下一次”使用不需要在同一页上(或者甚至可能根本没有任何使用),在这种情况下引用不会引用任何对象。

  • \pgfidrefprevuse公司{}{名称}

  • 工作方式类似\pgfidrefnextuse文件,只引用了最近的以前的使用名称.至于\pgfidrefnextuse文件,最近的使用不必在同一页上。

  • \前列腺素{别名}{名称}

  • 在当前范围。调用此命令后,可以使用别名您通常使用的任何地方名称注意别名名称在以下情况下不保留\pgfuseid类用于名称(或别名).

  • \pgf别名{1}{2}

  • 喜欢\前列腺素,仅全局设置别名。

  • \pgfi参考{名称}{然后是代码}{else代码}

  • 如果名称已被引用,然后是代码执行,否则else代码.

100.5资源描述框架注释(RDFa)

使用特定的输出格式(尤其是高级副总裁)可以在输出中插入注释文件遵循资源描述框架(称为“无线数字滤波器“,请查阅有关无线数字滤波器无线数字滤波器a代表a介绍资源描述和本体及其一般用途)。为此,您可以调用调用之前请遵循以下命令\pgfid示波器。使用然后将命令添加到结果范围中(如果驱动程序支持此功能,则仅适用于高级副总裁目前)。例如,当你写


\pgfrdfresource(pgfrdf资源){/水果/苹果}
\pgfid示波器
...
\pgfendid示波器

在结果中高级副总裁你得到的文件


resource=“/水果/苹果”>
...

以下大多数命令只是为下一个id范围设置一个属性。然而,在某些情况下,重复调用这些命令有意义,并导致传递的值累积,如下例所示:


\pgfrdfresource(pgfrdf资源){/水果/苹果}
\pgfrdf属性{http://foo网址.com/props/juicy}
\pgfrdf属性{http://foo网址.com/props/green}
\pgfid示波器
...
\pgfendid示波器

现在您可以:


resource=“/frusts/apple”
属性=“http://foo网址.com/props/juicy http://foo网址.com/props/green“>
...

以下命令“累加”:\pgfrdf属性,\pgfrdfrel公司,\pgfrdfrev版本还有命令\pgfrd类型.

  • \pgfrd关于{文本}

  • 添加无线数字滤波器属性关于=“文本"到下一个id范围(请参见无线数字滤波器语义详细规范关于在资源描述的上下文中框架)。

以下命令的工作方式相同。

  • \pgfrdf内容{文本}

  • \pgfrdf数据类型{文本}

  • \pgfrdfhref文件{文本}

  • \pgfrd输入列表

  • \pgfrdf前缀{文本}

  • \pgfrdf属性{文本}

  • \pgfrdfrel公司{文本}

  • \pgfrdfresource(pgfrdf资源){文本}

  • \pgfrdfrev版本{文本}

  • \pgfrdfsrc公司{文本}

  • \pgfrd类型{文本}

  • \pgfrdfvocab公司{文本}

100.6错误消息和警告

有时,内部命令前列腺素f可能会失败。在这种情况下,有两个命令用于与作者:

  • \pgferror公司{消息}

  • 停止处理当前文档并打印出消息.英寸,这将使用完成\程序包错误,否则\错误消息直接使用。

  • \pgf警告{消息}

  • 打印消息输出,但不中断处理。,这将使用完成\程序包警告,否则使用写入流\(17\)。