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