Tenho vários gráficos que incluem linhas tracejadas. No PDF, tudo parece exatamente como deveria. Quando imprimo, porém, a linha tracejada desaparece completamente. O que devo fazer para evitar isso?
\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}
Responder1
Meu trabalho envolve enviar muitos PDFs por e-mail para as pessoas imprimirem, então a solução "atualizar o driver da impressora" realmente não me ajuda.
Mas o que eu descobri é que, embora pontilhado ou tracejadolinhasrecusar-se a imprimir, pontilhado ou tracejadoondas senoidaisaparecem bem, mesmo que a amplitude seja zero. Então coloquei o seguinte no topo do meu documento:
\usetikzlibrary{snakes}
\tikzstyle{printersafe}=[snake=snake,segment amplitude=0 pt]
Em seguida, adicione [printersafe] como estilo a cada linha pontilhada do código, por exemplo:
\draw [densely dotted,printersafe] (0,-6) -- (10,-6);
Essas linhas aparecem bem, mesmo quando impressas por TAs que vivenciam o problema original.
Responder2
Então, recentemente me deparei com esse problema e encontrei a solução de @Jonah. O problema é que realmente não funciona com o comportamento do tikz agora, então fiz as seguintes alterações que devem tornar este código mais atualizado:
\usetikzlibrary{decorations.pathmorphing}
\tikzstyle{printersafe}=[decoration={snake,amplitude=0pt}]
Com isso você também pode usar o PrinterSafe em ambientes tikz-cd. Espero que isto ajude!
Responder3
Usar uma nova impressora resolveu o problema, então aparentemente foi um problema de driver, como Paul sugeriu.
Responder4
Outra solução: desenhar suas próprias linhas tracejadas
Parece que o Tikz nem sempre faz o que esperamos que faça. Especialmente em combinação com edge[transform canvas={xshift=4}]
funções personalizadas como setas arredondadas, como podem ser encontradas emesta postagem. Nesses casos, às vezes a impressora simplesmente não imprime linhas tracejadas normais. É por isso que precisamos usar uma solução alternativa.
A outra resposta comseguro para impressoranão funcionou para mim. Além disso, quero enviar o PDF para outras pessoas para não poder atualizar suas impressoras. Eu precisava de uma solução que sempre funcionasse.
Encontrei uma solução alternativa que imita uma linha tracejada usando um foreach
loop com linhas normais:
\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}
Isso simplesmente imita uma linha tracejada normal, desenhando várias linhas uma após a outra. Os parâmetros são \x
para a coordenada x inicial, \y
para o nível y da linha, \length
para o comprimento em coordenadas da linha e \N
para a quantidade de listras.
O exemplo fornecido desenha apenas linhas horizontais da esquerda para a direita, mas o código pode ser facilmente ajustado para desenhar outras linhas tracejadas (como linhas verticais, da direita para a esquerda, etc.)
Esta solução ainda permitirá que você imprima linhas tracejadas se a sua impressorafazimprima as linhas normais, mas as linhas tracejadas não aparecem (por algum motivo).