以下 PSTricks 代码的 TikZ 等效项是什么?

以下 PSTricks 代码的 TikZ 等效项是什么?

几个月前我学过 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}

注意:灰色粗框不是要绘制的对象的一部分,它是 Adob​​e Acrobat 背景。:-)

您能在 TikZ 中以完全相同的尺寸翻译上述代码吗?

我问这个问题是因为我正在调查另一个问题。我想检查该问题是否是 PSTricks 特有的。


对于那些无法解析上述 PSTricks 代码的人,以下是描述。

  1. 我准备了宽4厘米、高3厘米的纸张。
  2. 画布占据纸张大小,没有空格。
  3. 一个黑色的细框占据了画布,其线宽为0.01厘米。
  4. 画布中央是一个红色圆盘,黑色细框的上下边线成为红色圆盘的切线。

警告

在 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}

相关内容