为什么我的 \special{ps: ...} 尺寸不正确?

为什么我的 \special{ps: ...} 尺寸不正确?

尝试不依赖于pstricks看看我是否可以编写嵌入在 LaTeX 文档中的自己的 postscript 代码。

\documentclass{article}

\begin{document}

Hello world! 
  \special{ps:
     /inch { 72 mul } def
     gsave
     0 0 1 setrgbcolor
     1 inch 0      rlineto
     0      1 inch rlineto
    -1 inch 0      rlineto
     closepath
     4 setlinewidth
    stroke
    grestore
    }%%
Followed by something else.

\rule{1in}{4pt}

\end{document}

盒子放在了我期望的位置,但是尺寸全都错误:

在此处输入图片描述

但我可以轻松地写入一个eps文件

%!PS-Adoboe-3.0 EPSF-3.0
%%BoundingBox: 0 0  72 72
/inch { 72  mul } def
newpath
0 0 moveto
1 inch 0      rlineto
 0      1 inch rlineto
-1 inch 0      rlineto
closepath
stroke
showpage

并导入它以获得正确大小的正方形

\documentclass{article}
\usepackage{graphicx}

\begin{document}

Hello world! 
Followed by something else.

\includegraphics{square}

\rule{1in}{4pt}

\end{document}

导致

在此处输入图片描述

那么我需要做什么才能获得正确的尺寸\special{ps:....}

我尝试查看pstricks.sty、、pstricks.tex和,pstricks.con但没有找到任何有用的东西来解释为什么pstricks能够把事情做好,但事实并非如此。

顺便说一下,上面两个例子我都是通过

latex --> dvips --> ps2pdf

答案1

如果您使用"而不是ps:dvips在插入代码之前重置图形状态:

\documentclass{article}

\begin{document}

Hello world! 
  \special{"
     /inch { 72 mul } def
     gsave
     newpath
     0 0 moveto
     0 0 1 setrgbcolor
     1 inch 0      rlineto
     0      1 inch rlineto
    -1 inch 0      rlineto
     closepath
     4 setlinewidth
    stroke
    grestore
    }%%
Followed by something else.

\rule{1in}{4pt}

\end{document}

ps:可以得到当前的坐标矩阵(如果你真的需要的话,你可以从 PostScript 中查询)

相关内容