绘制虚线时,TikZ 似乎会插入一条零宽度线,该线在某些(例如 Acrobat、Sumatra)PDF 查看器上可见,但并非所有(例如 Evince、Chromium 浏览器)PDF 查看器上可见。
从PDF 1.7 规范,第 8.4.3.2 节:
线宽 0 表示在设备分辨率下可以呈现的最细线:1 个设备像素宽。但是,某些设备无法再现 1 个像素的线,而在高分辨率设备上,它们几乎不可见。由于呈现此类零宽度线的结果与设备相关,因此不应使用它们。
一个几乎最小的例子:
% Created by tikzDevice version 0.7.3 on 2014-11-02 08:56:28
% !TEX encoding = UTF-8 Unicode
\documentclass{article}
\usepackage{tikz}
\usepackage[active,tightpage,psfixbb]{preview}
\PreviewEnvironment{pgfpicture}
\setlength\PreviewBorder{0pt}
\begin{document}
\begin{tikzpicture}[x=1pt,y=1pt]
\definecolor[named]{drawColor}{rgb}{0.00,0.00,0.00}
\definecolor[named]{fillColor}{rgb}{0.00,0.00,0.00}
\path[draw=drawColor,line width= 0.6pt,dash pattern=on 1pt off 3pt,
line join=round,fill=fillColor]
( 21.13, 19.75) -- (132.49,132.50);
\end{tikzpicture}
\end{document}
以下是在 Acrobat XI pro 中看到的输出(打印屏幕,导出为 PNG 看起来更糟糕):
这是一个已知问题吗?该命令是否缺少某些选项\path
?
参考:原始问题用于tikzDevice
R 包。
或许相关:TikZ填充零宽度边框
答案1
绘画和填充导致问题,只有绘图工作按预期进行:
\documentclass{article}
\usepackage{tikz}
\usepackage[active,tightpage,psfixbb]{preview}
\PreviewEnvironment{pgfpicture}
\setlength\PreviewBorder{0pt}
\begin{document}
\begin{tikzpicture}[x=1pt,y=1pt]
\definecolor[named]{drawColor}{gray}{0}
\definecolor[named]{fillColor}{rgb}{0,0,0}
\path[
draw=drawColor,
line width= 0.6pt,
dash pattern=on 1pt off 3pt,
% line join=round,
line cap=round,
% fill=fillColor,
]
( 21.13, 19.75) -- (132.49,132.50);
\end{tikzpicture}
\end{document}
评论:
- 用直线,
line join
没有太多意义,因此我将其改为line cap
。 0
比 短三个字节0.00
。
给出填充颜色后,还会对路径应用填充操作,如三角形的非退化情况所示。该示例还显示了可以line join
使用并达到预期效果:
\documentclass{article}
\usepackage{tikz}
\usepackage[active,tightpage,psfixbb]{preview}
\PreviewEnvironment{pgfpicture}
\setlength\PreviewBorder{0pt}
\begin{document}
\begin{tikzpicture}[x=1pt,y=1pt]
\definecolor[named]{drawColor}{gray}{0}
\definecolor[named]{fillColor}{rgb}{0,0,0}
\path[
draw=drawColor,
line width= 0.6pt,
dash pattern=on 1pt off 3pt,
line join=round,
line cap=round,
fill=red,
]
(20, 20) -- (60, 60) -- (60, 20) -- cycle;
\end{tikzpicture}
\end{document}