On Sun, Oct 07, 2007 at 10:05:00AM +0300, Martin Vermeer wrote:
> On Sun, Oct 07, 2007 at 02:26:48AM +0200, Dov Feldstern wrote:
> >  Hi!

... 
 
> >  AFAIU, charstyle insets "work" (i.e., determine the font attributes as 
> > they 
> >  would appear in the latex output), in the following manner: when such an 
> >  inset is reached, and say it's a "noun" inset, then the command for 
> > starting 
> >  the "noun" command is output, followed by the text of the inset, followed 
> > by 
> >  the command for closing "noun".
> 
> Yes, \noun{ and } respectively.
>  
> >  The problem with this is that it's a *new* method for determining the font 
> >  attributes, which comes alongside the already existing method 
> >  (character-attributes). And as complicated as character-attributes are, 
> >  mixing two different methods for control fonts appearance is only going to 
> >  make things more complicated. Firstly, just because every time someone now 
> >  wants to somehow interact with font attributes, now two different "places" 
> >  have to be checked in order to determine the current font attributes at a 
> >  given position (1. what are the character attributes at this position? 2. 
> > is 
> >  this position inside an inset which could affect font attributes? And note 
> >  that the answer to (2) is not trivial, even if it's the *only* method 
> > being 
> >  used). Secondly, this can lead to all kinds of situations of 
> >  over-definition: what if the inset determines one thing, but 
> > font-attributes 
> >  determine another? 
> 
> What the inset does, is 'very' clear.
> 
> > Or, what if you have two "emph" insets one inside the 
> >  other --- using the current implementation, I believe you'd get something 
> >  like "\emph{bla bla \emph{bla bla}}", which is probably *not* what we 
> > want. 
> >  (To be sure, with the current character attributes implementation, I'm not 
> >  sure that we'd get what we want, either: we'd probably get "\emph{bla bla 
> >  bla bla}", which is at least better, IMO. What we'd really want might 
> > depend 
> >  on the specific charstyles being used, but I don't see any good way to 
> > even 
> >  recognize this situation using insets. 
> 
> Emph handles this situation on the keyboard input level by
> toggling. Which indeed is a good reason to keep it that way
> i.e., the range approach.

I should add to this two things:

1) In LaTeX, \emph actually works in the 'toggling' way, which 
allows the emphasis style where you can emphasize a word 
inside a larger emphasized area -- or text that is italicized 
for some other reason -- by making it upright again. LyX just 
supports that practice on-screen.

2) This would be very easy to do in an inset, as getDrawingFont
is your friend: just make it test for italics in the surrounding
font and respond appropriately ;-) The current Emph inset does
not do this, which is a bug.

As I said earlier, however, I propose _not_ to move emph to
inset mode, but hang on to the existing implementation, for
reasons explained: emphasization is a sui generis.

(But, what this implementation gets wrong is that is does not
distinguish the situations

\emph{aaa \emph{bbb} ccc}

and

\emph{aaa} bbb \emph{ccc}

which are visually identical but logically _vastly_ different)

- Martin

Reply via email to