我想使用 TikZ 进行一些建设性的工作,即编写一个FabLab激光切割机。这款精巧的设备可以获取 2D 图纸(PDF 格式),并沿着所有细线在 PDF 中。哈林定义为厚度为 0.01 pt 的路径。
但是,如果我尝试使用 TikZ 和pdflatex
\begin{tikzpicture}
\draw[line width=0.01pt] (0,0) rectangle (1cm,1cm);
\end{tikzpicture}
然后在 Adobe Illustrator 中打开生成的 PDF,它显示线宽为 0.0179 pt – 太粗了。似乎我已经达到了 TeX 的极限。
编辑:0.0179 pt 具有双重效果。首先,我使用了 ,pt
而实际上应该使用0.01bp
,因为字母单位实际上是其他人所指的点。(见LaTeX 可以理解哪些可能的尺寸 / 大小 / 单位?)。其次,我分析的 PDF 并非直接来自pdflatex
,而是经过 MacOS 后期处理,导致线宽奇怪。谢谢 Paul!
仍然是关于 TeX 的最小线宽和最大分辨率的一般问题。
那么使用 TeX 和 TiKZ 我能得到的最小线宽是多少?
另外,这与放置物体的最大分辨率相同吗?
(对于技术图纸,有时必须精确到 µm 级别,1 µm = 0.002845 pt)
答案1
通过以下方式编译此文档pdflatex
:
\documentclass[tikz]{standalone}
\pdfcompresslevel=0
\pdfobjcompresslevel=0
\begin{document}
\begin{tikzpicture}
\draw[line width=0.01pt] (0,0) rectangle (1cm,1cm);
\end{tikzpicture}
\end{document}
w
然后在 PDF(一个简单的文本文件)中搜索指令。你会发现:
0.3985瓦 0.00995瓦
第一次出现的是 TikZ 的默认线宽 (=~ .4pt)。
第二次出现的是所绘制矩形使用的线宽。您说得对:不是,0.01
而是0.00995
。
如果您line width=0.01004pt
在文档中使用,您将0.01
在 PDF 文件中得到准确的结果 (0.01004/72.27*72=.0100024906600249063...)。
(看着LaTeX 可以理解哪些可能的尺寸 / 大小 / 单位?,尤其是pt
和bp
单位……)
编辑:
TikZ 生成的最小非零线宽为0.00003pt
(0.00002 w
PDF 中)。
笔记:空线宽度在 PDF 中具有特殊含义(与 PostScript 一样)。
摘自PDF 32000-1:2008:线宽 0 表示在设备分辨率下可以呈现的最细线:1 个设备像素宽。但是,某些设备无法再现 1 个像素的线,而在高分辨率设备上,它们几乎不可见。由于呈现此类零宽度线的结果与设备相关,因此不应使用它们。
答案2
我完全不确定你是如何确定线段的宽度的,但是,除非你需要线条的0.01pt
宽度精确,否则 TikZ 肯定允许你构造宽度极窄的线条
% arara: pdflatex
% arara: pdflatex
% arara: open
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \myn in {0,1,2,3,4,5,6,7,8,9}
{
\pgfmathsetmacro\mypt{0.01pt - 0.00\myn pt}
\typeout{===>myn=\myn:\mypt}
\draw[line width=\mypt pt]
(0,\myn/400) -- (0.125,\myn/400);
}
\end{tikzpicture}
\end{document}