我在这个论坛上找到了一种用 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 width
和0.5 * page height
数量,并将其添加到左下角坐标。
这/.store
是一个密钥处理程序,无法在答案中介绍它。您需要阅读pgfkeys
TikZ/PGF 手册的部分。基本上,\def
您不是将某些东西存储到基于密钥的数据库或dict
Python 术语中的类似结构中,而是将其保存在数据库中。