Tengo varios gráficos que incluyen líneas discontinuas. En el PDF, todo se ve exactamente como debería. Sin embargo, cuando imprimo, la línea discontinua desaparece por completo. ¿Qué debo hacer para evitar esto?
\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}
Respuesta1
Mi trabajo implica enviar por correo electrónico muchos archivos PDF a personas para que los impriman, por lo que la solución "actualizar el controlador de su impresora" realmente no me ayuda.
Pero lo que he encontrado es que mientras están punteados o rayadoslíneasnegarse a imprimir, punteado o rayadoondas sinusoidalesaparecen bien, incluso si la amplitud es cero. Entonces puse lo siguiente en la parte superior de mi documento:
\usetikzlibrary{snakes}
\tikzstyle{printersafe}=[snake=snake,segment amplitude=0 pt]
Luego agregue [printersafe] como estilo a cada línea de puntos del código, por ejemplo:
\draw [densely dotted,printersafe] (0,-6) -- (10,-6);
Estas líneas se ven bien, incluso cuando las imprimen asistentes técnicos que experimentan el problema original.
Respuesta2
Recientemente me encontré con este problema y encontré la solución de @Jonah. La cuestión es que realmente no funciona con el comportamiento de tikz ahora, así que hice los siguientes cambios que deberían hacer que este código esté más actualizado:
\usetikzlibrary{decorations.pathmorphing}
\tikzstyle{printersafe}=[decoration={snake,amplitude=0pt}]
Con esto también puedes usar Printersafe dentro de entornos tikz-cd. ¡Espero que esto ayude!
Respuesta3
El uso de una nueva impresora solucionó el problema, por lo que aparentemente ERA un problema de controlador, como sugirió Paul.
Respuesta4
Otra solución: dibujar tus propias líneas discontinuas
Parece que Tikz no siempre hace lo que esperamos que haga. Especialmente en combinación con cosas como edge[transform canvas={xshift=4}]
funciones personalizadas como flechas redondeadas como se pueden encontrar enesta publicación. En esos casos, la impresora a veces simplemente no imprime líneas discontinuas normales. Es por eso que necesitamos usar una solución alternativa.
La otra respuesta conseguro para impresorano funcionó para mí. Además, quiero enviar el pdf a otras personas para no poder actualizar sus impresoras. Necesitaba una solución que siempre funcionara.
Encontré una solución que imita una línea discontinua usando un foreach
bucle con líneas normales:
\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}
Esto simplemente imita una línea discontinua normal dibujando varias líneas una tras otra. Los parámetros son \x
para la coordenada x inicial, \y
para el nivel y de la línea, \length
para la longitud en coordenadas de la línea y \N
para la cantidad de franjas.
El ejemplo proporcionado solo dibuja líneas horizontales de izquierda a derecha, pero el código se puede ajustar fácilmente para dibujar otras líneas discontinuas (como líneas verticales, de derecha a izquierda, etc.)
Esta solución aún le permitirá imprimir líneas discontinuas si su impresorahaceImprima las líneas normales pero las líneas discontinuas no aparecen (por alguna razón).