Wolfram mathematica 为出版物导出图形:如何在打印元素中实现一致的线厚度?

Wolfram mathematica 为出版物导出图形:如何在打印元素中实现一致的线厚度?,wolfram-mathematica,Wolfram Mathematica,使用mma创建出版物质量的图形似乎是一门可以追溯到几十年前的黑色艺术。尽管近年来情况有了很大改善,但在导出到文件时仍然很难获得一致的结果。最终结果看起来有点依赖于格式(根据我的经验,EPS工作得最好) 通常,帧和记号中的线条在EPS文件中过于模糊,当尝试执行类似于FrameStyle->AbsoluteThickness[2]的操作时,很容易得到太厚的线条。因此,我目前的方法涉及五个参数——三个线厚度(在FrameStyle、AxesStyle和PlotStyle中)、ImageSize和Bas

使用mma创建出版物质量的图形似乎是一门可以追溯到几十年前的黑色艺术。尽管近年来情况有了很大改善,但在导出到文件时仍然很难获得一致的结果。最终结果看起来有点依赖于格式(根据我的经验,EPS工作得最好)

通常,帧和记号中的线条在EPS文件中过于模糊,当尝试执行类似于
FrameStyle->AbsoluteThickness[2]
的操作时,很容易得到太厚的线条。因此,我目前的方法涉及五个参数——三个线厚度(在FrameStyle、AxesStyle和PlotStyle中)、ImageSize和BaseStyle中的FontSize——并随机调整它们,直到导出的打印看起来可以接受为止。这有点不令人满意,而且很费时

是否有更好的方法和/或标准处方可以遵循,以实现平衡、美观的情节

编辑:这里有一个例子。在屏幕上看起来不错(请参见屏幕截图),但将其导出到EPS中,您可能会看到两件事:(a)EPS字体嵌入存在缺陷:对我来说,除非删除
fontwweight->Normal
指令,否则图形中的epsilon无法正确嵌入。(b) 帧/记号线为浅灰色,1像素厚。如果我想缩小此图(例如,将其作为插图放置),则会破坏质量。然而,使用
AbsoluteThickness[2]
看起来很糟糕——因此我必须增加
ImageSize
。但是字体太小和/或绘图中的线条看起来太细等等

With[{exSubscript = "\[UpTee]", epsFontSize = 24, 
   xcoords = {0.63, 2.2}}, testInset = Style[Inset[Cell[TextData[Cell[
      BoxData[FormBox[SubscriptBox["\[Epsilon]", exSubscript], 
           TraditionalForm]]]]], xcoords, {Left, Baseline}], 
     FontWeight -> Normal, FontSize -> epsFontSize];
  ];
Show[Plot[10 x^2, {x, 0, 1}, PlotStyle -> Thick, Frame -> True, 
  PlotRange -> {-2, 8}, Epilog -> {testInset}], Axes -> {True, True}, 
 AxesOrigin -> {0, 0}, AxesStyle -> Dashed, 
 FrameLabel -> {"\[Lambda] [\[Mu]m]", "Re{\[Epsilon]}"}, 
 BaseStyle -> {FontSize -> 22, FontWeight -> Plain, 
   FontFamily -> Helvetica}, ImageSize -> 500]
Export["test.eps", %]


编辑:接受Szabolcs的回答,但Wizard先生指出了
FontFamily->Helvetica
vs
FontFamily->“Helvetica”
的行为(这似乎是一个bug),这应该得到表扬。如果没有引号,由于字体错误,PDF导出是不可能的。

我会仔细查看,这是我用于出版物质量图形的。

我替换了
fontf家族->“Helvetica”
并导出为PDF。在Foxit Reader中打开该PDF,我看到:


除了不同的缩放(不确定原因)之外,它看起来与您的渲染非常相似。

屏幕与打印视图

很难在屏幕上比较线条的厚度,尤其是当显示的厚度接近1像素时。我发现最好以最终出版物尺寸打印数字,并以此方式检查其质量

使用绝对测量值

我在这方面遇到的大多数问题都源于Mathematica同时使用绝对和相对(相对于绘图大小)测量。对于将在打印中显示的图形,最容易使用不随绘图缩放的绝对大小,尤其是字体大小和线条粗细。通过这种方式,您可以很好地了解打印结果的外观(并且与图形大小无关)。你给Mathematica的数字是打印点

导出

最后,我发现导出到EPS不如导出到PDF可靠(例如,字体可能没有嵌入,如您所述),并且Mathematica在导出到EPS时无法保留所有功能(例如,不透明度!)。对于二维绘图,PDF通常是一个不错的选择。但是,在导出PDF并在导出中指定ImageSize时存在错误。我使用的变通方法是

cm = 72/2.54 (* centimetres *)
Export["figure.pdf", Show[figure, ImageSize -> 7 cm]] (* 7 cm wide figure *)
您可以将结果包含在纸张中而不进行任何缩放,并且在所有图形中都具有一致的字体大小和线条厚度

总之,这或多或少对我起了作用:

  • 对需要在印刷图中保持一致的内容使用绝对测量值
  • 以预期的最终大小导出为PDF,在包含结果之前不要重新缩放结果(例如,不要在LaTeX中指定宽度)

  • @利奥:我同意科利尔的观点。我用LS来表示我的出版物数字,它们看起来总是很棒。您可以在这里查看使用levelscheme的情况,以了解绘图的外观。有趣(但令人沮丧)的是,如果我导出为PDF,字体会发生变化,但如果我将笔记本打印到PDF打印机,它看起来是正确的。如果我使用
    FontFamily->“Helvetica”
    (引号很重要)当您在Windows Mathematica下将笔记本打印到PDF打印机时,.@Mr.Wizard会在打印机的spool文件中生成笔记本的EMF表示形式。然后,打印机驱动程序根据该EMF生成PostScript。因此,打印到PDF打印机和直接导出到PDF之间存在主要区别。您还应该知道,EMF中对象的定位不太精确,因为EMF中的PDF和轮廓字体经常被扭曲。@Mr.Wizard您可以使用免费实用程序从spool文件中提取EMF文件,但此程序只能在Windows XP SP2下运行。从WindowsXPSP3开始,它不起作用。当我导出到PDF时,我的行看起来更细;另外,字体看起来太薄了——这也是我开始使用EPS或TIFF导出的部分原因。@Leo你用什么来查看PDF?你试过Foxit阅读器吗?你能上传一份导出的PDF供我查看和屏蔽cap吗?@Mr.Wizard:如果你坚持:)在Chrome或Acrobat中查看,它比我们在本文中发布的屏蔽cap要难看得多thread@Leo,在Foxit Reader中查看该文件时,它与我在
    FontFamily->“Helvetica”
    中包含引号之前看到的非常相似。请您进行更改,然后导出并上载新的PDF文件,好吗?然后我会在我的电脑上发布一个屏幕截图。@Mr.Wizard:好吧,我会。。。引用这些话确实起了作用。(请注意,只有PDF导出似乎受到引号和无引号的强烈影响)。PDF已更新,现在它看起来或多或少像是PDF a的最新版本中的屏幕快照