简短问题
为什么
\documentclass[tikz]{standalone}
\usetikzlibrary{fadings}
\begin{document}
\tikzfading[name=fade right,left color=transparent!0,right color=transparent!100]
\tikz\fill[red,path fading=fade right](-1,-1)rectangle(1,1);
\end{document}
无法编译?
故事
为了生成仅包含图纸的 PDF 文件,有时需要这样写
\documentclass[tikz]{standalone}
这样standalone
就会自动裁剪关于 Ti 的页面钾Z 图片。
问题在于,一个最小的应该工作的例子,例如
\documentclass[tikz]{standalone}
\usetikzlibrary{fadings}
\begin{document}
\tikzfading[name=fade right,left color=transparent!0,right color=transparent!100]
\tikz\fill[red,path fading=fade right](-1,-1)rectangle(1,1);
\end{document}
无法编译,而其article
版本
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fadings}
\begin{document}
\tikzfading[name=fade right,left color=transparent!0,right color=transparent!100]
\tikz\fill[red,path fading=fade right](-1,-1)rectangle(1,1);
\end{document}
确实如此。后者给出了所需的结果。
可以通过将代码放到\tikzfading
其他地方来解决。例如在序言中:
\documentclass[tikz]{standalone}
\usetikzlibrary{fadings}
\tikzfading[name=fade right,left color=transparent!0,right color=transparent!100]
\begin{document}
\tikz\fill[red,path fading=fade right](-1,-1)rectangle(1,1);
\end{document}
这也给出了期望的结果。
但是,\tikzfading
如果想在本地定义衰落,则添加前导码会失败。要使其真正在本地,可以将其放在 内tikzpicture
。
\documentclass[tikz]{standalone}
\usetikzlibrary{fadings}
\begin{document}
\tikz{
\tikzfading[name=fade right,left color=transparent!0,right color=transparent!100]
\fill[red,path fading=fade right](-1,-1)rectangle(1,1);}
\end{document}
我们可以解决这个问题。只需添加一个\pgfresetboundingbox
。然后奇怪的事情来了:如果我设置一个全局的line width
,双行保持相同的宽度。
\documentclass[tikz]{standalone}
\usetikzlibrary{fadings}
\begin{document}
\tikz[line width=10]{
\tikzfading[name=fade right,left color=transparent!0,right color=transparent!100]
\pgfresetboundingbox
\fill[red,path fading=fade right](-1,-1)rectangle(1,1);
\draw[double](-1,-1)--(1,1);
\draw[ ](-1,1)--(1,-1);}
\end{document}
如果有人好奇,期望的结果应该是
\documentclass[tikz]{standalone}
\usetikzlibrary{fadings}
\tikzfading[name=fade right,left color=transparent!0,right color=transparent!100]
\begin{document}
\tikz[line width=10]{
\fill[red,path fading=fade right](-1,-1)rectangle(1,1);
\draw[double](-1,-1)--(1,1);
\draw[ ](-1,1)--(1,-1);}
\end{document}
到目前为止有两个问题,上面以粗体标记:
- 为什么
standalone
版本无法编译,而article
版本可以编译? - 为什么
\tikzfading
块线宽设置仅有的双线?
答案1
很奇怪吧?
\documentclass[multi={tikzpicture,tikzfading}]{standalone}
\usepackage{tikz}
\usetikzlibrary{fadings}
\begin{document}
\tikzfading[name=fade right,left color=transparent!0,right color=transparent!100]%
\tikz\fill[red,path fading=fade right](-1,-1)rectangle(1,1);
\endtikzfading
\end{document}
这是不太令人困惑且可与其他文档类别配合使用的内容。
\documentclass[multi={tikzpicture,wrapper}]{standalone}
%\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fadings}
\newenvironment{wrapper}{\parindent=0pt\ignorespaces}{\ignorespaces}
\begin{document}
\begin{wrapper}
\tikzfading[name=fade right,left color=transparent!0,right color=transparent!100]%
\tikz\fill[red,path fading=fade right](-1,-1)rectangle(1,1);
\end{wrapper}
\end{document}