![标题中的图例](https://linux22.com/image/232147/%E6%A0%87%E9%A2%98%E4%B8%AD%E7%9A%84%E5%9B%BE%E4%BE%8B.png)
有时处理 LaTeX 文档中的图形图例可能有点困难。根据上下文,由于空间不足,您可能必须将图例放在现有曲线上。您可能还必须将其放在侧面,这会使主要内容难以居中。有些人选择将图例放在标题中,从而消除上述困难。以下是使用 pstricks 的解决方案:
\documentclass[dvips,11pt,fleqn]{article}
\usepackage{lmodern}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{pstricks-add}
\usepackage[top=2cm,bottom=2cm,left=2cm,right=2cm,a4paper]{geometry}
\newbox{\LegendeA}
\savebox{\LegendeA}{
(\begin{pspicture}(0,0)(0.6,0)
\psline[linewidth=0.04,linecolor=red](0,0.1)(0.6,0.1)
\end{pspicture})}
\newbox{\LegendeB}
\savebox{\LegendeB}{
(\begin{pspicture}(0,0)(0.6,0)
\psline[linestyle=dashed,dash=1pt 2pt,linewidth=0.04,linecolor=blue](0,0.1)(0.6,0.1)
\end{pspicture})}
\begin{document}
\begin{figure}[h]
\centering
\begin{pspicture*}[showgrid=true](0,-2.5)(7,2.5)
\psframe[fillstyle=solid,fillcolor=gray!10](-1,-3)(8,3)
\psplot[linewidth=1.5pt,algebraic=true,linecolor=red]
{0}{7}{sqrt(x)*cos(x)*sin(x)}
\psplot[linewidth=1.5pt,algebraic=true,linecolor=blue,linestyle=dashed,dash=1pt 2pt]
{0}{7}{sqrt(x)*cos(x)}
\end{pspicture*}
\caption{Vibrations of the structure; wheel~\usebox{\LegendeA} and
piston~\usebox{\LegendeB}}
\end{figure}
\end{document}
你的策略是什么?
答案1
有一次我遇到了类似你描述的情况。我最终的做法是将图例放置得稍微突出一点,然后摆弄结果图形的边界框,使其与图例不突出时保持一致。
我编写了一个“脚本”,窃取一个 .eps 文件的 BBox 并将其放入另一个 .eps 文件中:
#!/bin/bash
#take the bounding box of the first argument, and plop it into the second.
BB=`grep %%BoundingBox $1`
sed "s/%%BoundingBox.*/$BB/" $2
此脚本只是将生成的 .eps 文件输出到 stdout。如果您想将其定向到第三个文件,您可以像这样使用它:
% copyBB goodBB.eps niceLegend.eps > combined.eps
(这是一个 bash 脚本,对不起 Windows 用户……但是,它并不是那么复杂……所以您可以为您的 shell 重新实现它。)Caveat Empor!我没有在很多情况下测试它。我的用例如下:创建同一个图形的两个版本,一个带有正确的边界框,另一个带有突出的图例(在我的情况下是右上角)。然后,我使用脚本从“干净”的图形中窃取 BB 并将其放置在图例上。这使我比其他方式更容易对齐图形(在我的情况下,我还想表示相同的图例可以用于四个图形):
(左下图使用copyBB制作,其余3张未修改)