封面:Tikz 需要说明

封面:Tikz 需要说明

我在这个论坛上找到了一种用 tikz 包创建封面的好方法,我全面地了解了这些函数的作用,但我想了解每条指令。

\documentclass[a4paper]{article}
\usepackage[svgnames]{xcolor}
\usepackage{tikz}

\begin{document}

\tikzset{page cs/.cd, x/.store in=\px, y/.store in=\py}

\tikzdeclarecoordinatesystem{page}{
    \tikzset{page cs/.cd, #1}
    \pgfpointadd{\pgfpointanchor{current page}{south west}}
    {
        \pgfpoint{
            \px*\paperwidth
        }
        {
            \py*\paperheight
        }
    }
}
\thispagestyle{empty}


\begin{tikzpicture}[remember picture, overlay, font=\sffamily \bfseries \huge, inner sep=0pt, outer sep=0pt, white]
    \node at (current page.center) {\includegraphics[height=\paperheight]{image.jpg}};
    \fill [cyan, opacity=0.5] (page cs:x=0,y=0.075) rectangle (page cs:x=1,y = 0.30);
    \node [scale=2.2, anchor=west] at (page cs:x=0.075, y=0.235) {Games of Thrones};
    \node [anchor=west] at (page cs:x=0.075, y=0.18) {Lorem ipsum dolor sit amet, consectetur adipiscing elit.};
    \node [anchor=west] at (page cs:x=0.075, y=0.12) {By George R. R. Martin};
\end{tikzpicture}

\end{document}

我不明白的部分是 tikzset 定义和 tikzdeclarecoordinatesystem。我尝试在互联网上查找,但没有找到任何关于 tikzset 的很好的解释,.store、\px、\py 是什么?pgfpointadd 和 pgfpoint 是什么?

谨致问候,Zed13

附言:抱歉我的英语不好

答案1

这些是 PGF 语法,是 TikZ 背后的基本层。粗略地说,TikZ 是实际图形格式 PGF 的前端、用户方便的解析器。还有一个系统层,但除非您有认真的意图和大量的空闲时间,否则您不需要它。

因此,当你写一个calc库符号时

\node at ($(2,1) + (0,2)$) {A};

假设是向量加法(x1+x2,y1+y2)。这几乎就是它\pgfpointadd的作用。

\pgfpoint实际上是坐标语法的低级等价物(1cm,2pt),因此您可以编写\pgfpoint{1cm}{2pt}它需要两个参数并期望有两个 PGF 寄存器需要修改\pgf@x,\pgf@y(跳过一百万个细节)。但 TikZ 语法具有有限的鸭子类型的优点。在 TikZ 中,您可以给出节点名称、节点的锚点、实际尺寸或只是数字等,然后对其进行处理和正则化以用于\pgfpoint等等。例如,(a.north)TikZ 可以理解,但您需要将相应的宏名称更改为 \pgfpointanchor{a}{north}。因此,TikZ 拥有快捷方式确实很有用。


如果您需要频繁引用某个对象或相对于固定对象进行计算,则坐标系声明很有用。

这里获取坐标,然后将其添加到当前页面的左下角,这样它就像您有一张原点移动到左下角的 TikZ 图片一样。因此,当您写入时,(0.3,0.5)它会找到左下角,然后计算长度0.3 * page width0.5 * page height数量,并将其添加到左下角坐标。


/.store是一个密钥处理程序,无法在答案中介绍它。您需要阅读pgfkeysTikZ/PGF 手册的部分。基本上,\def您不是将某些东西存储到基于密钥的数据库或dictPython 术语中的类似结构中,而是将其保存在数据库中。

相关内容