我有几张包含虚线的图形。在 PDF 中,一切看起来都完全正常。但是,当我打印时,虚线完全消失了。我应该怎么做才能防止这种情况发生?
\begin{tikzpicture}
\node (a) at (0,1) [vertex] {};
\node (b) at (0.7,1.7) [vertex] {};
\node (c) at (1.7,1.7) [vertex] {};
\node (d) at (2.4,1) [vertex] {};
\node (e) at (1.7,0.3) [vertex] {};
\node (f) at (0.7,0.3) [vertex] {};
\draw (a) -- (b);
\draw (b) -- (c);
\draw (c) -- (d);
\draw (d) -- (e);
\draw (e) -- (f);
\draw [dashed] (f) -- (a);
\end{tikzpicture}
答案1
我的工作涉及通过电子邮件向人们发送大量 PDF 以供打印,因此“更新打印机驱动程序”解决方案对我没有真正的帮助。
但我发现,虽然点线或虚线线拒绝打印,点或虚线正弦波即使振幅为零,也能正常显示。因此,我将以下内容放在文档顶部:
\usetikzlibrary{snakes}
\tikzstyle{printersafe}=[snake=snake,segment amplitude=0 pt]
然后将 [printersafe] 作为样式添加到代码中的每一条虚线,例如:
\draw [densely dotted,printersafe] (0,-6) -- (10,-6);
即使由遇到原始问题的 TA 打印,这些线条也能正常显示。
答案2
所以,我最近遇到了这个问题,并找到了@Jonah 的解决方案。问题是,它实际上并不适用于 tikz 现在的行为方式,所以我做了以下更改,这应该会使此代码更加最新:
\usetikzlibrary{decorations.pathmorphing}
\tikzstyle{printersafe}=[decoration={snake,amplitude=0pt}]
有了它,您还可以在 tikz-cd 环境中使用 PrinterSafe。希望这对您有所帮助!
答案3
使用新的打印机解决了这个问题,所以显然这是一个驱动程序问题,正如保罗所说的那样。
答案4
另一种解决方案:绘制自己的虚线
看起来 Tikz 并不总是按照我们的预期运行。尤其是与诸如edge[transform canvas={xshift=4}]
圆角箭头之类的自定义函数结合使用时,这个帖子在这些情况下,打印机有时无法打印正常的虚线。这就是我们需要使用解决方法的原因。
另一个答案是打印机安全对我来说没用。另外,我想将 PDF 发送给其他人,这样我就无法更新他们的打印机。我需要一个始终有效的解决方案。
我找到了一种解决方法,使用带有普通线的循环来模仿虚线foreach
:
\documentclass[a4paper]{article}
\usepackage[english]{babel}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{figure}[h!]
\begin{tikzpicture}[every path/.style={>=latex}]
% Normal dashed line
\draw[->,thick,black,dashed] (0,1) -- (4,1) node[anchor=west] {Normal dashed line};
% Specify dashed line starting coordinate and length
\def\x{0}; \def\y{0}; \def\length{4} \def\N{19};
% Draw dashed line using normal lines
\pgfmathsetmacro{\step}{(0.5+1/(4*\N))*\length/\N}; \pgfmathparse{\N-1};
\foreach \i in {0,...,\pgfmathresult} {\draw[thick,black] (\x+2*\i*\step,\y) -- (\x+2*\i*\step+\step,\y);};
\draw[->,thick,black] (\x+\length,\y) -- (\x+\length+0.01,\y) node[anchor=west] {Custom dashed line};
\end{tikzpicture}
\end{figure}
\end{document}
这简单地模仿了普通的虚线,通过绘制多条线来连接。参数包括\x
起始 x 坐标、\y
线的 y 级别、\length
线的坐标长度和\N
条纹数量。
提供的示例仅从左到右绘制水平线,但可以轻松调整代码以绘制其他虚线(例如垂直线、从右到左等)
如果您的打印机做打印正常线条但虚线不显示(由于某种原因)。