Re: [ROOT] TLatex vertical alignment

From: Stephen Bailey (bailey@physics.harvard.edu)
Date: Tue Aug 08 2000 - 23:31:41 MEST


Hi Rene.

Hmm.  Good question.  I answer it by finding out how LaTeX
would format it: to me, if LaTeX has formatted it, it is by
definition correctly formatted.  I LaTeX'ed the following
and attached it as a .eps file.

  \documentclass{article}
  \begin{document}
  \pagestyle{empty}
  $K_{S}$ ... $K^{*0}$ ...
  ${2s \over \pi \alpha^2} {d \sigma \over d \cos \theta}
  (e^+ e^- \to f \bar f) = \left| {1 \over 1 - \Delta \alpha} \right|^2
  (1 + \cos^2\theta)$
  \end{document}

The bottom of the two K 's are aligned with each other and the bottom
of the e^+ e^- ...  The fraction bars are centered on the middle of
the height of the lowercase letters that sit on the baseline.  I agree
that there are infinitely cascading subtlties as the formulas get
more complicated.  Short of entirely reproducing LaTeX, it is impossible
to anticipate them all.  But if ROOT ever switches to a Postscript based
graphics rendering that can easily embed .eps files on a canvas, I'm
writing a class that will run LaTeX to produce an .eps file and embed
it...  But I guess for now, I suggest:

* TLatex output be aligned to some baseline that normal letters "sit"
  on and super/sub-scripts go up and down from there.
* In the case of fractions, the line is vertically aligned somewhere
  above the baseline, and their text sits on baselines above and below
  that.
* In the case of complicated structures like fractions, etc. there be
  some rule such that the equation can never overlap itself.  e.g. if
  there is a superscript in the denominator of a fraction, the baseline
  for the denominator is low enough that the superscript doesn't hit
  the fraction line.

I don't know how realistic or easy these requests are, or what
other subtlties might come up.  But for now, I'd be happy to be
able to align "basic" structures like K_{S} and the K^{*0}.

Thanks.

Stephen


On Tue, 8 Aug 2000, Rene Brun wrote:

> Hi Stephen, I understand your point in this particular example, but
> your proposal would have plenty of side effects. For example, what
> would you propose for the 3rd Tlatex string in my macro below?
> 
> Rene Brun
> 
> {
>   gROOT->Reset();
>   TCanvas c1("c1");
>   c1.SetGrid();
>   TH2F h("h","",2,0,1,2,0,1);
>   h.Draw();
>   TLatex latex;
>   latex.DrawLatex(0.1, 0.5, "K_{S}");
>   TLatex *l=(TLatex*)latex.DrawLatex(0.1, 0.3, "K^{*0}");
>   latex.DrawLatex(.1,.1,"#frac{2s}{#pi#alpha^{2}}\
>  #frac{d#sigma}{dcos#theta} (e^{+}e^{-} #rightarrow f#bar{f} ) =\
>  #left| #frac{1}{1 - #Delta#alpha} #right|^{2} (1+cos^{2}#theta)");
> }
> 
> 
> 
> Stephen Bailey wrote:
> > 
> > Hi Rooters,
> > 
> > TLatex appears to vertically align text based upon
> > the lowest/highest element drawn, including sub/superscripts.
> > e.g.
> > 
> >   TLatex latex;
> >   latex.SetNDC();
> >   latex.DrawLatex(0.5, 0.5, "K_{S}");
> >   latex.DrawLatex(0.6, 0.5, "K^{*0}");
> > 
> > aligns the bottom of the subscripted "S" with the bottom of the
> > other K.  I would prefer the alignment to be based upon the bottom
> > of the normal script, i.e. have the two K aligned and have the
> > S be lowered from there and the *0 be raised.
> > 
> > Do others agree?  Would this be easily possible?
> > 
> > Thanks.
> > 
> > Stephen
> 





This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:31 MET