PStricks和TikZ在学习难度和API设计质量方面如何比较?

27

我的团队使用文学编程来编写大部分的源代码,这意味着我们使用LaTeX来编写内部文档。我们一直在使用PStricks绘制系统的复杂技术图表,但最近被建议改用TikZ。我已经收集了以下信息:

  • TikZ/PGF是新的且得到维护,而PStricks在很长一段时间内没有得到维护,但在过去几年中得到了一些维护。
  • TikZ可以与许多后端配合工作,包括(对于那些关心的人)pdftex。PStricks仅能与dvips配合工作。
  • PStricks比TikZ更强大和表达能力更强。在紧急情况下,您甚至可以使用PostScript的全部功能。
  • PStricks有一个显著的附加包生态系统,TikZ太新而没有太多这样的东西。
  • TikZ声称已经“考虑到了PStricks的缺点”。作者并没有指定是哪些缺点。

我对两个问题的答案很感兴趣。如果您愿意,可以针对每个问题发布一个答案:

  • 这两个工具的学习曲线如何?(我认为PStricks有一个陡峭的学习曲线,对于TikZ我不了解。)

  • 将它们作为编程API来考虑,这两个软件包中是否有一个显著比另一个更好设计?如果是这样,哪个设计更好,为什么?(它有哪些特性使您认为它更好?)

要对为什么一个API比另一个更好做出有力论证,您可能需要举例说明。

5个回答

18

简短回答:我更喜欢TikZ而不是pstricks,因为我认为TikZ

  • 设计更好
  • 更容易学习
  • 与pdftex兼容
  • 提供更多的能力和抽象性(您不需要手动指定太多坐标)
  • 让你用相同的精力创造出更美丽的图形
  • 使用TeX编程更容易扩展(从一开始就考虑了可扩展性)

对于pstricks用户,我建议未来所有新文档都使用TikZ编写。对于METAPOST用户,如果他们的图形没有使用线性方程求解,我建议使用TikZ。如果METAPOST图形需要线性方程求解,则建议尝试Asymptote

pstricks确实给了您PostScript的强大功能,但它不是PostScript使您的图形创作强大,而是抽象化:自动定位、自动交点计算和显示样式模板的使用。即使您不是程序员,或者您现在不想编程,TikZ也可以给您强大的抽象能力。

我没有编写过TikZ扩展的经验,但从快速浏览TikZ源代码的角度来看,与我遇到的其他TeX宏包相比,它似乎易于理解和扩展。


1
什么使得TikZ成为更好的设计工具? - Norman Ramsey
1
我对TikZ或PSTricks的代码并不熟悉,无法回答您的问题。请查看代码。我认为您会在那里找到更合适、有用且通用的抽象(您可以在扩展中使用),而不是在PSTricks中。 - pts
6
我已经太久没有使用PSTricks了,无法回答这个问题,但我想补充一下,TikZ有一个非常不错的500多页手册,里面包含了很多例子。一旦你熟悉了TikZ的基础知识,你可以在手册中找10分钟就能快速使用几乎所有的功能。我写过一些TikZ扩展,比如新的节点形状,如果你理解TeX计算原语并查看TikZ源代码,这并不太难。 - Bruno De Fraine

11

作为一名热爱TikZ的用户,我一直在与我所在物理系的教授辩论,他喜欢pstricks,我认为我们已经得出了结论,就像我在其他帖子中所说的那样。除了偶尔需要深入了解PS本身的情况外,TikZ和pstricks在大多数方面都非常相似。 TiKZ的可扩展性和兼容性非常具有吸引力,因此我们达成了以下共识:

  • 我们认为新用户应该学习TikZ。
  • 老手使用pstricks可能不会从转换中获得足够的收益,可能不值得这么做。

希望这有所帮助!


2
我只用过PSTricks,但我已经让它做了我想要的一切。Tikz有一个非常漂亮的手册,显然非常强大。有两件事是我希望从绘图系统中得到的,而我不能用PSTricks做到:羽化边缘(Tikz可以做到),我不记得另一件事了。OP问的是“学习难度”的问题:PSTricks肯定需要一些试错,我认为需要一些编码纪律,这方面我不是很擅长。但\rput对于我使用PSTricks非常重要...我无法想象没有它会怎样。
另一方面,“装饰”看起来非常不错。我喜欢手册第210页上(总共560页)的“从垃圾箱中拯救”的例子。我不喜欢Tikz似乎使用完全不同的符号——我在其中看不出LaTeX,这使它看起来很陌生和奇怪。手册看起来很漂亮。透明度和“淡出”效果似乎非常强大......在PSTricks中能做到吗?......但我怀疑我会真正使用它们。Tikz似乎更偏向于“绘图”。作为一个规则,我不画图,我画图表。
你可以对坐标进行算术运算吗?如果我甚至不确定我会从中得到什么,那么要从头开始学习Tikz是一个艰难的选择。

2
我正在开发一个asp.net应用程序,该程序需要在服务器上安装Miktex发行版。
该应用程序将生成数学问题,并生成pdf文件供访问者下载。这些数学问题包含一些jpeg图像和数学图表。
我曾经困惑过使用PSTricks还是Tikz。经过对应用程序的基准测试后,我必须使用Tikz,因为它只需要使用pdftex进行一次编译步骤。所以在这种情况下,Tikz获胜了。 :D
注意:希望我的答案符合您的问题:D

1

我认为pstricks更优秀。TikZ甚至没有像rput/uput/Aput/Bput pstricks命令那样好的坐标转换方式。你可以使用xshift和yshift,但这些需要单位(!),因此缩放图像将需要手动调整每个xshift/yshift的调用。


10
不正确。您可以通过添加缩放选项来在TikZ中缩放整个图像,例如\begin{tikzpicture}[scale=2]将使图像变为其原始大小的两倍。 - Curious2learn
2
John 是真的,必须明确声明所有单位才能使用 [scale=2] 进行适当缩放。例如,可以查看我在此问题的答案:http://tex.stackexchange.com/questions/196378/drawing-2-d-coordinates-with-2-simple-line-in-it/196387#196387,并在其后添加 scale=0.5 查看输出结果。 - AboAmmar
此外,您可以只使用 shift={(x,y)} 进行移动,而无需指定单位。 - Turion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接