几个月前我学过 TikZ,但因为很少用,几乎都忘了。我有一个简单易画的对象,如下图所示。
% incm.tex
\documentclass{minimal}
\usepackage[paperwidth=4cm,paperheight=3cm,margin=0bp]{geometry}
\usepackage{pstricks}
\psset{linewidth=0.01cm}
\pagecolor{cyan}
\begin{document}
\noindent%
\begin{pspicture}(\paperwidth,\paperheight)
\psframe(\paperwidth,\paperheight)
\pscircle*[linecolor=red](2,1.5){1.5}
\end{pspicture}
\end{document}
注意:灰色粗框不是要绘制的对象的一部分,它是 Adobe Acrobat 背景。:-)
您能在 TikZ 中以完全相同的尺寸翻译上述代码吗?
我问这个问题是因为我正在调查另一个问题。我想检查该问题是否是 PSTricks 特有的。
对于那些无法解析上述 PSTricks 代码的人,以下是描述。
- 我准备了宽4厘米、高3厘米的纸张。
- 画布占据纸张大小,没有空格。
- 一个黑色的细框占据了画布,其线宽为0.01厘米。
- 画布中央是一个红色圆盘,黑色细框的上下边线成为红色圆盘的切线。
警告
在 PSTricks 中,笔画的外侧部分用于测量尺寸。但在 TikZ 中并非如此,因为 TikZ 使用中间部分。
可选要求,您也可以尝试以下编译步骤吗?
latex %1
dvips -R -t unknown %1
ps2pdf -dAutoRotatePages#/None -dCompatibilityLevel#1.5 -dPDFSETTINGS#/prepress %1.ps
pdftops -eps %1.pdf
我尝试了 Leo 的解决方案,但得到的是两页,其中一页太满\hbox
。一页是空白的,一页包含上面显示的对象的裁剪版本。
答案1
\documentclass{minimal}
\usepackage[paperwidth=4cm,paperheight=3cm,margin=0bp]{geometry}
\usepackage{tikz}
\usetikzlibrary{calc}
\pagecolor{cyan}
\parindent=0pt
\tikzset{every picture/.style={line width=0.2cm}}
\begin{document}
\begin{tikzpicture}[remember picture]
\coordinate (delta) at (.5\pgflinewidth,.5\pgflinewidth);
\draw ($(current page.south west) + (delta)$)
rectangle ($(current page.north east) - (delta)$);
\fill[red] (current page.center) circle (.5\paperheight);
\end{tikzpicture}
\end{document}
我猜这个结果就是你想要的。我用了一条很粗的线来清晰地显示边框。但是代码需要计算,而且对我来说很丑陋。
答案2
假设您最终想要获得 pdf,我建议使用 tikz 的外部库(使用 pdflatex --shell-escape 进行编译,它会将图片放在单独的文件名“file-figure0.pdf 等”中)。
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize % activat
\tikzset{every picture/.style={line width=0.01cm}}
\begin{document}
\noindent
\begin{tikzpicture}
\filldraw[fill=cyan] (0,0) rectangle (4cm,3cm);
\fill[red] (2,1.5) circle (1.5);
\end{tikzpicture}
\end{document}
或者使用预览包(它会将所有内容放在一个文件中):
\documentclass{minimal}
\usepackage{tikz}
\usepackage[active,tightpage]{preview}
\begin{document}
\begin{preview}
\begin{tikzpicture}
\filldraw[fill=cyan] (0,0) rectangle (4cm,3cm);
\fill[red] (2,1.5) circle (1.5);
\end{tikzpicture}
\end{preview}
\begin{preview}
\begin{tikzpicture}
\filldraw[fill=cyan] (0,0) rectangle (2cm,3cm);
\fill[red] (1,1.5) circle (0.5);
\end{tikzpicture}
\end{preview}
\end{document}