Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

It may be a bit difficult sometimes to deal with the legend of a figure in a LaTeX document. Depending on the context, you may have to place the legend over the existing curves because of a lack of space. You may also have to place it on the side making the centering of the main content difficult. Some people choose to put the legend in the caption thus discarding the above mentioned difficulties. Below is a solution with 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}

example

What are your strategies?

share|improve this question
3  
Open-ended questions such as this with no definitive answer should be a community wiki … because otherwise they invite an ill-received practice called “rep-whoring”. I’ve converted the question for you. –  Konrad Rudolph Sep 8 '10 at 18:00
    
what about the tikz users on that matter? –  pluton Oct 22 '10 at 14:04
    
As this question has not received an upvoted answer in two months (even after having been converted to community wiki), I suggest to close it. –  lockstep Nov 8 '10 at 21:57
1  
Is not receiving any answers really a reason to close? I'm pretty sure it isn't... –  Seamus Nov 8 '10 at 22:33
2  
There, you prodded me into writing an answer ;-) –  Yossi Farjoun Nov 8 '10 at 22:56

1 Answer 1

up vote 5 down vote accepted

At one point I had a situation like you describe. What I ended up doing is putting the legend so that it juts out a little and fiddled with the boundingbox of the resulting figure so that it remains the same as when the legend does not jut out.

I wrote a "script" that steals the BBox of one .eps file and plops it into another:

#!/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 

This script simply outputs the resulting .eps file to stdout. if you want to direct it to a third file you'd use it like so:

% copyBB goodBB.eps niceLegend.eps > combined.eps

(It's a bash script, sorry windows users...but then, it isn't so complicated...so you could re-implement it for your shell.) Caveat Empor! I did not test this for many cases. My use-case was as follows: create two versions of the same figure, one with the correct bounding box, and one with the legend jutting out (upper right corner, in my case). Then, I use the script to steal the BB from the "clean" figure and place it onto the legended one. This allowed me to align figures more easily than otherwise (in my case I also wanted to signal that the same legend can be used for the four figures): alt text

(The lower left figure was created using copyBB, the remaining 3 were unmodified)

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.