title: Exporting graphics for publications: how to achieve consistent line thicknesses in plot elements?
body: <p>It seems that creating publication-quality graphics with mma is a black art that dates back decades.  Although things have much improved in recent years, it is still hard to get consistent results when exporting to files.  The way the final result looks seems to be somewhat format-dependent (with EPS working best in my experience).</p>
  
  <p>Quite often, the lines in frames and tick marks end up being too faint in the EPS file, and when trying to do something like <code>FrameStyle-&gt;AbsoluteThickness[2]</code>, it is easy to get lines that are too thick.  So, my current approach involves taking five parameters -- three line thicknesses (in FrameStyle, AxesStyle, and PlotStyle), ImageSize, and FontSize in BaseStyle -- and randomly tweaking them until the exported plot looks acceptable.  This is somewhat unsatisfactory and time consuming.  </p>
  
  <p>Is there a better way and/or a standard prescription to follow in order to achieve balanced, good-looking plots?</p>
  
  <p>Edit: here's one example.  Looks good on screen (see screenshot), but export it into EPS and you'll probably see two things: (a) There's a bug with EPS font embedding: for me, the epsilon inside the figure doesn't embed properly unless I remove the <code>FontWeight-&gt;Normal</code> directive.  (b) The frame/tick lines are light-gray and 1 pixel thick.  If I wanted to shrink this figure (e.g. to place it as an inset), it would trash the quality.  However, using <code>AbsoluteThickness[2]</code> looks bad -- so I have to increase <code>ImageSize</code>.  But then the fonts are too small and/or lines in the plot look too thin, etc, etc.</p>
  
  <pre><code>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 -&gt; Normal, FontSize -&gt; epsFontSize];
    ];
  Show[Plot[10 x^2, {x, 0, 1}, PlotStyle -&gt; Thick, Frame -&gt; True, 
    PlotRange -&gt; {-2, 8}, Epilog -&gt; {testInset}], Axes -&gt; {True, True}, 
   AxesOrigin -&gt; {0, 0}, AxesStyle -&gt; Dashed, 
   FrameLabel -&gt; {"\[Lambda] [\[Mu]m]", "Re{\[Epsilon]}"}, 
   BaseStyle -&gt; {FontSize -&gt; 22, FontWeight -&gt; Plain, 
     FontFamily -&gt; Helvetica}, ImageSize -&gt; 500]
  Export["test.eps", %]
  </code></pre>
  
  <p><img src="https://i.stack.imgur.com/kVZse.png" alt="Sample plot"></p>
  
  <p>Edit: Accepting Szabolcs' answer, but Mr.Wizard should be given credit for pointing out the <code>FontFamily -&gt; Helvetica</code> vs <code>FontFamily -&gt; "Helvetica"</code> behavior (which seems like a bug).  Without the quotes, PDF export is a non-starter due to screwed-up fonts.</p>