Sebastian Rahtz writes: > > the TS1 ones, but if TS2 ends up with symbols that are available in > > Adobe fonts but not in the tc fonts you end up in the same situation > oh hell. well, we cant win. either we have a common text companion > encoding thats useful or we dont. since Joerg has taken over TS1, and > its silly with PS fonts, lets set up TS2, with its own LaTeX package, > and and its own world, and let people suffer. you probably can't win I agree, but i still claim that a common subset encoding is an improvement. and it should be an option to textcomp rather than two packages > like Yannis keeps saying, its all irrelevant when you have 16 bit > Unicode fonts - oh shit i forgot that chris will read this and he'll > have another fevered session on Why Unicode Will Not Solve The Worlds > Problems i might join Chris here, people do forget that the problem we try to deal with here is not naming the glyphs (and that is essentially what unicode does, giving internal code points) but mapping them finally to fonts --- and there the problems will become bigger and bigger with unicode since how long do you suppose it will take till all fonts are available with all glyphs in unicode? that's where the major problem lies (mapping back to the real messy and incomplete sub planes) and that's what we are talking about here as well. frank From fmitte01@eds.de Wed Oct 2 12:41 BST 1996 X-VM-v5-Data: ([nil nil nil nil t nil nil nil nil] ["970" "Wed" "2" "October" "1996" "13:35:56" "+0200" "Frank Mittelbach" "fmitte01@eds.de" "<199610021135.LAA01072@nsru2.tse.de.eds.com>" "32" "Re: latex-internal/1862: TS1 names" "^From:" nil nil "10" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon [193.131.197.164]) by cadair.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id MAA10091 for ; Wed, 2 Oct 1996 12:41:03 +0100 Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Wed, 2 Oct 1996 12:41:00 +0100 Received: from gate.eds.de (gate.eds.de [206.96.20.5]) by pillar.elsevier.co.uk (8.6.13/8.6.12) with SMTP id MAA17257 for ; Wed, 2 Oct 1996 12:38:02 +0100 Received: from nsru2.tse.de.eds.com by gate.eds.de with SMTP id AA14355 (InterLock SMTP Gateway 3.0 for ); Wed, 2 Oct 1996 12:36:02 +0100 Received: from n15ux24.nets.de.eds.com (n15ux24.nets.de.eds.com [206.122.103.15]) by nsru2.tse.de.eds.com (8.7.5/8.7.3) with ESMTP id LAA01072; Wed, 2 Oct 1996 11:35:58 GMT Received: by n15ux24.nets.de.eds.com (1.37.109.16/16.2) id AA265346156; Wed, 2 Oct 1996 13:35:56 +0200 Message-Id: <199610021135.LAA01072@nsru2.tse.de.eds.com> In-Reply-To: <199610020931.LAA26941@trudi.zdv.Uni-Mainz.DE> References: <199610020931.LAA26941@trudi.zdv.Uni-Mainz.DE> Content-Length: 969 From: Frank Mittelbach To: srahtz@cadair.elsevier.co.uk Cc: bugs@goofy.zdv.uni-mainz.de Subject: Re: latex-internal/1862: TS1 names Date: Wed, 2 Oct 1996 13:35:56 +0200 Content-Type: text David Carlisle writes: > > are you saying that we should define an encoding TS2, which is the > > Adobe subset of TS1, and that textcomp should force you to choose TS1 > > and TS2, otherwise it defines no new commands at all? > > something like that, although you could perhaps make the default > action be TS1 (or TS2) rather than nothing. there should definitely be official standard encodings and they should have proper ...enc.def files my suggestion for possible names are TS1 (to go with T1) as is now TSA for the adobe set TSE for the adobe expert set textcomp.sty should set the relevant \DeclareDefault... commands after loading the correct ..enc.def file (which contains the actual declarations) as for the option names on textcomp.sty i don't mind either way although i think people would find it easier if they have names like "adobe" rather than TSA technically it doesn't make any difference as it all can be mapped internally frank From C.A.ROWLEY@open.ac.uk Sun Oct 6 12:32:08 1996 X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] ["2909" "Sun" "6" "October" "1996" "12:28:20" "+0100" "Chris Rowley" "C.A.ROWLEY@open.ac.uk" nil "115" "Re: latex-internal/1862: TS1 names" "^From:" nil nil "10" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.0/8.8.0) with ESMTP id MAA01603 for ; Sun, 6 Oct 1996 12:32:06 +0100 (BST) Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Sun, 6 Oct 1996 12:31:59 +0100 Received: from mail-relay2.ja.net (mail-relay2.ja.net [193.63.105.201]) by pillar.elsevier.co.uk (8.8.0/8.8.0) with ESMTP id MAA07775 for ; Sun, 6 Oct 1996 12:27:55 +0100 (BST) Received: from venus.open.ac.uk by mail-relay2.ja.net with JANET SMTP (PP); Sun, 6 Oct 1996 12:26:51 +0100 Received: from fell.open.ac.uk by venus.open.ac.uk with SMTP Local (PP) id <01692-0@venus.open.ac.uk>; Sun, 6 Oct 1996 12:29:09 +0100 Received: by fell.open.ac.uk (5.0/SMI-SVR4) id AA22782; Sun, 6 Oct 1996 12:28:20 +0100 Message-Id: <9610061128.AA22782@fell.open.ac.uk> In-Reply-To: <199610021339.OAA15813@lochnagarn.elsevier.co.uk> References: <199610020921.LAA25793@trudi.zdv.Uni-Mainz.DE> <9610021332.AA03410@fell.open.ac.uk> <199610021339.OAA15813@lochnagarn.elsevier.co.uk> Content-Length: 2908 From: Chris Rowley To: Sebastian Rahtz Cc: Bugs@goofy.zdv.uni-mainz.de Subject: Re: latex-internal/1862: TS1 names Date: Sun, 6 Oct 1996 12:28:20 +0100 Sebastian wrote -- > > > TSE for the adobe expert set > > Is this a well-defined set of glyphs? > > > > Where is it defined? > yes. see PS Language Reference Manual I dun that; and am now even more confused:-) see below. > > > How does it relate to the set: T1 union TS1 ? > i dont grok maths guv. i dont *think* adobe expert has more than TS1, > not sure > Sorry, more maths coming up (hope it is not too tuff: you are allowed to ask Leonor to help:-). In fact the non-sc part of expert contains lots more superior digits (and some letters, punt etc) and all the inferior digits (plus punct, parens, why??) more and fractions, some stuff that is in T1; more interestingly it contains "rupiah" and "onefitted"(wassat???). So here is the fruits of my communing with the man from Adobe. Sources and Ingredients ======================= Appendix E (p591) of the PS Lang Ref Manual describes: -- What Adobe calls a ``character set'' which for these purposes is a set of names; -- What they call an ``encoding vector'' (ev) and I prefer to think of as a partial function from 0-255 to a name-set that is a subset of one of these character sets. Each ``encoding vector'' also defines a set, its image (at least that is what I call it): it is the set of names that appear in the partial function. The sets desribed there are the following (with my abbreviations): Standard Roman Character Set: R and two subsets thereof (note that the union of A and L is not equal to R): Image of the StandardEncoding ev: A Image of the ISOLatin1Encoding ev: L Expert Character Set: E Image of the Expert ev: EF (this is equal to E) Image of the ExpertSubset ev: ES (an inspired name:-) Symbol Character set: S Image of the Symbol ev: SF (this is equal to S) Let us pretend for the purposes of this exercise that the TS1-encoding is also an ``encoding vector'' in this sense; and call its set TS. Facts ===== 1.1 The only things in TS for which set ES must be available are: oldstyle digits (10) oldstyle cent and dollar (2) superiors (3) threequartersemdash colonmonetary 1.2 Nothing more from TS is provided by E. 2.1 The following things in TS are available only in S: asteriskmath dotmath arrows (4) 3.1 The intersection of TS and R contains about 20 names; I have not looked at which of these are in A and/or L, are these relevant? 3.2 Of these, about 5 are also accessible via LaTeX's T1 encoding. 4.1 The number of names in TS only is about 25--30 miscellaneous, plus about 15 ``Capital Accents'' Conclusions =========== Er um ... I have no idea which of these sets of names should be enshrined in LaTeX Standard Encodings. Sets worth thinking about are the following intersections: TS, ES TS, R TS, S Should we provide some of the Adobe sets, even ones that are not subsets of what is provided by the union of T1 and TS1? From C.A.ROWLEY@open.ac.uk Sun Oct 6 14:08:11 1996 X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] ["6686" "Sun" "6" "October" "1996" "13:46:20" "+0100" "Chris Rowley" "C.A.ROWLEY@open.ac.uk" nil "139" "Re: latex-internal/1862: TS1 names" "^From:" nil nil "10" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.0/8.8.0) with ESMTP id OAA01758 for ; Sun, 6 Oct 1996 14:08:08 +0100 (BST) Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Sun, 6 Oct 1996 14:08:13 +0100 Received: from mail-relay2.ja.net (mail-relay2.ja.net [193.63.105.201]) by pillar.elsevier.co.uk (8.8.0/8.8.0) with ESMTP id NAA08121 for ; Sun, 6 Oct 1996 13:45:53 +0100 (BST) Received: from venus.open.ac.uk by mail-relay2.ja.net with JANET SMTP (PP); Sun, 6 Oct 1996 13:44:49 +0100 Received: from fell.open.ac.uk by venus.open.ac.uk with SMTP Local (PP) id <02698-0@venus.open.ac.uk>; Sun, 6 Oct 1996 13:47:09 +0100 Received: by fell.open.ac.uk (5.0/SMI-SVR4) id AA22817; Sun, 6 Oct 1996 13:46:20 +0100 Message-Id: <9610061246.AA22817@fell.open.ac.uk> In-Reply-To: <199609241131.NAA20087@trudi.zdv.Uni-Mainz.DE> References: <199609241131.NAA20087@trudi.zdv.Uni-Mainz.DE> Content-Length: 6685 From: Chris Rowley To: Bugs@goofy.zdv.uni-mainz.de Cc: Sebastian Rahtz Subject: Re: latex-internal/1862: TS1 names Date: Sun, 6 Oct 1996 13:46:20 +0100 Alan wrote -- > Even if we > could get TS1 redesigned so that it only contained glyphs from the > `usual Adobe set' then you can replay the same story with `a user is > using Monotype WeirdFont' with some random subset of the `usual Adobe > set'. This discussion is getting a bit silly (so I now feel competent to enter it:-). The only way to do complex typesetting with special fonts or to use very particular fonts is to be able to say: typeset the glyph named RatherSquigglyWhatsIt in version 2.3a of the director's cut of SlightlyExtendedSemiDemiBoldSubSerifedCourier as sold by the shop that used to be on the corner of Market and High in 1978... oh and don't forget that it must be output on a SuperCost6000B with the following settings ... and printed using SquidgyInk231 at 50deg C ... Note the above does not need to deal with encodings at all; anything that does is an enormous limitation to the ease of such precise access. But we live in a world where encodings are the way things are done (I shall not get into an argument about whether they are sensible or essential). Thus one basic aim of NFSS3 must be to provide the tools for making the use of encodings as flexible as possible. One example of this will be that if a site wants to ensure that all the glyphs in all their fonts are reliably and uniformally accessible via encodings and TeX then they can do so; but to do so (Frank and I think) it is essential for them to assign a different encoding-name to each different encoding (where `different' means any difference at all that is relevant to the needs of that site). It is neither possible nor sensible for the standard distribution to include all the encodings we have never heard of; which encodings it should provide is a completely different question. The answer depends on -- what common glyph sets are in fonts in general use; -- how error-free use of the standard system should be when used with fonts having well-defined glyph sets. My last message provided some data to help in answering this based entirely on published descriptions but on zero knowledge about what glyphs are provided by fonts in general use. We may wish to provide different ``standard set-ups'' whose use depends not only on what fonts are available but also in how error-free the output needs to be. For example, most of the world probably does not care if dollars and pounds get confused since they can afford to use neither; whereas as most of you know, this distinction is a subject that is right now much closer to my heart than I would wish. These set-ups will need to use different sequences of encodings and different fd files accessing the same tfm files (or producing error messages: sorry, that combination is not available, try again) to produce different levels of accuracy (together with warnings or errors); in some you get a random pound or dollar, in others you get what you intended (maybe in a totally ghastly font-combination) or an error. > > whether it would really make sense to take what is currently OT1 > > appart is something that would need to be termined (and i have my > > doubts) but in principle that would be possible. > > Hopefully for NFSS3, OT1 will be a thing of the past. Whether or not OT1 becomes a thing of the past is irrelevant to NFSS3 as it will provide the tools to deal with the many varieties of encoding in TeX's classic fonts for those who wish to use them. > The problem is > with T1---are we really going to need to come up with a different > encoding name for *every* subset of T1 in existence? There's quite a > lot of them! Most Adobe/Monotype/Linotype text faces come with `the > usual glyphs' (ie enough to build T1 without and > ) but there are a lot of display fonts or fonts from > other suppliers which miss out random subsets of the glyphs. > If there is a reasonably useful common set of glyphs provided by, for example, display fonts then perhaps a encoding (TD1?) should be a standard one; this would bring attention to the fact that such fonts exist and hence prevent errors in using them. > > The current situation if I want to install a font into LaTeX: I run > fontinst and some other programs, generate the (subset of) OT1 and T1 > fonts, and off I go. Sometimes I get warnings from the driver. Such > is life. > Clearly if a large variety of new glyph sets commonly occur in fonts used with TeX then good tools need to be developed to ``install' these fonts; but these are not our concern at this stage. They will probably need to have some method of finding out what a font's glyph set is (do such things exist, or is it trial and error with each new font?); I would have thought that doing this would simply be a part of current installation process since it is presumably needed in order to produce the .tfm file. > For example, different implementations of Times have > different glyphs (eg TrueType Adobe Times doesn't have ), so > it may be that only the driver knows which glyphs are present. It seems very likely to me that fonts that differ in this way also differ in their metrics, so a different tfm file is needed anyway; thus TeX will need to know what is available. > Under your scheme: I discover this font has a different subset of `the > usual glyphs' so I email the LaTeX team to get a new unique encoding > id, then write the appropriate fontinst back end for that encoding id, > and etc. etc. If documents referencing arbitrary quirky fonts are to be portable with guaranteed lack of errors then some means of registration for arbitrary encodings will be necessary; but this is a truism: portability of complex systems requires complex standards and arbitrary extensibility of name-spaces requires a registration system. Thus it would probably be better to simply state that we are not going to provide error-free portability of documents using arbitrary fonts. I do not think this is unreasonable; I suspect that it will hardly be noticed. On the other hand, if there are large numbers of generally available fonts that do use standard glyph sets (or have a standard large subset) then we can and should provide error-free portability for documents that use only these sets of glyphs. We cannot stop people telling TeX that a font supports an encoding that it in fact does not (and presumably stealing an inaccurate .tfm file to compound the felony) but we do not need to officially support such activities provided we supply the tools to do it properly (it may still be sensible in particular cases to fudge it, but we should provide the choice). Silly, or what? chris From alanje@cogs.susx.ac.uk Mon Oct 7 14:49:36 1996 X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] ["986" "Mon" "7" "October" "1996" "14:43" "BST" "Alan Jeffrey" "alanje@cogs.susx.ac.uk" nil "34" "Re: latex-internal/1862: TS1 names" "^From:" nil nil "10" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.0/8.8.0) with ESMTP id OAA26393 for ; Mon, 7 Oct 1996 14:49:35 +0100 (BST) Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Mon, 7 Oct 1996 14:49:23 +0100 Received: from csrj.crn.cogs.susx.ac.uk (csrj.crn.cogs.susx.ac.uk [192.33.16.212]) by pillar.elsevier.co.uk (8.8.0/8.8.0) with SMTP id OAA22402 for ; Mon, 7 Oct 1996 14:46:31 +0100 (BST) Received: by csrj.crn.cogs.susx.ac.uk (Smail3.1.29.1 #3) id m0vAFyN-0000ZpC; Mon, 7 Oct 96 14:43 BST Message-Id: In-Reply-To: <199610061131.NAA19934@trudi.zdv.Uni-Mainz.DE> References: <199610061131.NAA19934@trudi.zdv.Uni-Mainz.DE> Mime-Version: 1.0 (generated by tm-edit 7.69) Content-Length: 985 From: Alan Jeffrey To: Chris Rowley Cc: Sebastian Rahtz Cc: bugs@goofy.zdv.Uni-Mainz.de Subject: Re: latex-internal/1862: TS1 names Date: Mon, 7 Oct 96 14:43 BST Content-Type: text/plain; charset=US-ASCII > more interestingly it contains "rupiah" and "onefitted"(wassat???). the difference between and is that one of them is given its natural width, where the other is guaranteed to be the same width as the other digits (useful for tables etc). Damned if I can remember which is which though :-) > superiors (3) > > threequartersemdash Note that these 4 can be faked by fontinst if they're not provided by the expert set. > 2.1 The following things in TS are available only in S: > > asteriskmath > > dotmath > > arrows (4) Using Symbol to fake glyphs for the text symbol set is rather dodgy (eg Courier arrows really should be different from Times arrows :-) but I guess there's not much else you can do. > 3.1 The intersection of TS and R contains about 20 names; I have not > looked at which of these are in A and/or L, are these relevant? They're not relevant, since the 8r encoding vector contains all of R. Alan. From C.A.ROWLEY@open.ac.uk Mon Oct 7 16:08:25 1996 X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] ["1454" "Mon" "7" "October" "1996" "16:02:22" "+0100" "Chris Rowley" "C.A.ROWLEY@open.ac.uk" nil "49" "Re: latex-internal/1862: TS1 names" "^From:" nil nil "10" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.0/8.8.0) with ESMTP id QAA07279 for ; Mon, 7 Oct 1996 16:08:24 +0100 (BST) Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Mon, 7 Oct 1996 16:08:02 +0100 Received: from mail-relay2.ja.net (mail-relay2.ja.net [193.63.105.201]) by pillar.elsevier.co.uk (8.8.0/8.8.0) with ESMTP id QAA24694 for ; Mon, 7 Oct 1996 16:05:17 +0100 (BST) Received: from venus.open.ac.uk by mail-relay2.ja.net with JANET SMTP (PP); Mon, 7 Oct 1996 16:03:02 +0100 Received: from fell.open.ac.uk by venus.open.ac.uk with SMTP Local (PP) id <18533-0@venus.open.ac.uk>; Mon, 7 Oct 1996 16:03:22 +0100 Received: by fell.open.ac.uk (5.0/SMI-SVR4) id AA26706; Mon, 7 Oct 1996 16:02:22 +0100 Message-Id: <9610071502.AA26706@fell.open.ac.uk> In-Reply-To: References: <199610061131.NAA19934@trudi.zdv.Uni-Mainz.DE> Content-Length: 1453 From: Chris Rowley To: Alan Jeffrey Cc: Sebastian Rahtz , bugs@goofy.zdv.Uni-Mainz.de Subject: Re: latex-internal/1862: TS1 names Date: Mon, 7 Oct 1996 16:02:22 +0100 Alan wrote -- > > more interestingly it contains "rupiah" and "onefitted"(wassat???). > > the difference between and is that one of them is > given its natural width, where the other is guaranteed to be the same > width as the other digits (useful for tables etc). Damned if I can > remember which is which though :-) > I assume that means that the other digits are always equal-width? Then it makes sense. > > superiors (3) > > > > threequartersemdash > > Note that these 4 can be faked by fontinst if they're not provided by > the expert set. > They can also all be faked simply in TeX (maybe even better:-). > > 2.1 The following things in TS are available only in S: > > > > asteriskmath > > > > dotmath > > > > arrows (4) > > Using Symbol to fake glyphs for the text symbol set is rather dodgy > (eg Courier arrows really should be different from Times arrows :-) > but I guess there's not much else you can do. > Is there a Courier expert set (what a waste of talent:-)? Is there more than one Symbol font design at all? > > 3.1 The intersection of TS and R contains about 20 names; I have not > > looked at which of these are in A and/or L, are these relevant? > > They're not relevant, since the 8r encoding vector contains all of R. > I thought so. Does 8r encode the glyphs in R that are in neither A nor L? (a few carrions and diabetes) Thanks for the info. chris From strow@umbc.edu Sun Nov 24 04:03:47 1996 X-VM-v5-Data: ([nil nil nil nil t nil nil nil nil] ["1305" "Sat" "23" "November" "1996" "22:58:10" "-0500" "L. Larrabee Strow" "strow@umbc.edu" "" "43" "Re: Problem with \\dot{ } with lucbr" "^From:" nil nil "11" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.3/8.8.3) with ESMTP id EAA25315 for ; Sun, 24 Nov 1996 04:03:45 GMT Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Sun, 24 Nov 1996 04:00:45 +0000 Received: from umbc7.umbc.edu (root@umbc7.umbc.edu [130.85.6.7]) by pillar.elsevier.co.uk (8.8.3/8.8.3) with SMTP id DAA01888 for ; Sun, 24 Nov 1996 03:59:44 GMT Received: from [130.85.95.8] (turnip.umbc.edu [130.85.95.8]) by umbc7.umbc.edu (8.6.12/Umbc) with ESMTP id WAA20084 for ; Sat, 23 Nov 1996 22:58:39 -0500 X-Sender: strow@umbc7.umbc.edu Message-Id: In-Reply-To: <199512150936.JAA09807@cadair.elsevier.co.uk> References: Mime-Version: 1.0 Content-Length: 1304 From: "L. Larrabee Strow" To: Sebastian Rahtz Subject: Re: Problem with \dot{ } with lucbr Date: Sat, 23 Nov 1996 22:58:10 -0500 Content-Type: text/plain; charset="us-ascii" Greetings, I got the following message from you about 1 year ago because \dot{} wasn't working for me when using lucbr.sty. Your fix below worked, so ultimately all if fine. Just wanted to remind you that this problem continues - I guess I got the latest psnfss stuff during the summer and haven't done a \dot{} until recently, and found I had the problem again since I was using a new lucbry.sty file. Fortunately I save all my email and found this old message from you. Can this be fixed in the psnfss distribution, or maybe it will break something else?? >um. i see in the code the lines > >\ifnum\Lucida@names=0 > \DeclareMathAccent\vec {\mathord}{letters}{"7E} >\else > \DeclareMathAccent\vec {\mathord}{letters}{"7E} > \DeclareMathAccent\dot {\mathalpha}{operators}{"C7} >\fi > > >which means that it works for me, 'cos i use the Berry names, but >doesnt for you. i cannot think why this difference is here, Berthold >must have asked me to do it. do you get the right dot if you remove >the \dot line? > >sebastian -- L. Larrabee Strow E-mail: strow@umbc.edu Department of Physics FAX : (410) 455-1072 University of Maryland Baltimore County Phone : (410) 455-2528 5401 Wilkens Avenue Baltimore, MD 21228-5398 From bernard@CS.McGill.CA Tue Dec 10 18:51:38 1996 X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] ["9732" "Tue" "10" "December" "1996" "12:04:35" "-0500" "Bernard Desruisseaux" "bernard@cs.mcgill.ca" nil "253" "Adding /dotlessj to Type 1 fonts" "^From:" nil nil "12" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.3/8.8.3) with ESMTP id SAA24710 for ; Tue, 10 Dec 1996 18:51:37 GMT Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Tue, 10 Dec 1996 18:50:09 +0000 Received: from csc-sun.math.utah.edu (root@csc-sun.math.utah.edu [128.110.198.2]) by pillar.elsevier.co.uk (8.8.3/8.8.3) with ESMTP id SAA01118 for ; Tue, 10 Dec 1996 18:49:26 GMT Received: from marge.cs.mcgill.ca (bernard@marge.CS.McGill.CA [132.206.51.198]) by csc-sun.math.utah.edu (8.7.6/8.7.3) with SMTP id KAA15856 for ; Tue, 10 Dec 1996 10:04:50 -0700 (MST) Received: (from bernard@localhost) by marge.cs.mcgill.ca (8.6.10/8.6.9) id MAA05388; Tue, 10 Dec 1996 12:04:37 -0500 Message-ID: MIME-Version: 1.0 Content-Length: 9731 In-reply-to: <199611211106.LAA00070@lochnagarn.elsevier.co.uk> (message from Sebastian Rahtz on Thu, 21 Nov 1996 11:06:45 GMT) Content-Length: 1994 From: David Carlisle To: s.rahtz@elsevier.co.uk CC: alanje@cogs.sussex.ac.uk, Frank.Mittelbach@Uni-Mainz.de, fmitte01@de.eds.com Subject: Re: fontinst: urgent(ish) patch required..... Date: Thu, 21 Nov 1996 11:14:43 GMT > yes. please do write a small package! uselowfd.sty=================cut here %% Copyright 1989-1996 Frank Mittelbach and Rainer Sch\"opf % May as well let them take the blame for it. Even though % I wrote the bit that's changed. % % \begin{macrocode} %<*2ekernel|autoload> \def\try@load@fontshape{% \expandafter \ifx\csname \f@encoding+\f@family\endcsname\relax \@font@info{Try loading font information for \f@encoding+\f@family}% % \end{macrocode} % We predefine this combination to be |\@empty| which means that % next time we don't try again unnecessary in case we don't find a % |.fd| file. If the file contains a |\DeclareFontFamily| command % than this setting will be overwritten. % \changes{v2.1e}{1994/02/24} % {Separate restoration of catcodes for fd cmds} % \changes{v2.1l}{1994/05/13}{Use \cmd\@input@ for fd files} % \begin{macrocode} \global\expandafter\let \csname\f@encoding+\f@family\endcsname\@empty \makeatletter % \end{macrocode} % Set the catcodes used in the syntax, but do it only once (this % will be restored at the end of the font loading group). % \begin{macrocode} \nfss@catcodes \let\nfss@catcodes\relax % \end{macrocode} % % \changes{v3.0s}{1996/11/18} % {(DPC) lowercase fd file names. internal/1044} % For increased portability make the external filename % monocase, but look for the (old style) mixed case % filename if the first attempt fails. % % On any monocase system this means that the file is looked for twice % which takes up time and string space, but at least for this release % Check for both names to give people time to re-install their private % fd files with lowercase names. % \begin{macrocode} \edef\reserved@a{% \lowercase{% \noexpand\InputIfFileExists{\f@encoding\f@family.fd}}}% \reserved@a\relax {\@input@{\f@encoding\f@family.fd}}% \fi} % \end{macrocode} From carlisle@ma.man.ac.uk Wed Nov 20 18:57:27 1996 X-VM-v5-Data: ([nil nil nil nil t nil nil nil nil] ["1498" "Wed" "20" "November" "1996" "18:51:48" "GMT" "David Carlisle" "carlisle@ma.man.ac.uk" "<199611201851.SAA15745@vummath.ma.man.ac.uk>" "50" "fontinst: urgent(ish) patch required....." "^From:" nil nil "11" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.2/8.8.2) with ESMTP id SAA05936 for ; Wed, 20 Nov 1996 18:57:26 GMT Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Wed, 20 Nov 1996 18:55:32 +0000 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by pillar.elsevier.co.uk (8.8.2/8.8.2) with SMTP id SAA08692 for ; Wed, 20 Nov 1996 18:55:12 GMT Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id SAA15745; Wed, 20 Nov 1996 18:51:48 GMT Message-Id: <199611201851.SAA15745@vummath.ma.man.ac.uk> Content-Length: 1497 From: David Carlisle To: s.rahtz@elsevier.co.uk, alanje@cogs.sussex.ac.uk Subject: fontinst: urgent(ish) patch required..... Date: Wed, 20 Nov 1996 18:51:48 GMT From carlisle@ma.man.ac.uk Mon Jul 22 17:56 BST 1996 X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] ["1912" "Mon" "22" "July" "1996" "17:41:55" "+0100" "David Carlisle" "carlisle@ma.man.ac.uk" nil "58" "LaTeX with times/helvetica/courier" "^From:" nil nil "7" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon [193.131.197.164]) by cadair.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id RAA16606 for ; Mon, 22 Jul 1996 17:56:50 +0100 Received: from epprod.elsevier.co.uk (actually host epprod) by snowdon with SMTP (PP); Mon, 22 Jul 1996 17:58:01 +0100 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by epprod.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id RAA10425 for ; Mon, 22 Jul 1996 17:56:40 +0100 Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id RAA17773; Mon, 22 Jul 1996 17:41:55 +0100 Message-Id: <199607221641.RAA17773@vummath.ma.man.ac.uk> Content-Length: 1911 From: David Carlisle To: graham@cs.man.ac.uk, Robin.Fairbairns@cl.cam.ac.uk, srahtz@cadair.elsevier.co.uk, alanje@cogs.sussex.ac.uk Subject: LaTeX with times/helvetica/courier Date: Mon, 22 Jul 1996 17:41:55 +0100 Content-Type: text ftp://ftp.cs.man.ac.uk/pub/carlisle/pslatex2.tar.gz -rw-r--r-- 1 3502 3502 20010 Jul 22 16:30 pslatex2.tar.gz Should you be intersted a package and shell script for producing `pslatex' Uses extra fonts over the standard psnfss distribution namely a condensed courier (85%) and `upright italic' versions of this and helvetica, ie standard non-italic fonts but with \pounds. I just used fontinst's OT1itt and OT1i for this, but wasnt sure what the Berry name would be They get called pcrr7tin phvr7ti for now. There's a readme in the tar file. so main differences from \usepackage{times,mathptm} are that \pounds works in OT1 again and helvetica is scaled 90% and courier condensed so times-helvetica-courier dont look quite so horrible together. Alan or Sebastian might care to look at my fontinst code, which I dont really understand that well:-) % input the fontinst (needs test version from the psfonts area) \input fontinst.sty % Squash a courier (this is a new font) \transformfont{pcrr8rn}{% \xscalefont{850}{% \reencodefont{8r}{\fromafm{pcrr8a}} } } % Make helvetica (this is standard font, but need fontinst version % to scamble below) \transformfont{phvr8r}{% \reencodefont{8r}{\fromafm{phvr8a}} } % make condensed courier in OT1, OT1i (with \pounds) and T1 % make helvetica in OT1i (with \pounds) \installfonts \installfont{pcrr7tn}{pcrr8rn,psyr,latin}{OT1tt}{OT1}{pcr}{c}{n}{} \installfont{pcrr7tin}{pcrr8rn,psyr,latin}{OT1itt}{OT1}{pcr}{c}{it}{} \installfont{pcrr8tn}{pcrr8rn,psyr,latin}{T1}{T1}{pcr}{c}{n}{} \installfont{phvr7ti}{phvr8r,psyr,latin}{OT1i}{OT1}{phv}{n}{it}{} \endinstallfonts David Graham, this (which you can find in ~carlisle/ftp on r8) is more or less what you have already, but with the names updated for the `new' names as used in the tetex distrib. From carlisle@ma.man.ac.uk Mon Jul 22 18:18 BST 1996 X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] ["10339" "Mon" "22" "July" "1996" "18:04:46" "+0100" "David Carlisle" "carlisle@ma.man.ac.uk" nil "462" "pslatex" "^From:" nil nil "7" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon [193.131.197.164]) by cadair.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id SAA17029 for ; Mon, 22 Jul 1996 18:18:27 +0100 Received: from epprod.elsevier.co.uk (actually host epprod) by snowdon with SMTP (PP); Mon, 22 Jul 1996 18:19:35 +0100 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by epprod.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id SAA10645 for ; Mon, 22 Jul 1996 18:18:07 +0100 Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id SAA18054; Mon, 22 Jul 1996 18:04:46 +0100 Message-Id: <199607221704.SAA18054@vummath.ma.man.ac.uk> Content-Length: 10338 From: David Carlisle To: graham@cs.man.ac.uk, Robin.Fairbairns@cl.cam.ac.uk, srahtz@cadair.elsevier.co.uk, alanje@cogs.sussex.ac.uk Subject: pslatex Date: Mon, 22 Jul 1996 18:04:46 +0100 Content-Type: text sigh the tar file misses out pslatex.sty \ProvidesPackage{pslatex}[1996/07/22 v1.1 pslatex emulation (DPC)] % 1994/06/28 v1.0 % 1996/07/22 v1.1 update to `8r' encoded base fonts. %%% pslatex emulation for LaTeX2e %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This file consists of verbatim copies of times.sty and mathptm.sty % to get a basic times/helvetica/courier setup. % % It then has a copy of OT1pcr.fd % modified to load a narrowed version of courier. % and make the ui substitution silent % % It then has a copy of OT1phv.fd % modified to load helvetica at 90%. % and make the ui substitution silent % % It then has a copy of OT1ptm.fd % modified to make the ui substitution silent % %%%% TIMES.STY \renewcommand{\sfdefault}{phv} \renewcommand{\rmdefault}{ptm} \renewcommand{\ttdefault}{pcr} %%%% MATHPTM.STY \DeclareSymbolFont{operators} {OT1}{ptmcm}{m}{n} \DeclareSymbolFont{letters} {OML}{ptmcm}{m}{it} \DeclareSymbolFont{symbols} {OMS}{pzccm}{m}{n} \DeclareSymbolFont{largesymbols}{OMX}{psycm}{m}{n} \DeclareSymbolFont{bold} {OT1}{ptm}{bx}{n} \DeclareSymbolFont{italic} {OT1}{ptm}{m}{it} % If we're in compatibility mode, defined \mathbf and \mathit. \@ifundefined{mathbf}{}{\DeclareMathAlphabet{\mathbf}{OT1}{ptm}{bx}{n}} \@ifundefined{mathit}{}{\DeclareMathAlphabet{\mathit}{OT1}{ptm}{m}{it}} % An \omicron command, to fill the gap. \DeclareMathSymbol{\omicron}{0}{operators}{`\o} % Reduce the space around math operators \thinmuskip=2mu \medmuskip=2.5mu plus 1mu minus 1mu \thickmuskip=4mu plus 1.5mu minus 1mu % No bold math. \def\boldmath{% \@warning{there is no bold Symbol font}% \global\let\boldmath=\relax } % Larger scripts. \DeclareMathSizes{5}{5}{5}{5} \DeclareMathSizes{6}{6}{5}{5} \DeclareMathSizes{7}{7}{5}{5} \DeclareMathSizes{8}{8}{6}{5} \DeclareMathSizes{9}{9}{7}{5} \DeclareMathSizes{10}{10}{7.4}{6} \DeclareMathSizes{10.95}{10.95}{8}{6} \DeclareMathSizes{12}{12}{9}{7} \DeclareMathSizes{14.4}{14.4}{10.95}{8} \DeclareMathSizes{17.28}{17.28}{12}{10} \DeclareMathSizes{20.74}{20.74}{14.4}{12} \DeclareMathSizes{24.88}{24.88}{17.28}{14.4} \DeclareFontSubstitution{OMS}{pzccm}{m}{n} \begingroup \nfss@catcodes %%%%% ``OMSptm.fd'' \DeclareFontFamily{OMS}{ptm}{} \DeclareFontShape{OMS}{ptm}{m}{n} {<-> ssub * pzccm/m/n}{} \DeclareFontShape{OMS}{ptm}{m}{it} {<-> ssub * pzccm/m/n}{} \DeclareFontShape{OMS}{ptm}{m}{sl} {<-> ssub * pzccm/m/n}{} \DeclareFontShape{OMS}{ptm}{m}{sc} {<-> ssub * pzccm/m/n}{} \DeclareFontShape{OMS}{ptm}{bx}{n} {<-> ssub * pzccm/b/n}{} \DeclareFontShape{OMS}{ptm}{bx}{it} {<-> ssub * pzccm/b/n}{} \DeclareFontShape{OMS}{ptm}{bx}{sl} {<-> ssub * pzccm/b/n}{} \DeclareFontShape{OMS}{ptm}{bx}{sc} {<-> ssub * pzccm/b/n}{} %%%% OT1pcr.fd % \DeclareFontFamily{OT1}{pcr}{\hyphenchar \font =-1}% % \DeclareFontShape{OT1}{pcr}{b}{n}{% <-> pcrb7t% }{}% % \DeclareFontShape{OT1}{pcr}{b}{sc}{% <-> pcrbc7t% }{}% % \DeclareFontShape{OT1}{pcr}{b}{sl}{% <-> pcrbo7t% }{}% % %%%% pslatex's condenced courier \DeclareFontShape{OT1}{pcr}{m}{n}{% <-> pcrr7tn% }{}% % \DeclareFontShape{OT1}{pcr}{m}{sc}{% <-> pcrrc7t% }{}% % \DeclareFontShape{OT1}{pcr}{m}{sl}{% <-> pcrro7t% }{}% % and a whole font just for \pounds.... \DeclareFontShape{OT1}{pcr}{m}{ui}{% <-> pcrr7tin% }{} % \DeclareFontShape{OT1}{pcr}{bx}{n}{<->ssub * pcr/b/n}{}% \DeclareFontShape{OT1}{pcr}{bx}{sc}{<->ssub * pcr/b/sc}{}% \DeclareFontShape{OT1}{pcr}{bx}{sl}{<->ssub * pcr/b/sl}{}% \DeclareFontShape{OT1}{pcr}{b}{it}{<->ssub * pcr/b/sl}{}% \DeclareFontShape{OT1}{pcr}{bx}{it}{<->ssub * pcr/b/it}{}% \DeclareFontShape{OT1}{pcr}{b}{ui}{<->ssub * pcr/m/ui}{}% \DeclareFontShape{OT1}{pcr}{bx}{ui}{<->sssub * pcr/b/ui}{}% \DeclareFontShape{OT1}{pcr}{m}{it}{<->ssub * pcr/m/sl}{}% % %%%% OT1phv.fd %%Filename: OT1phv.fd %%Created by: tex 16273helvetic %%Created using fontinst v1.328 %%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY \DeclareFontFamily{OT1}{phv}{} \DeclareFontShape{OT1}{phv}{b}{n}{ <-> s * [.9] phvb7t }{} \DeclareFontShape{OT1}{phv}{b}{sc}{ <-> s * [.9] phvbc7t }{} \DeclareFontShape{OT1}{phv}{b}{sl}{ <-> s * [.9] phvbo7t }{} \DeclareFontShape{OT1}{phv}{bc}{n}{ <-> s * [.9] phvbrn7t }{} \DeclareFontShape{OT1}{phv}{bc}{sc}{ <-> s * [.9] phvbcn7t }{} \DeclareFontShape{OT1}{phv}{bc}{sl}{ <-> s * [.9] phvbon7t }{} \DeclareFontShape{OT1}{phv}{m}{n}{ <-> s * [.9] phvr7t }{} \DeclareFontShape{OT1}{phv}{m}{sc}{ <-> s * [.9] phvrc7t }{} \DeclareFontShape{OT1}{phv}{m}{sl}{ <-> s * [.9] phvro7t }{} \DeclareFontShape{OT1}{phv}{mc}{n}{ <-> s * [.9] phvrrn7t }{} \DeclareFontShape{OT1}{phv}{mc}{sc}{ <-> s * [.9] phvrcn7t }{} \DeclareFontShape{OT1}{phv}{mc}{sl}{ <-> s * [.9] phvron7t }{} % for \pounds \DeclareFontShape{OT1}{phv}{m}{ui}{ <->s * [.9] phvr7ti}{} \DeclareFontShape{OT1}{phv}{bx}{n}{<->ssub * phv/b/n}{} \DeclareFontShape{OT1}{phv}{bx}{sc}{<->ssub * phv/b/sc}{} \DeclareFontShape{OT1}{phv}{bx}{sl}{<->ssub * phv/b/sl}{} \DeclareFontShape{OT1}{phv}{b}{it}{<->ssub * phv/b/sl}{} \DeclareFontShape{OT1}{phv}{bx}{it}{<->ssub * phv/b/it}{} \DeclareFontShape{OT1}{phv}{b}{ui}{<->ssub * phv/m/ui}{} \DeclareFontShape{OT1}{phv}{bx}{ui}{<->ssub * phv/b/ui}{} \DeclareFontShape{OT1}{phv}{bc}{it}{<->ssub * phv/bc/sl}{} \DeclareFontShape{OT1}{phv}{bc}{ui}{<->ssub * phv/bc/it}{} \DeclareFontShape{OT1}{phv}{m}{it}{<->ssub * phv/m/sl}{} \DeclareFontShape{OT1}{phv}{mc}{it}{<->ssub * phv/mc/sl}{} \DeclareFontShape{OT1}{phv}{mc}{ui}{<->ssub * phv/mc/it}{} %\endinput %\endinput% %%%% OT1ptm.fd %Filename: OT1ptm.fd %Created by: tex 16594times %Created using fontinst v1.328 %THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY \DeclareFontFamily{OT1}{ptm}{} \DeclareFontShape{OT1}{ptm}{b}{n}{ <-> ptmb7t }{} \DeclareFontShape{OT1}{ptm}{b}{sc}{ <-> ptmbc7t }{} \DeclareFontShape{OT1}{ptm}{b}{it}{ <-> ptmbi7t }{} \DeclareFontShape{OT1}{ptm}{b}{sl}{ <-> ptmbo7t }{} \DeclareFontShape{OT1}{ptm}{m}{n}{ <-> ptmr7t }{} \DeclareFontShape{OT1}{ptm}{m}{sc}{ <-> ptmrc7t }{} \DeclareFontShape{OT1}{ptm}{m}{it}{ <-> ptmri7t }{} \DeclareFontShape{OT1}{ptm}{m}{sl}{ <-> ptmro7t }{} \DeclareFontShape{OT1}{ptm}{bx}{n}{<->ssub * ptm/b/n}{} \DeclareFontShape{OT1}{ptm}{bx}{sc}{<->ssub * ptm/b/sc}{} \DeclareFontShape{OT1}{ptm}{bx}{it}{<->ssub * ptm/b/it}{} \DeclareFontShape{OT1}{ptm}{b}{ui}{<->ssub * ptm/b/it}{} \DeclareFontShape{OT1}{ptm}{bx}{ui}{<->ssub * ptm/b/ui}{} \DeclareFontShape{OT1}{ptm}{bx}{sl}{<->ssub * ptm/b/sl}{} \DeclareFontShape{OT1}{ptm}{m}{ui}{<->ssub * ptm/m/it}{} %%%% T1pcr.fd % \DeclareFontFamily{T1}{pcr}{\hyphenchar \font =-1}% % \DeclareFontShape{T1}{pcr}{b}{n}{% <-> pcrb8t% }{}% % \DeclareFontShape{T1}{pcr}{b}{sc}{% <-> pcrbc8t% }{}% % \DeclareFontShape{T1}{pcr}{b}{sl}{% <-> pcrbo8t% }{}% % %%%% pslatex's condensed courier \DeclareFontShape{T1}{pcr}{m}{n}{% <-> pcrr8tn% }{}% % \DeclareFontShape{T1}{pcr}{m}{sc}{% <-> pcrrc8t% }{}% % \DeclareFontShape{T1}{pcr}{m}{sl}{% <-> pcrro8t% }{}% % \DeclareFontShape{T1}{pcr}{bx}{n}{<->ssub * pcr/b/n}{}% \DeclareFontShape{T1}{pcr}{bx}{sc}{<->ssub * pcr/b/sc}{}% \DeclareFontShape{T1}{pcr}{bx}{sl}{<->ssub * pcr/b/sl}{}% \DeclareFontShape{T1}{pcr}{b}{it}{<->ssub * pcr/b/sl}{}% \DeclareFontShape{T1}{pcr}{bx}{it}{<->ssub * pcr/b/it}{}% \DeclareFontShape{T1}{pcr}{b}{ui}{<->ssub * pcr/b/it}{}% \DeclareFontShape{T1}{pcr}{bx}{ui}{<->sssub * pcr/b/ui}{}% \DeclareFontShape{T1}{pcr}{m}{it}{<->ssub * pcr/m/sl}{}% \DeclareFontShape{T1}{pcr}{m}{ui}{<->ssub * pcr/m/it}{}% % %%%% T1phv.fd %%Filename: T1phv.fd %%Created by: tex 16273helvetic %%Created using fontinst v1.328 %%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY \DeclareFontFamily{T1}{phv}{} \DeclareFontShape{T1}{phv}{b}{n}{ <-> s * [.9] phvb8t }{} \DeclareFontShape{T1}{phv}{b}{sc}{ <-> s * [.9] phvbc8t }{} \DeclareFontShape{T1}{phv}{b}{sl}{ <-> s * [.9] phvbo8t }{} \DeclareFontShape{T1}{phv}{bc}{n}{ <-> s * [.9] phvbrn8t }{} \DeclareFontShape{T1}{phv}{bc}{sc}{ <-> s * [.9] phvbcn8t }{} \DeclareFontShape{T1}{phv}{bc}{sl}{ <-> s * [.9] phvbon8t }{} \DeclareFontShape{T1}{phv}{m}{n}{ <-> s * [.9] phvr8t }{} \DeclareFontShape{T1}{phv}{m}{sc}{ <-> s * [.9] phvrc8t }{} \DeclareFontShape{T1}{phv}{m}{sl}{ <-> s * [.9] phvro8t }{} \DeclareFontShape{T1}{phv}{mc}{n}{ <-> s * [.9] phvrrn8t }{} \DeclareFontShape{T1}{phv}{mc}{sc}{ <-> s * [.9] phvrcn8t }{} \DeclareFontShape{T1}{phv}{mc}{sl}{ <-> s * [.9] phvron8t }{} \DeclareFontShape{T1}{phv}{bx}{n}{<->ssub * phv/b/n}{} \DeclareFontShape{T1}{phv}{bx}{sc}{<->ssub * phv/b/sc}{} \DeclareFontShape{T1}{phv}{bx}{sl}{<->ssub * phv/b/sl}{} \DeclareFontShape{T1}{phv}{b}{it}{<->ssub * phv/b/sl}{} \DeclareFontShape{T1}{phv}{bx}{it}{<->ssub * phv/b/it}{} \DeclareFontShape{T1}{phv}{b}{ui}{<->ssub * phv/b/it}{} \DeclareFontShape{T1}{phv}{bx}{ui}{<->ssub * phv/b/ui}{} \DeclareFontShape{T1}{phv}{bc}{it}{<->ssub * phv/bc/sl}{} \DeclareFontShape{T1}{phv}{bc}{ui}{<->ssub * phv/bc/it}{} \DeclareFontShape{T1}{phv}{m}{it}{<->ssub * phv/m/sl}{} \DeclareFontShape{T1}{phv}{m}{ui}{<->ssub * phv/m/it}{} \DeclareFontShape{T1}{phv}{mc}{it}{<->ssub * phv/mc/sl}{} \DeclareFontShape{T1}{phv}{mc}{ui}{<->ssub * phv/mc/it}{} %\endinput %\endinput% %%%% T1ptm.fd %Filename: T1ptm.fd %Created by: tex 16594times %Created using fontinst v1.328 %THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY \DeclareFontFamily{T1}{ptm}{} \DeclareFontShape{T1}{ptm}{b}{n}{ <-> ptmb8t }{} \DeclareFontShape{T1}{ptm}{b}{sc}{ <-> ptmbc8t }{} \DeclareFontShape{T1}{ptm}{b}{it}{ <-> ptmbi8t }{} \DeclareFontShape{T1}{ptm}{b}{sl}{ <-> ptmbo8t }{} \DeclareFontShape{T1}{ptm}{m}{n}{ <-> ptmr8t }{} \DeclareFontShape{T1}{ptm}{m}{sc}{ <-> ptmrc8t }{} \DeclareFontShape{T1}{ptm}{m}{it}{ <-> ptmri8t }{} \DeclareFontShape{T1}{ptm}{m}{sl}{ <-> ptmro8t }{} \DeclareFontShape{T1}{ptm}{bx}{n}{<->ssub * ptm/b/n}{} \DeclareFontShape{T1}{ptm}{bx}{sc}{<->ssub * ptm/b/sc}{} \DeclareFontShape{T1}{ptm}{bx}{it}{<->ssub * ptm/b/it}{} \DeclareFontShape{T1}{ptm}{b}{ui}{<->ssub * ptm/b/it}{} \DeclareFontShape{T1}{ptm}{bx}{ui}{<->ssub * ptm/b/ui}{} \DeclareFontShape{T1}{ptm}{bx}{sl}{<->ssub * ptm/b/sl}{} \DeclareFontShape{T1}{ptm}{m}{ui}{<->ssub * ptm/m/it}{} \endgroup \endinput From carlisle@ma.man.ac.uk Tue Jul 23 16:05 BST 1996 X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] ["865" "Tue" "23" "July" "1996" "15:50:51" "+0100" "David Carlisle" "carlisle@ma.man.ac.uk" nil "33" "\\pounds" "^From:" nil nil "7" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon [193.131.197.164]) by cadair.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id QAA06857 for ; Tue, 23 Jul 1996 16:05:09 +0100 Received: from epprod.elsevier.co.uk (actually host epprod) by snowdon with SMTP (PP); Tue, 23 Jul 1996 16:06:23 +0100 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by epprod.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id QAA02755 for ; Tue, 23 Jul 1996 16:04:58 +0100 Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id PAA05410; Tue, 23 Jul 1996 15:50:51 +0100 Message-Id: <199607231450.PAA05410@vummath.ma.man.ac.uk> Content-Length: 864 From: David Carlisle To: srahtz@cadair.elsevier.co.uk, alanje@cogs.sussex.ac.uk CC: latex-team@goofy.zdv.uni-mainz.de Subject: \pounds Date: Tue, 23 Jul 1996 15:50:51 +0100 Content-Type: text I'm fed up of trying to make silly `upright italic' fonts with fontinst which are just the same as a roman font but with \pounds in place of $ just so \pounds works out in OT1. In my private version of `times+mathptm'.sty I'm contemplating throwing out all the substitutions for the ui shape. If people ask for \fontshape{ui} explicitly they deserve to get an NFSS warning and some default substitution. For \pounds I want to do the following: \DeclareTextSymbolDefault{\textsterling}{T1} \expandafter\let \csname OT1\string\textsterling\endcsname\@undefined ie make \pounds pick up from T1 even if OT1 fonts are being used. Can not do this for the cm fonts as that forces dc fonts on everyone, but for psnfss they have both encodings anyway. Is this a) a good idea b) unworkable c) Bad because \expandafter\let is not very pure LaTeX. David From carlisle@ma.man.ac.uk Fri Jul 26 11:38 BST 1996 X-VM-v5-Data: ([nil nil nil nil t nil nil nil nil] ["1903" "Fri" "26" "July" "1996" "11:36:09" "+0100" "David Carlisle" "carlisle@ma.man.ac.uk" "<199607261036.LAA17735@vummath.ma.man.ac.uk>" "46" "Re: ?pounds" "^From:" nil nil "7" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon [193.131.197.164]) by cadair.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id LAA15434 for ; Fri, 26 Jul 1996 11:38:32 +0100 Received: from skiddaw.elsevier.co.uk (actually host skiddaw) by snowdon with SMTP (PP); Fri, 26 Jul 1996 11:39:43 +0100 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by skiddaw.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id LAA25549 for ; Fri, 26 Jul 1996 11:39:25 +0100 Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id LAA17735; Fri, 26 Jul 1996 11:36:09 +0100 Message-Id: <199607261036.LAA17735@vummath.ma.man.ac.uk> In-reply-to: <9607261015.AA00958@fell.open.ac.uk> (message from Chris Rowley on Fri, 26 Jul 1996 12:16:49 +0200) Content-Length: 1902 From: David Carlisle To: C.A.ROWLEY@open.ac.uk CC: srahtz@cadair.elsevier.co.uk, latex-team@goofy.zdv.Uni-Mainz.de Subject: Re: ?pounds Date: Fri, 26 Jul 1996 11:36:09 +0100 Content-Type: text > 3. But it is not sufficient simply to put this into, eg, times.sty, since Yes I don't think it can go into the psnfss packages as there it has to be (possibly) mixed with cm fonts. However I have in fact put it into my `pslatex' package available from an archive near you. The point of this package is to totally replace the standard fonts by times/helvetica/courier. Typically by people who would never load any `non standard' fonts. It is a normal package but usually called by a shell script which sticks it in \AtBeginDocument. So the usage is latex file to get cm fonts or pslatex file to get times etc. I had to produce this as soon as 2e came out as Manchester cs department had had a `pslatex' command since at least 1986 and without some such I'd never have got them to switch to 2e. It worked well enough until last week when Graham updated to teTeX and got the new all singing all dancing ps font metrics. And suddenly all the pounds disapeared. While updating the file anyway I thought I'd do it this way this time to save having to make so many strange fonts. The option of using cm is not really an option. These fonts are used to make compact ps files for ftp purposes or for munging into pdf. People dont want a bitmap (or even bakoma) font definition stuck at the top (well they get that anyway from the mathptm fonts, but there's no need to make a virtue of that). If I'm persuaded not to force a T1 pounds then I will make every OT1 font in two forms, with $ and with #. This just seems like a waste of everyone's disk space. > 1. Should you not redefine \textdollar too? Or are you keeping > the pounds sign in the italic fonts? Could do but it's not so bad for $ the only `bad' substitution is a slanted $ instead of an italic one. the real problem is for \pounds as there are no upright pounds or sans-serif pounds in the current OT1 ps font distribution. David From carlisle@ma.man.ac.uk Mon Oct 7 11:48:03 1996 X-VM-v5-Data: ([nil nil nil nil nil t nil nil nil] ["15610" "Mon" "7" "October" "1996" "11:43:38" "+0100" "David Carlisle" "carlisle@ma.man.ac.uk" nil "361" "" "^From:" nil nil "10" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.0/8.8.0) with ESMTP id LAA09534 for ; Mon, 7 Oct 1996 11:48:02 +0100 (BST) Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Mon, 7 Oct 1996 11:47:57 +0100 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by pillar.elsevier.co.uk (8.8.0/8.8.0) with SMTP id LAA17519 for ; Mon, 7 Oct 1996 11:45:07 +0100 (BST) Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id LAA08011; Mon, 7 Oct 1996 11:43:38 +0100 Message-Id: <199610071043.LAA08011@vummath.ma.man.ac.uk> Content-Length: 15609 From: David Carlisle To: s.rahtz@elsevier.co.uk CC: tech-support@math.ams.org, bugs@goofy.zdv.uni-mainz.de, latex-team@goofy.zdv.uni-mainz.de Date: Mon, 7 Oct 1996 11:43:38 +0100 Sebastian, one for you? If you reply, could you keep the CC list, David ------- Start of forwarded message ------- Return-Path: Date: Mon, 7 Oct 1996 09:51:11 +0200 (MET DST) From: jpvial@mail.codix.fr (jp vial) Reply-To: jpvial@mail.codix.fr (jp vial) To: tech-support@math.ams.org Cc: gnats-admin@goofy.zdv.Uni-Mainz.de, latex-team@goofy.zdv.Uni-Mainz.de Subject: amslatex/2277: overrightarrow misplaced with (amsmath AND lucidbry) In-Reply-To: Your message of Sun, 6 Oct 1996 15:51:07 +0200 (MET DST) <199610061351.PAA03428@trudi.zdv.Uni-Mainz.DE> Content-Type: text Content-Length: 14940 >Number: 2277 >Category: amslatex >Synopsis: overrightarrow misplaced with amsmath AND lucidbry >Confidential: yes >Severity: serious >Priority: medium >Responsible: ams (AMS Technical Support) >State: open >Class: sw-bug >Submitter-Id: unknown >Arrival-Date: Mon Oct 7 09:51:09 1996 >Originator: jpvial@mail.codix.fr (Jean-Pierre VIAL) >Organization: >Release: LaTeX2e <1996/06/01> >Environment: Hyphenation: standard \@TeXversion: YandYtex (Standard setting for TeX3.141 and later) \@currdir: macro:->./ \input@path: undefined (Standard setting) >Description: Description of bug: If I use amsmath.sty AND the lucida math fonts with lucidbry.sty overrightarrow and overleftarrow are incorrect: with overrightarrow, the tail of the arrow extends much too far to the left (if the preceding char is for instance a <> as in the test file, the tail of the arrow crosses the <>. with overleft arrow, same thing to the right. with amsmath and cm-fonts, or lucida fonts without amsmath, there is no problem. Overline is also ok with amsmath AND lucida, the incompatibility is just for the over...arrow macros (I did not test the under..arrow macros) >How-To-Repeat: Sample file which indicates the problem: ======================================== \documentclass{article} \usepackage[expert]{lucidbry} \usepackage{amsmath} \begin{document} $\overrightarrow{OM}\quad |\overrightarrow{OM}\quad \overrightarrow{u}\quad|\overrightarrow{u}$ $\overleftarrow{OM}|\qquad \overleftarrow{u}|$ \end{document} The log file from running LaTeX on the sample: ============================================== This is TeX, C Version 3.141 (format=latex 96.7.21) 1996 OCT 6 15:14 **&latex ovrright (d:/yy/fmt/latex.fmt) (ovrright.tex LaTeX2e <1996/06/01> (d:/yy/latex/article.cls Document Class: article 1996/05/26 v1.3r Standard LaTeX document class (d:/yy/latex/size10.clo File: size10.clo 1996/05/26 v1.3r Standard LaTeX file (size option) ) \c@part=\count82 \c@section=\count83 \c@subsection=\count84 \c@subsubsection=\count85 \c@paragraph=\count86 \c@subparagraph=\count87 \c@figure=\count88 \c@table=\count89 \abovecaptionskip=\skip41 \belowcaptionskip=\skip42 \bibindent=\dimen102 ) (d:/yy/latex/psnfss/lucidbry.sty Package: lucidbry 1995/12/11 3.13 Lucida Bright (Y \& Y names) PSNFSS2e package (d:/yy/latex/psnfss/lucbr.sty Package: lucbr 1995/12/11 3.13 Lucida Bright PSNFSS2e package LaTeX Font Info: Redeclaring symbol font `letters' on input line 123. LaTeX Font Info: Overwriting symbol font `letters' in version `normal' (Font) OML/cmm/m/it --> OML/lbm/m/it on input line 123. LaTeX Font Info: Overwriting symbol font `letters' in version `bold' (Font) OML/cmm/b/it --> OML/lbm/m/it on input line 123. \symmathupright=\mathgroup4 LaTeX Font Info: Redeclaring symbol font `symbols' on input line 127. LaTeX Font Info: Overwriting symbol font `symbols' in version `normal' (Font) OMS/cmsy/m/n --> OMS/lby/m/n on input line 127. LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' (Font) OMS/cmsy/b/n --> OMS/lby/m/n on input line 127. LaTeX Font Info: Redeclaring symbol font `largesymbols' on input line 128. LaTeX Font Info: Overwriting symbol font `largesymbols' in version `normal' (Font) OMX/cmex/m/n --> OMX/lbv/m/n on input line 128. LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold' (Font) OMX/cmex/m/n --> OMX/lbv/m/n on input line 128. LaTeX Font Info: Overwriting symbol font `letters' in version `bold' (Font) OML/lbm/m/it --> OML/lbm/b/it on input line 130. LaTeX Font Info: Overwriting symbol font `mathupright' in version `bold' (Font) OML/lbm/m/n --> OML/lbm/b/n on input line 131. LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' (Font) OMS/lby/m/n --> OMS/lby/b/n on input line 132. \symitalics=\mathgroup5 \symarrows=\mathgroup6 \symboldarrows=\mathgroup7 LaTeX Font Info: Redeclaring symbol font `operators' on input line 140. LaTeX Font Info: Overwriting symbol font `operators' in version `normal' (Font) OT1/cmr/m/n --> OT1/lb/m/n on input line 140. LaTeX Font Info: Overwriting symbol font `operators' in version `bold' (Font) OT1/cmr/bx/n --> OT1/lb/m/n on input line 140. LaTeX Font Info: Overwriting symbol font `operators' in version `bold' (Font) OT1/lb/m/n --> OT1/lb/b/n on input line 141. LaTeX Font Info: Overwriting symbol font `operators' in version `normal' (Font) OT1/lb/m/n --> OT1/lb/m/n on input line 142. LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 143. LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal' (Font) OT1/cmr/bx/n --> OT1/lb/b/n on input line 143. LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' (Font) OT1/cmr/bx/n --> OT1/lb/b/n on input line 143. LaTeX Font Info: Redeclaring math alphabet \mathrm on input line 144. LaTeX Font Info: Redeclaring math alphabet \mathsf on input line 145. LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal' (Font) OT1/cmss/m/n --> OT1/lbs/m/n on input line 145. LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' (Font) OT1/cmss/bx/n --> OT1/lbs/m/n on input line 145. LaTeX Font Info: Redeclaring math alphabet \mathit on input line 146. LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal' (Font) OT1/cmr/m/it --> OT1/lb/m/it on input line 146. LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' (Font) OT1/cmr/bx/it --> OT1/lb/m/it on input line 146. LaTeX Font Info: Redeclaring math alphabet \mathtt on input line 147. LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal' (Font) OT1/cmtt/m/n --> OT1/lbt/m/n on input line 147. LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' (Font) OT1/cmtt/m/n --> OT1/lbt/m/n on input line 147. LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' (Font) OT1/lb/b/n --> OT1/lb/b/n on input line 148. LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' (Font) OT1/lbs/m/n --> OT1/lbs/b/n on input line 149. LaTeX Font Info: Overwriting math alphabet `\mathrm' in version `bold' (Font) OT1/lb/m/n --> OT1/lb/b/n on input line 150. LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' (Font) OT1/lb/m/it --> OT1/lb/b/it on input line 151. LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' (Font) OT1/lbt/m/n --> OT1/lbt/b/n on input line 152. LaTeX Font Info: Redeclaring math accent \vec on input line 161. LaTeX Font Info: Redeclaring math accent \dot on input line 162. LaTeX Font Info: Redeclaring math symbol \Gamma on input line 287. LaTeX Font Info: Redeclaring math symbol \Delta on input line 288. LaTeX Font Info: Redeclaring math symbol \Theta on input line 289. LaTeX Font Info: Redeclaring math symbol \Lambda on input line 290. LaTeX Font Info: Redeclaring math symbol \Xi on input line 291. LaTeX Font Info: Redeclaring math symbol \Pi on input line 292. LaTeX Font Info: Redeclaring math symbol \Sigma on input line 293. LaTeX Font Info: Redeclaring math symbol \Upsilon on input line 294. LaTeX Font Info: Redeclaring math symbol \Phi on input line 295. LaTeX Font Info: Redeclaring math symbol \Psi on input line 296. LaTeX Font Info: Redeclaring math symbol \Omega on input line 297. LaTeX Font Info: Redeclaring math symbol \rightleftharpoons on input line 35 6. LaTeX Font Info: Redeclaring math symbol \leftrightharpoons on input line 35 7. LaTeX Font Info: Redeclaring math symbol \angle on input line 440. LaTeX Font Info: Redeclaring math symbol \simeq on input line 539. LaTeX Font Info: Redeclaring math symbol \hbar on input line 562. )) (d:/yy/latex/amslatex/amsmath.sty Package: amsmath 1995/02/23 v1.2b AMS math features \@mathmargin=\skip43 (d:/yy/latex/amslatex/amstext.sty Package: amstext 1995/01/25 v1.2 (d:/yy/latex/amslatex/amsgen.sty File: amsgen.sty 1995/02/01 v1.2a \@emptytoks=\toks14 \ex@=\dimen103 )) (d:/yy/latex/amslatex/amsbsy.sty Package: amsbsy 1995/01/20 v1.2 \pmbraise@=\dimen104 ) (d:/yy/latex/amslatex/amsopn.sty Package: amsopn 1995/02/20 v1.2a operator names ) LaTeX Info: Redefining \frac on input line 181. \uproot@=\count90 \leftroot@=\count91 \classnum@=\count92 \DOTSCASE@=\count93 LaTeX Info: Redefining \dots on input line 328. LaTeX Info: Redefining \ldots on input line 411. LaTeX Info: Redefining \cdots on input line 415. \Mathstrutbox@=\box26 \strutbox@=\box27 \big@size=\dimen105 LaTeX Font Info: Redeclaring font encoding OML on input line 493. LaTeX Font Info: Redeclaring font encoding OMS on input line 494. \skewcharcount@=\count94 \familycount@=\count95 \pointcount@=\count96 \accentdimen@=\dimen106 \accentmu@=\count97 \minaw@=\dimen107 \c@MaxMatrixCols=\count98 \dotsspace@=\muskip10 \c@parentequation=\count99 \dspbrk@lvl=\count100 \tag@help=\toks15 \row@=\count101 \column@=\count102 \maxfields@=\count103 \andhelp@=\toks16 \eqnshift@=\dimen108 \alignsep@=\dimen109 \tagshift@=\dimen110 \tagwidth@=\dimen111 \totwidth@=\dimen112 \lineht@=\dimen113 \@envbody=\toks17 \multlinegap=\skip44 \multlinetaggap=\skip45 ) (ovrright.aux) LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for LMR/lbm/m/n on input line 5. LaTeX Font Info: Try loading font information for LMR+lbm on input line 5. (d:/yy/latex/psnfss/LMRlbm.fd) LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Try loading font information for OT1+lb on input line 5. (d:/yy/latex/psnfss/OT1lb.fd LaTeX Font Info: File OT1lb.fd loading (Y&Ynames) LucidaBright on input line 20. ) LaTeX Font Info: Font shape `OT1/lb/m/n' will be (Font) scaled to size 9.49997pt on input line 5. LaTeX Font Info: Font shape `OT1/lb/m/n' will be (Font) scaled to size 6.93004pt on input line 6. LaTeX Font Info: Font shape `OT1/lb/m/n' will be (Font) scaled to size 5.19997pt on input line 6. LaTeX Font Info: Try loading font information for OML+lbm on input line 6. (d:/yy/latex/psnfss/OMLlbm.fd) LaTeX Font Info: Font shape `OML/lbm/m/it' will be (Font) scaled to size 9.49997pt on input line 6. LaTeX Font Info: Font shape `OML/lbm/m/it' will be (Font) scaled to size 6.93004pt on input line 6. LaTeX Font Info: Font shape `OML/lbm/m/it' will be (Font) scaled to size 5.19997pt on input line 6. LaTeX Font Info: Try loading font information for OMS+lby on input line 6. (d:/yy/latex/psnfss/OMSlby.fd) LaTeX Font Info: Font shape `OMS/lby/m/n' will be (Font) scaled to size 9.49997pt on input line 6. LaTeX Font Info: Font shape `OMS/lby/m/n' will be (Font) scaled to size 6.93004pt on input line 6. LaTeX Font Info: Font shape `OMS/lby/m/n' will be (Font) scaled to size 5.19997pt on input line 6. LaTeX Font Info: Try loading font information for OMX+lbv on input line 6. (d:/yy/latex/psnfss/OMXlbv.fd) LaTeX Font Info: Font shape `OMX/lbv/m/n' will be (Font) scaled to size 9.49997pt on input line 6. LaTeX Font Info: Font shape `OMX/lbv/m/n' will be (Font) scaled to size 6.93004pt on input line 6. LaTeX Font Info: Font shape `OMX/lbv/m/n' will be (Font) scaled to size 5.19997pt on input line 6. LaTeX Font Info: Font shape `OML/lbm/m/n' will be (Font) scaled to size 9.49997pt on input line 6. LaTeX Font Info: Font shape `OML/lbm/m/n' will be (Font) scaled to size 6.93004pt on input line 6. LaTeX Font Info: Font shape `OML/lbm/m/n' will be (Font) scaled to size 5.19997pt on input line 6. LaTeX Font Info: Font shape `OT1/lb/m/it' will be (Font) scaled to size 9.49997pt on input line 6. LaTeX Font Info: Font shape `OT1/lb/m/it' will be (Font) scaled to size 6.93004pt on input line 6. LaTeX Font Info: Font shape `OT1/lb/m/it' will be (Font) scaled to size 5.19997pt on input line 6. LaTeX Font Info: Font shape `LMR/lbm/m/n' will be (Font) scaled to size 9.49997pt on input line 6. LaTeX Font Info: Font shape `LMR/lbm/m/n' will be (Font) scaled to size 6.93004pt on input line 6. LaTeX Font Info: Font shape `LMR/lbm/m/n' will be (Font) scaled to size 5.19997pt on input line 6. LaTeX Font Info: Font shape `LMR/lbm/b/n' will be (Font) scaled to size 9.49997pt on input line 6. LaTeX Font Info: Font shape `LMR/lbm/b/n' will be (Font) scaled to size 6.93004pt on input line 6. LaTeX Font Info: Font shape `LMR/lbm/b/n' will be (Font) scaled to size 5.19997pt on input line 6. [1 ] (ovrright.aux) ) Here is how much of TeX's memory you used: 1179 strings out of 5000 15267 string characters out of 40000 55995 words of memory out of 65534 4055 multiletter control sequences out of 9244 15677 words of font info for 38 fonts, out of 24661 for 511 15 hyphenation exceptions out of 1009 28i,13n,24p,375b,114s stack positions out of 600i,100n,200p,8192b,6000s Output written on ovrright.dvi (1 page, 5012 bytes). ============================================================ End of LaTeX2e bug report. ============================================================ Jean-Pierre Vial >Fix: >Audit-Trail: >Unformatted: LaTeX2e bug report. Generated by latexbug.tex on 1996/10/06 Reports may be submitted by email to latex-bugs@uni-mainz.de Please use the subject line: Subject: overrightarrow misplaced with amsmath AND lucidbry ============================================================ *** Initex configuration files hyphen.cfg *** ------- End of forwarded message ------- From carlisle@ma.man.ac.uk Tue Jan 7 18:12:58 1997 X-VM-v5-Data: ([nil nil nil nil t nil nil nil nil] ["44001" "Tue" "7" "January" "1997" "18:09:15" "GMT" "David Carlisle" "carlisle@ma.man.ac.uk" "<199701071809.SAA24795@vummath.ma.man.ac.uk>" "1318" "mathptm" "^From:" nil nil "1" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.3/8.8.3) with ESMTP id SAA15334 for ; Tue, 7 Jan 1997 18:12:57 GMT Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Tue, 7 Jan 1997 18:12:55 +0000 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by pillar.elsevier.co.uk (8.8.3/8.8.3) with SMTP id SAA08881 for ; Tue, 7 Jan 1997 18:11:52 GMT Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id SAA24795; Tue, 7 Jan 1997 18:09:15 GMT Message-Id: <199701071809.SAA24795@vummath.ma.man.ac.uk> Content-Length: 44000 From: David Carlisle To: alanje@cogs.sussex.ac.uk, s.rahtz@elsevier.co.uk Subject: mathptm Date: Tue, 7 Jan 1997 18:09:15 GMT Any chance that mathptm could go \let\@tempa\version@elt \def\version@elt#1{% \ifx\mv@bold#1\else\noexpand\version@elt\noexpand#1\fi} \edef\version@list{\version@list} \let\version@elt\@tempa \let\mv@bold\@undefined as well as \def\boldmath{% \@warning{there is no bold Symbol font}% \global\let\boldmath=\relax } (by the way that should be \PackageWarning{mathptm} :-) This really removes the bold math version internal data structures which saves a bit of space but more importantly it means I can test reliably for the presence or not of a workable set of bold math fonts by going \ifx\mv@bold\@undefined .... The mathtime package does this (in fact I just copied it from there:-) Or at least it will when the new FMi/DPC mathtime support hits the streets (not announced yet). In a similar vein, stmaryrd.sty goes \SetSymbolFont{stmry}{bold}{U}{stmry}{b}{n} which is a bit of a pain as there is no bold font (I think?) and then it relies on the fd file substitution to get back to m weight. This means I have to go \SetSymbolFont{stmry}{bold}{U}{stmry}{m}{n}% so that the `bm' package can recognise that there is no bold font. \bm is a bit like \boldsymbol but takes a `bit' more care over getting the spacing right, expanding its argument down to primitive tokens and then dissasembling the mathcodes/delcodes, math class etc and re-constructing a token with the same math spacing but bold. Either by changing the \fam if the bold font is allocated in the normal math version (done for the standard symbol fonts, so it works with delimiters accents etc) otherwise it uses a \mathcoice/\boldmath construct if it thinks that there is a bold math version with a different font allocated for the current slot. or a `poor man's bold' overprinting fudge if not. Seems to work OK (I think Berthold might even pay for it:-) but currently its automatic interogation of the math version setup is thrown off line by mathptm and stmaryrd... David In case you want to play... ================== \def\batchfile{bm.ins} \input docstrip.tex \preamble \endpreamble \keepsilent \generateFile{bm.sty}{f}{\from{bm.dtx}{package}} ================== % % \iffalse %% Copyright 1996 1997 David Carlisle Frank Mittelbach %% %% TEST VERSION NOT FOR DISTRIBUTION % % %<*dtx> \ProvidesFile{bm.dtx} % %\NeedsTeXFormat{LaTeX2e} %\ProvidesPackage{bm} %\ProvidesFile{bm.drv} % \fi % \ProvidesFile{bm.dtx} [1997/01/06 v0.11 Bold Symbol Support (DPC/FMi)] % % \iffalse %<*driver> \documentclass{ltxdoc} \usepackage{bm} \DocInput{bm.dtx} \end{document} % % \fi % % \CheckSum{722} % % \GetFileInfo{bm.dtx} % \begin{document} % \title{The \textsf{bm} package\thanks{This file % has version number \fileversion, last % revised \filedate.}} % % \date{\filedate} % \author{David Carlisle with support by Frank Mittelbach} % \maketitle % % \section{Introduction} % % This package defines commands to access bold math % symbols. The basic command is |\bm| which may be used to make the % math expression in its argument be typeset using bold fonts. % % The syntax of |\bm| is:\\ % |\bm|\marg{math expression}\\ % So |$\alpha \not= \bm{\alpha}$| produces $\alpha \not= \bm{\alpha}$. % % |\bm| goes to some trouble to preserve the spacing, so that for % instance |\bm<| is a bold $\bm<$ but with the correct |\mathrel| % spacing that \TeX\ gives to $<$. The calculations that \TeX\ needs to % do for |\bm| can be quite involved and so a definition form is % provided. % % |\DeclareBoldMathCommand|%^^A % \oarg{math version}\marg{cmd}\marg{math expression} % % Defines |\cmd| to be the bold form of the math expression. % The \meta{math version} defaults to `bold' (i.e., |\boldmath|). % % For relatively simple expressions, the resulting definitions are very % efficient, for instance after:\\ % |\DeclareBoldMathCommand\balpha{\alpha}|\\ % |\balpha| is a single `mathchardef' token producing a bold alpha, % and so is just as fast to execute as |\alpha|. % % The above command is mainly intended for use in packages. % For occasional use in \LaTeX\ documents, and for compatibility % with the plain \TeX\ support for the mathtime fonts, a `user-level' % version, |\bmdefine| is provided that is equivalent to:\\ % |\DeclareBoldMathCommand[bold]|. % % If there is a `heavy' math version defined (usually accessed by a % user-command |\heavymath|) then a similar command |\hm| % is defined which access these `ultra bold' fonts. Currently this is % probably only useful with the `mathtime plus' font collection. % Definitions of commands that use these fonts may be made by % specifying the optional argument `heavy' to |\DeclareBoldMathCommand|. % Again an abbreviation, |\hmdefine|, is provided, equivalent to:\\ % |\DeclareBoldMathCommand[heavy]|. % % The command names (but not the implementation) are taken from Michael % Spivak's macros to support the mathtime fonts for plain \TeX. In those % original macros, the syntax for |\bmdefine| was % |\bmdefine\balpha{\bm\alpha}| (with a nested |\bm|). This syntax also % works with this package. % % \section{Features} % In most cases this package should work in a fairly self explanatory % way, but there are some things that might not be obvious. % % \subsection{Interaction with Math Alphabet Commands} % % As mentioned above, |\bm| goes to some trouble to try to make a % command that is just like its argument, but using a bold font. % This does not always produce the effect that you might expect. %\begin{verbatim} % $1 g \bm{g}$ % $2 \mathrm{g \bm{g}}$ % $3 {g} \bm{{g}}$ % $4 \mathrm{{g} \bm{{g}}}$ % $5 \mathrm{g} \bm{\mathrm{g}}$ %\end{verbatim} % produces the following: % \begin{flushleft} % $1 g \bm{g}$ % $2 \mathrm{g \bm{g}}$ % $3 {g} \bm{{g}}$ % $4 \mathrm{{g} \bm{{g}}}$ % $5 \mathrm{g} \bm{\mathrm{g}}$ % \end{flushleft} % In math mode `g' is effectively a command that produces the letter `g' % from the `letters' alphabet, unless a Math Alphabet command is in % effect, in which case the `g' comes from the specified alphabet. % |\bm{g}| makes an equivalent command, but which defaults to a bold % letter alphabet. So in the first example |\bm{g}| is bold math italic, % but in the second example the |\mathrm| applies to both |g| and % |\bm{g}| in the same way, and so they are both roman. % % |\bm| only inspects the `top level' definition of a command, for more % complicated expressions, and anything inside a |{ }| group, |\bm| % forces bold fonts by essentially the same (slow) technique used by the % AMS |\boldsymbol| command (but |\bm| still takes more care of the % spacing). So the third example produces identical output to the first % (but \TeX\ takes more time producing it). % % In the fourth example the |\mathrm{\bm{g}}| is essentially % equivalent to |\mathrm{\mbox{\boldmath$g$}}|. Currently math alphabet % settings are not passed down to `nested' math lists, and so in this % example, the |\mathrm| has no effect, and a bold math italic $\bm g$ % is obtained. % % Similarly the last example is equivalent to % |$\mbox{\boldmath$\mathrm{g}$}}| and so in this case, one obtains a % bold roman \textbf{g}. % % \subsection{Delimiters} % \TeX\ can treat character tokens in two\footnote % {Well more than two really.} % ways. If there is a preceding % |\left| or |\right| it can treat them as a delimiter, otherwise it can % treat them as a standard character. For example |\left<\right>| % produces $\left<\right>$, which is totally different from |<>|, which % produces $<>$. % % \TeX\ can only do this for character tokens. Commands such as % |\langle| do not act in this way. This means that |\bm| has to decide % whether to treat a character as a delimiter or not. The rule it uses % is, it makes a delimiter command for a character if the previous % token in the argument was |\left| or |\right|. So |\left\bm{<}| does % not work, but |\bm{\left<}| does. % % \subsection{Command Arguments} % % Normally if a command takes arguments the full command, including % any arguments, should be included in |\bm|. % % So |\bm{\overbrace{abc}}| (producing \smash{$\bm{\overbrace{abc}}$}) % not % |\bm{\overbrace}{abc}|. If you do not include all the arguments you % will typically get the error message:\\ % |Runaway argument?|\\ % |! Forbidden control sequence found while scanning use of| % \texttt{\ldots} % % However commands defined in terms of the \TeX\ accent and % radical primitives \emph{may} be used without their arguments. % So |\bm{\hat}{a}| produces $\bm{\hat}{a}$, a bold accent over a % non-bold $a$ (compare $\hat{a}$) % whereas |\bm{\hat{a}}| makes both the $a$ and the accent bold, % $\bm{\hat{a}}$. % Similarly, although the \LaTeX\ command |\sqrt| must be used with its % arguments, |\sqrtsign| may be used as in |\bm\sqrtsign{abc}| to % produce $\bm\sqrtsign{abc}$ rather than $\sqrtsign{abc}$ or % $\bm{\sqrtsign{abc}}$ % % If you really need to make a command with arguments use bold fonts % without making all of the arguments bold, you can explicitly % reset the math version in the argument, eg:\\ % $\begin{array}{ccc} % |\sqrt{xyz}|&|\bm{\sqrt{xyz}}|&|\bm{\sqrt{\mbox{\unboldmath$xyz$}}}|\\ % \sqrt{xyz}& \bm{\sqrt{xyz}}& \bm{\sqrt{\mbox{\unboldmath$xyz$}}} % \end{array}$ % % \subsection{Bold fonts} % This package interrogates the font allocations of the bold and heavy % math versions, to determine which bold fonts are available. % This means that it is best to load the package \emph{after} % any packages that define new symbol fonts, or (like the % \textsf{mathtime} package) completely change the symbol font % allocations. % % If no bold font appears to be available for a particular symbol, % |\bm| will use `poor man's bold' that is, overprinting the same % character in slightly offset % positions to give an appearance of boldness. % % In the standard Computer Modern font set, there is no bold % `large symbols' font. In the `mathptm' and (standard) mathtime % font sets there are no bold math fonts. In the `mathtime plus' % font set there are suitable fonts for bold and heavy math setting, % and so |\bm| and |\hm| work well. % % \subsection{Strange failures} % In order to get the correct spacing, |\bm| has to `investigate' the % definition of the commands in its argument. It is possible that % some strange constructions could `confuse' this investigation. % If this happens then \LaTeX\ will almost certainly stop with a strange % error. This should not happen with any of the math symbols % defined in the base \LaTeX\ or AMS distributions, or any commands % defined in terms of those symbols using normal \LaTeX\ math % constructs. However if some command does fail to work inside |\bm| % you should always be able to surround it with an extra set of braces % |\bm{{\cmd}}| rather than |\bm{\cmd}|. |\bm| will not then attempt % to set the correct spacing, so you may need to set it explicitly, % for instance, for a relation, |\bm{\mathrel{\cmd}}|. % % \StopEventually{} % % \section{Implementation} % % \changes{v0.01}{1996/12/01} % {Initial DPC attempt, % remove all assumptions about mathtime encoding} % \changes{v0.02}{1996/12/02} % {Add \cs{mathcoice} stuff} % \changes{v0.03}{1996/12/12} % {Completely reimplement (again). Add \cs{bmdefine}.} % \changes{v0.04}{1996/12/12} % {Add \cs{hm} and support for special active mathcode.} % \changes{v0.05}{1996/12/12} % {Assorted fixes} % % % % The commands |\bm| and |\hm| work by defining a number of additional % symbol fonts corresponding to the standard ones % `operators', `letters', `symbols', and `largesymbols'. % The names for these symbols fonts are produced by prefixing the usual % name with `bold' or `heavy'. % % For maximum flexibility we get the font definitions by looking in the % corresponding math versions, i.e., into |\mv@bold| and if defined into % |\mv@heavy|. % % \begin{macrocode} %<*package> % \end{macrocode} % \changes{v0.09}{1996/12/19} % {Always define \cs{bm} even if no bold math} % % \changes{v0.10}{1997/01/04} % {Macro added} % \begin{macro}{\bm@table} % \begin{macro}{\bm@boldtable} % \begin{macro}{\bm@heavytable} % The table, |\bm@table|, (which is locally |\let| to either the bold % or heavy version) defines, for each \meta{math group} (\meta{fam}), % the `offset' to the bold version of the specified symbol font. % If there is no bold symbol font defined, the offset will be % set to zero if there is a bold font assigned to this slot in the % bold math version, or $-1$ if the font in the bold math version % is the same as the one in the normal math version. In this case % a `poor man's bold' system of overprinting is used to achieve % boldness where this is possible. % % The settings are made at the time this package is read, and so % it is best to load this package late, after any font loading packages % have been loaded. Symbol fonts loaded after this package will get the % offset of zero, so they will still be made bold by |\bm| as long as an % appropriate font is declared for the bold math version. % % |\bm@boldtable| and |\bm@heavytable| are set up using very similar % code, which is temporarily defined to |\bm|, to save wasting a csname. % Similarly |\bm@pmb|\ldots\ (which will be defined later) are used % as scratch macros. % % The general plan. Run through the fonts allocated to the normal math % version. Ignore \meta{math alphabet} allocations\footnote{For now?} % but for each math symbol font, look in the math version specified by % |#1| (bold or heavy). If the font there is different, then allocate % a new symbol font in the normal math version to access that bold font % and place the numerical difference between the allocations of the bold % and normal font into the table being built (|\bm@boldtable|, if |#1| % is bold). If the symbol allocation is already greater than |\bm@max| % do not allocate a new symbol font, but rather set the offset in the % table to zero. |\bm| will detect this, and use |\boldmath| on its % argument in this case, so the bold font will be accessed but more % slowly than using a direct access to a bold font allocated into the % normal math version. If the font allocated in the bold math version is % the same as the font in the normal math version, set the offset to % $-1$, which is a flag value that causes |\bm| to use `poor man's bold' % overprinting three copies of the symbol, offset slightly to give an % appearance of boldness. % % Fonts containing delimiters and math accents \emph{must} be allocated % into the normal math version if they are to be used with |\bm|. (In % these cases |\bm| will produce the normal weight symbol, rather than % using |\boldmath| or poor man's bold.) % % \begin{macrocode} \def\bm#1{% % \end{macrocode} % This code can not work inside a group, as that would affect any symbol % font allocations, so instead use some scratch macros to save and % restore the definitions of commands we need to change locally. % \begin{macrocode} \let\bm@pmb\install@mathalphabet \let\bm@pmb@\getanddefine@fonts \let\bm@pmb@@\or % \end{macrocode} % Make |\or| non-expandable, so we can build an |\ifcase| bit-by-bit % in a sequence of |\edef|s. % \begin{macrocode} \let\or\relax % \end{macrocode} % % Initialise the table (to |\@gobble| to remove the first |\or|). % \begin{macrocode} \expandafter\let\csname bm@#1table\endcsname\@gobble % \end{macrocode} % % Helper macro that adds the next entry to the table being built. % \begin{macrocode} \def\bm@define##1{% \expandafter\xdef\csname bm@#1table\endcsname{% \csname bm@#1table\endcsname\or##1}}% % \end{macrocode} % % Each symbol font is recorded in the math version list by a sequence % such as:\\ % | \getanddefine@fonts \symsymbols \OMS/cmsy/m/n|\\ % Where the first argument is a chardef token carrying the number % allocated (to symbols, in this example), and the second argument is a % csname whose \emph{name} denotes the font used. % So locally redefine |\getanddefine@fonts| to compare |#2| with % the name in the appropriate slot in the bold math version. % \begin{macrocode} \def\getanddefine@fonts##1##2{% \def\@tempa{##2}% % \end{macrocode} % % \begin{macrocode} \def\@tempb####1##1####2####3\@nil{\def\@tempb{####2}}% % \end{macrocode} % % \begin{macrocode} \expandafter\expandafter\expandafter \@tempb\csname mv@#1\endcsname\@nil % \end{macrocode} % % Now |\@tempa| and |\@tempb| contain the names of the fonts allocated % to this slot in the two math versions. % \begin{macrocode} \ifx\@tempa\@tempb % \end{macrocode} % If they are the same, set this offset to $-1$, as a flag to use % poor man's bold. % \begin{macrocode} \bm@define\m@ne \else % \end{macrocode} % Else make a new name by adjoining |#1| to the name of the symbol font % eg, |\symboldsymbols| to match |\symsymbols|. If that font has already % been allocated, or if we are below |\bm@max| then the table will be % set with the offset between the two fonts. otherwise set the offset to % zero (so |\boldmath| will be used to access the font). % \begin{macrocode} \edef\@tempa{sym#1\expandafter\@gobblefour\string##1}% \ifnum##1>% \expandafter\ifx\csname\@tempa\endcsname\relax \bm@max \else \maxdimen \fi % \end{macrocode} % % \begin{macrocode} \bm@define\z@ \else % \end{macrocode} % % If the font is not yet allocated, allocate it now, using % an internal hack into |\DeclareMathSymbolFont|. % \begin{macrocode} \expandafter\ifx\csname\@tempa\endcsname\relax \begingroup \escapechar\m@ne \edef\@tempb{\endgroup \noexpand\split@name \expandafter\string\@tempb}% \@tempb/\@nil \expandafter\new@mathgroup\csname\@tempa\endcsname \expandafter\new@symbolfont\csname\@tempa\endcsname \f@encoding\f@family\f@series\f@shape \else % \end{macrocode} % If the font has been allocated already, use the existing allocation. % \begin{macrocode} \PackageInfo{bm}% {Symbol font \@tempa\space already defined.\MessageBreak Not overwriting it}% \fi % \end{macrocode} % Whether the font has just been allocated, or whether it was previously % allocated, compute the offset and add it to the table. % \begin{macrocode} \count@\csname\@tempa\endcsname \advance\count@-##1% \bm@define{\the\count@\relax}% \fi \fi}% % \end{macrocode} % % The math version list also contains information about math alphabet % commands, but we want to ignore those here, so \ldots % \begin{macrocode} \let\install@mathalphabet\@gobbletwo % \end{macrocode} % % Having set up the local definitions, execute the list for the normal % math version. % \begin{macrocode} \mv@normal % \end{macrocode} % % So now the offsets are all entered into the table, separated by % |\or|. % Finish off the definition by making this an |\ifcase|. Add a default % value of zero, so that any symbol fonts declared later will also % work, as long as a bold version is assigned to the bold math version. % \begin{macrocode} \expandafter\xdef\csname bm@#1table\endcsname{% \noexpand\ifcase\@tempcnta \csname bm@#1table\endcsname \noexpand\else \z@ \noexpand\fi}% % \end{macrocode} % % Put things back as they were. % \begin{macrocode} \let\install@mathalphabet\bm@pmb \let\getanddefine@fonts\bm@pmb@ \let\or\bm@pmb@@} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\bm@max} % To save declaring too many symbol fonts, do not auto-declare % any bold symbol fonts for symbol fonts in slots higher than % |\bm@max|. The same number is used for the heavy fonts, so with this % setting of four, potentially eight new fonts could be declared % in addition to the four original symbol fonts, just leaving space for % four math alphabets. If this is set to a higher value before this % package is loaded, keep that value. % \begin{macrocode} \ifx\bm@max\@undefined \chardef\bm@max=4 \fi % \end{macrocode} % % If there is no bold math version, It is very easy to set up % the table, no need to use all the tricky code above. % Also, at the end of the package redefine the internal macro % that |\bm| uses to call |\boldmath|, to use poor man's bold % instead. % \begin{macrocode} \ifx\mv@bold\@undefined \def\bm@boldtable{\m@ne} \AtEndOfPackage{% \def\bm@gr@up#1#2{% \bm@pmb{#2}}} \else % \end{macrocode} % Otherwise use the definition of |\bm| above to set up |\bm@boldtable| % by comparing the fonts available in the normal and bold math versions. % \begin{macrocode} \bm{bold} % \end{macrocode} % % \begin{macro}{\mathbf} % As the bold font has been defined as a symbol font, make |\mathbf| % access that rather than have it allocate a new math group for the % same font. % \begin{macrocode} \DeclareSymbolFontAlphabet\mathbf{boldoperators} % \end{macrocode} % \end{macro} % % \begin{macrocode} \fi % \end{macrocode} % % Similarly if there is a heavy math version, set up |\bm@heavytable|. % (If there is no heavy math version, do nothing here, as |\hm| will be % set to |\bm| later, once that is defined.) % \begin{macrocode} \ifx\mv@heavy\@undefined \else \bm{heavy} \fi % \end{macrocode} % \end{macro} % % % \begin{macro}{\bm@general} % |\bm| is pretty much |\bmdefine\bm@command| followed by executing % |\bm@command|. It would in principle be possible to execute the % emboldened tokens directly, rather than building up a macro first, % but (as I learned the hard way) it's difficult to do this in the midst % of all these nested |\if| constructs. % First extract the central bit of code for |\hm| |\bm| |\hmdefine| and % |\bmdefine|. Note that in the case of the inline versions they take % an argument and brace it, rather than relying on |\bm@general| to pick % up the argument. This makes the code robust with respect to premature % expansion. % \begin{macrocode} \def\bm@general#1#2#3#4{% \begingroup % \end{macrocode} % First locally disable |\bm| and |\hm|, as they would mess things % up terribly, and the original Spivak versions used the syntax % |\bmdefine\balpha{\bm\alpha}|. % \begin{macrocode} \let\bm\@empty \let\hm\@empty % \end{macrocode} % Now initialise The commands used to save the tokens constructed. % \begin{macrocode} \global\let\bm@command\@empty \let\@let@token\@empty % \end{macrocode} % As we want to expand the macros to look at their definition % turn off protection. Otherwise the |\protect| will be carried over % and apply to the wrong token, eg |{|. % \begin{macrocode} \let\protect\@empty \let\@typeset@protect\@empty % \end{macrocode} % Set up either bold or heavy % \begin{macrocode} \def\bm@mathchoice{\bm@m@thchoice#1}% \def\bm@group{\bm@gr@up#1}% \let\bm@table#2% % \end{macrocode} % These two save on the number of |\ifx| tests below. % \begin{macrocode} \let\right\left \let\mskip\mkern % \end{macrocode} % For optional argument commands. This expandable version of % |\@ifnextchar| is not 100\% safe, but works for |\sqrt| unless % you put something really strange in the arguments. % \changes{v0.11}{1997/01/06} % {\cs{@ifnextchar} made safe.} % \begin{macrocode} \def\@ifnextchar##1##2##3##4{% \if##1##4% \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi {##2##4}{##3{##4}}}% % \end{macrocode} % For AMS definitions. % \begin{macrocode} \let\DN@\copy \let\FN@\copy \let\next@\copy \global\let\bm@first\@empty % \end{macrocode} % Make sure things like |\pounds| take the `math branch' even % in |\bmdefine| (which is not executed in math mode). % \begin{macrocode} \let\ifmmode\iftrue % \end{macrocode} % The last redefinition just makes |\mathit| type commands re-insert % themselves (more or less) as if they are allowed to expand % they die horribly if the expansions are put into |\mathchoice| % and so executed more than once. % \begin{macrocode} \def\select@group##1##2##3##4{{% \protect##1{##4}}}% \def\use@mathgroup##1##2##3{{% \protect\use@mathgroup##1{##2}{##3}}}% % \end{macrocode} % % So now start looking at the argument. % \changes{v0.10}{1997/01/04} % {Use \cs{bm@end}} % \begin{macrocode} \bm@expand#4\bm@end \endgroup % \end{macrocode} % % Finally outside the group either execute |\bm@command| (for |\bm|) % or save its definition (for |\bmdefine|). % \begin{macrocode} #3} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm} % Set up the bold (rather than heavy) version, and run |\bm@command| % right at the end, to execute the emboldened argument. % \begin{macrocode} \DeclareRobustCommand\bm[1]{% \bm@general\boldmath\bm@boldtable\bm@command{#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\DeclareBoldMathCommand} % \changes{v0.07}{1996/12/14} % {Macro added} % \begin{macro}{\bm@declare} % \changes{v0.07}{1996/12/14} % {Macro added} % |DeclareBoldMathCommand|%^^A % \oarg{mathversion}\marg{command}\marg{math expression}\\ % looks like |\bm| except at the end the specified command is % globally defined to be |\bm@command|. % The \meta{mathversion} defaults to `bold'. % \begin{macrocode} \def\DeclareBoldMathCommand{\@testopt\bm@declare{bold}} % \end{macrocode} % % \begin{macrocode} \def\bm@declare[#1]#2{% \expandafter\bm@general \csname #1math\expandafter\endcsname \csname bm@#1table\endcsname {\bm@define#2}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\bmdefine} % |\bmdefine| Shorthand for |\DeclareBoldMathCommand[bold]|. % % |\bm| is empty within the definition, so that either\\ % |\bmdefine\balpha{\bm\alpha}| or |\bmdefine\balpha{\alpha}| \\ % may be used. (The former just for compatibility with the original % version for plain \TeX). % \begin{macrocode} \def\bmdefine{\DeclareBoldMathCommand[bold]} % \end{macrocode} % \end{macro} % % \begin{macro}{\hm} % \begin{macro}{\hmdefine} % Same again for |\hm|. % \begin{macrocode} \ifx\mv@heavy\@undefined % \end{macrocode} % % If there is no heavy math version defined, let |\hm| be defined % as |\bm|. Currently there is no warning given, perhaps there should % be, or even an error? % \begin{macrocode} \let\hm\bm \let\heavymath\boldmath \let\bm@heavytable\bm@boldtable % \end{macrocode} % % \begin{macrocode} \else % \end{macrocode} % % Otherwise define |\hm| and |\hmdefine| in direct analogy with the % above. % \begin{macrocode} \DeclareRobustCommand\hm[1]{% \bm@general\heavymath\bm@heavytable\bm@command{#1}} % \end{macrocode} % % \begin{macrocode} \def\hmdefine{\DeclareBoldMathCommand[heavy]} % \end{macrocode} % % \begin{macrocode} \fi % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\bm@end} % \changes{v0.10}{1997/01/04} % {Macro added} % Normally speaking |\outer| declarations should be avoided at all % costs. (\LaTeX\ redefines all of plain \TeX's allocation macros % to be non-outer.) However this is one place where it seems like a % good idea. If a command taking an argument is put in |\bm| without % its argument, then the |\@@end| terminating token would be taken as % the argument, and so the rest of the paragraph would be gobbled up % and the \LaTeX\ would die horribly. So make the internal terminating % token |\outer|. (The actual test for termination is made against % |@@end| not |\bm@end| as this macro will be expanded by the look-ahead % system.) % \begin{macrocode} \outer\def\bm@end{\@@end} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@expand} % \changes{v0.11}{1997/01/06} % {Double up.} % \begin{macro}{\bm@exp@nd} % \changes{v0.11}{1997/01/06} % {Macro added} % |\afterassignment| trick to fully expand the following tokens until % the first non-expandable token is revealed. This may discard a space % token (which is what \TeX\ is looking for) but that doesn't matter in % math mode. The expansion lookahead is done twice in case any stray % space tokens have crept in.\footnote{The need for this was noticed % while testing \cs{sqrt}. The definition of \cs{root} inherited from % plain \TeX\ has an anomalous space token, that is normally harmless % (just wastes memory), but which killed earlier versions of this % package.} % \begin{macrocode} \def\bm@expand{\afterassignment\bm@exp@nd\count@`\a} % \end{macrocode} % % \begin{macrocode} \def\bm@exp@nd{\afterassignment\bm@test\count@`\a} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\bm@test} % Normally we will grab the non-expandable token as a macro argument % but better check it is not |{| first. Save the previous token % so we can check later if it was |\left|, in which case use the delcode % rather than the mathcode if the current token is a character. % \begin{macrocode} \def\bm@test{% \let\bm@previous\@let@token \futurelet\@let@token\bm@test@} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@test@} % If looking at a single token, switch to |\bm@test@token|, else if % looking at a |{ }| group, grab the whole group with |\bm@group|. % A |\bgroup| token will take the wrong branch here (currently not % trapped). % \begin{macrocode} \def\bm@test@{% \ifx\@let@token\bgroup \expandafter\bm@group \else \expandafter\bm@test@token \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@gr@up} % If faced with a group, % If we are in math mode, stick it in a |\boldsymbol| like construct % and then recurse on |\bm@expand|. % Otherwise just use |\bfseries\boldmath|. % The actual test is deferred till `run time'. % Here and elsewhere could deal with the inner list with an inner call % to |\bm|, but that doesn't seem to gain very much, and complicates the % code quite a bit. % % |#1| is either |\boldmath| or |\heavymath|. % \begin{macrocode} \def\bm@gr@up#1#2{% \bm@add{{\bm@gr@@p#1{#2}}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@gr@@p} % |#1| is either |\boldmath| or |\heavymath|. % \begin{macrocode} \def\bm@gr@@p#1#2{% \ifmmode \bm@mchoice#1{#2}{#2}{#2}{#2}% \else \bfseries#1#2% \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@test@token} % If not facing a |{ }| group then test to see what we have. % Basic idea: Trap |\mathchardef| tokens, character tokens, and calls to % |\mathchar|, |\mathaccent|, etc, and change the \emph{math-group} % (fam) to point at the bold version. % Other things just copy straight over to the command being built. % (Anything inside a |\mathop| or similar will end up being made bold % as the |\mathop| will be copied over, but its argument will be made % bold by the group code above. % \begin{macrocode} \def\bm@test@token#1{% \let\bm@next\@empty % \end{macrocode} % % Stop here. Note that it is vital that the terminating token % is non-expandable and defined, rather than the usual \LaTeX\ % terminators |\@nil| or |\@@|. (Worse still would be a `quark' % like |docstrip|'s |\qStop|.) % \begin{macrocode} \ifx#1\@@end % \end{macrocode} % % |\bm@mathchoice| uses macro arguments, so need to make the tail % recursion explicit here. All the other cases recurse by way of % |\afterassignment| which means all the trailing |\fi| are eaten % while making the assignment. % \begin{macrocode} \else\ifx#1\mathchoice \let\bm@next\bm@mathchoice % \end{macrocode} % % The main point: Find these expressions, and change the mathgroup. % \begin{macrocode} \else\ifx#1\mathchar \afterassignment\bm@mathchar\count@ \else\ifx#1\mathaccent \afterassignment\bm@mathaccent\count@ \else\ifx#1\delimiter \afterassignment\bm@delimiter\count@ \else\ifx#1\radical \afterassignment\bm@radical\count@ % \end{macrocode} % % Need to trap spaces otherwise digits will get turned to bold % mathchars. % \begin{macrocode} \else\ifx#1\mkern \bm@register#1{\muskip\z@}% \else\ifx#1\kern \bm@register#1\dimen@ \else\ifx#1\penalty \bm@register#1\count@ % \end{macrocode} % % \begin{macrocode} \else\ifcat\noexpand#1\relax % \end{macrocode} % Other command, look if it's a mathchardef token (otherwise just add % it). % \begin{macrocode} \xdef\meaning@{\meaning#1}% \expandafter\bm@mchar@test\meaning@""\@nil#1% % \end{macrocode} % Character token. % If it is of catcode 11 or 12, get its mathcode. % If that is |"80000| bail out and just copy the character else % if the previous token was |\left| or |\right|, get the delcode % instead of the mathcode. % This currently means the $'$ in |a'| does not go bold. % but you can use |a^\prime| % \begin{macrocode} \else\ifcat.\ifcat a#1.\else#1\fi \ifx\bm@previous\left \count@\delcode`#1% \bm@delimiter \else \count@\mathcode`#1\relax \ifnum\count@=\mathcode`\'% \bm@add{#1}% \else \bm@mathchar \fi \fi \else % \end{macrocode} % And final possibility: % a character token of catcode other than 11 or 12. % \begin{macrocode} \bm@add{#1}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \bm@next} % \end{macrocode} % \end{macro} % % % \begin{macro}{\bm@define} % \changes{v0.08}{1996/12/18} % {Defined commands now always robust} % End code for |\bmdefine|. Define the given command name to the % robust form of the accumulated code. % % If |\bm@command| is equal to |\@gtempa| then it is a macro whose % expansion is a single call to |\mathchar|, so that can be optimised % with a |\mathchardef|. % \begin{macrocode} \def\bm@define#1{% \begingroup \ifx\bm@command\@gtempa \def\mathchar{\global\mathchardef#1}% \bm@command \else % \end{macrocode} % Rather than simply |\let#1\bm@command|, make the defined command % robust. |\bm@first| is normally empty, but might be something like % |\DOTSI| which needs to be lifted to the top level, in front % of any |\protect| because of the lookahead mechanism used % in the \textsf{amsmath} package. % \begin{macrocode} \toks@\expandafter{\bm@command}% \xdef#1{\bm@first\noexpand\bm@protect\noexpand#1{\the\toks@}}% \fi \endgroup} % \end{macrocode} % \end{macro} % % % \begin{macro}{\bm@protect} % \changes{v0.08}{1996/12/18} % {macro added} % Commands defined by |\bmdefine| re-insert themselves % if protection is enabled. % \begin{macrocode} \def\bm@protect#1{% \ifx\protect\@typeset@protect \expandafter\@firstofone \else \protect#1\expandafter\@gobble \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@mchoice} % |\boldsymbol|, more or less. % |#1| is either |\boldmath| or |\heavymath|. % \begin{macrocode} \def\bm@mchoice#1#2#3#4#5{% \mathchoice{\hbox{#1$\displaystyle\m@th#2$}}% {\hbox{#1$\textstyle\m@th#3$}}% {\hbox{#1$\scriptstyle\m@th#4$}}% {\hbox{#1$\scriptscriptstyle\m@th#5$}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@m@thchoice} % Action if you find a |\mathchoice|. Add the bold version to % |\bm@command| then recurse. % % |#1| is either |\boldmath| or |\heavymath|. % \begin{macrocode} \def\bm@m@thchoice#1#2#3#4#5{% \bm@add{\bm@mchoice#1{#2}{#3}{#4}{#5}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@register} % \changes{v0.07}{1996/12/14} % {Macro added} % Combined code for setting up |\bm@r@gister| with the correct % register type. % \begin{macrocode} \def\bm@register#1#2{% \def\@tempa{#1\the#2}% \afterassignment\bm@r@gister#2} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@r@gister} % \changes{v0.06}{1996/12/12} % {Support \cs{mskip}} % \changes{v0.07}{1996/12/14} % {Combine all register macros} % |\mkern| itself would transfer to |\bm@command| without any special % test, but any explict dimension following would be converted to % |\mathchar|. So trap this and grab the muskip as a muskip. % This is used in |\iiint|. |\penalty| was needed for the % AMS version of |\colon|, and so do most of the others as well. % \begin{macrocode} \def\bm@r@gister{% \bm@xadd{\@tempa\space}} % \end{macrocode} % \end{macro} % % % \begin{macro}{\bm@mathchar} % \changes{v0.10}{1997/01/04} % {Modify to use \cs{boldmath} or \cs{pmb} if needed.} % Change the family (math group) of a mathcode and then % use the modified code with |\mathchar|. If there is no % suitable bold font in the current math version, use the original % unmodified mathcode, but switch to |\boldmath| (if there is a bold % font there) or use `poor man's bold'. Note that these other % possibilities are only possible here, not for the otherwise similar % code for |\delimiter| or |\mathaccent|, as those commands % must work with fonts from the same math version. % % Finally recurse down the list. % \begin{macrocode} \def\bm@mathchar{% % \end{macrocode} % % \begin{macrocode} \@tempcntb\count@ \let\@tempa\bm@group % \end{macrocode} % % |\bm@changefam| will isolate the math group from the mathcode % and look up the offset in the current table. % \begin{macrocode} \bm@changefam{}% % \end{macrocode} % % If the mathcode has changed, then just add the new |\mathchar| % (saving |\@gtempa| allows |\bmdefine| to optimise this to a % mathchardef if it turns out to be the only symbol in the argument). % \begin{macrocode} \ifnum\count@>\@tempcntb % \end{macrocode} % % \begin{macrocode} \ifx\bm@command\@empty \xdef\@gtempa{\mathchar\the\count@\space}% \fi \bm@xadd{\mathchar\the\count@\space}% \else % \end{macrocode} % % Otherwise grab the math class from the math code % and add that (locally zapping |\bm@expand| as we don't want % to recurse at this point). % \begin{macrocode} \begingroup \divide\count@"1000 \let\bm@expand\relax \bm@xadd\bm@class \endgroup % \end{macrocode} % |\@tempa| will be |\bm@group| (which applies |\boldmath| and % |\mathchoice|) unless it was changed by |\bm@changefam| to |\bm@pmb| % (which applies a `poor man's bold' construction in a |\mathchoice|). % \begin{macrocode} \edef\@tempb{% \noexpand\@tempa{\mathchar\the\count@\space}}% \@tempb \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@pmb} % \changes{v0.10}{1997/01/04} % {Macro added} % Add a poor man's bold construction to the list being built. % \begin{macrocode} \def\bm@pmb#1{% \bm@add{\bm@pmb@{#1}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@pmb@} % \changes{v0.10}{1997/01/04} % {Macro added} % |\pmb| variant. (See \TeX{}Book, or AMS \textsf{amsbsy} package). % This one takes a bit more care to use smaller offsets in subscripts. % \begin{macrocode} \def\bm@pmb@#1{{% \setbox\tw@\hbox{$\m@th\mkern.4mu$}% \mathchoice \bm@pmb@@\displaystyle\@empty{#1}% \bm@pmb@@\textstyle\@empty{#1}% \bm@pmb@@\scriptstyle\defaultscriptratio{#1}% \bm@pmb@@\scriptscriptstyle\defaultscriptscriptratio{#1}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@pmb@@} % \changes{v0.10}{1997/01/04} % {Macro added} % Helper macro. Box |#3| and set it three times in the style |#1|, % offset by an amount reduced by the ratio specified in |#2|. % \begin{macrocode} \def\bm@pmb@@#1#2#3{{% \setbox\z@\hbox{$\m@th#1#3$}% \dimen@#2\wd\tw@ \rlap{\copy\z@}% \kern\dimen@ \raise1.5\dimen@\rlap{\copy\z@}% \kern\dimen@ \box\z@}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@class} % \changes{v0.10}{1997/01/04} % {Macro added} % Convert a numeric math class back to a math class command. % |\mathord| is omitted in class $0$ and $7$ to save space and so % things work out right in constructions such as |x^a| where % |x^\mathord{a}| would not work. % \begin{macrocode} \def\bm@class{% \ifcase\count@ \or \mathop\or \mathbin\or \mathrel\or \mathopen\or \mathclose\or \mathpunct\or \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@add} % \changes{v0.07}{1996/12/14} % {macro added} % A version of |\g@addto@macro| that internally uses a |\begingroup| % rather than a brace group\footnote{This bug is fixed in the \LaTeX\ % kernel of 1996/12/01}, to save creating a mathord. % % As need to redefine it anyway, save some tokens by making % it specific to |\bm@command|, and to execute |\bm@expand| % to continue the loop. % \begin{macrocode} \def\bm@add#1{% \begingroup \toks@\expandafter{\bm@command#1}% \xdef\bm@command{\the\toks@}% \endgroup \bm@expand} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@xadd} % An |\xdef| version of |\bm@add|. % \begin{macrocode} \def\bm@xadd#1{% \begingroup \toks@\expandafter{\bm@command}% \xdef\bm@command{\the\toks@#1}% \endgroup \bm@expand} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@mathaccent} % |\mathaccent| version of |\bm@mathchar|. % \begin{macrocode} \def\bm@mathaccent{% \bm@changefam{}% \bm@xadd{\mathaccent\the\count@\space}} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@delimiter} % Change both families (math groups) of a delcode and then % use the modified code with |\delimiter|. % \begin{macrocode} \def\bm@delimiter{% \bm@changefam{}% \bm@changefam{000}% \bm@xadd{\delimiter\the\count@\space}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@radical} % Same for |\radical|. % \begin{macrocode} \def\bm@radical{% \bm@changefam{}% \bm@changefam{000}% \bm@xadd{\radical\the\count@\space}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@mchar@} % Catcode 12 |\mathchar|, for |\ifx| tests. % \begin{macrocode} \edef\bm@mchar@{\meaning\mathchar} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@mchar@test} % Test if the |\meaning| starts with |\mathchar|. If it does, grab the % value into |\count@| and call |\bm@mathchar|, else just copy the % command into the accumulated tokens. % |#1|, |#2|, |#3| are all |\meaning| produced tokens, or `dummy tokens' % added at the time this is called. |#4| is the original token, in case % decide not to use the |\meaning|. % \begin{macrocode} \def\bm@mchar@test#1"#2"#3\@nil#4{% \xdef\meaning@{#1}% \ifx\meaning@\bm@mchar@ \count@"#2\relax \bm@mathchar \else % \end{macrocode} % Some other command: copy it straight over. If it is the first thing % added, and it is a |\relax| token, save it in |\bm@first| for use % in |\bm@define|. % \begin{macrocode} \ifx\bm@previous\@empty \ifx\relax#4% \gdef\bm@first{#4}% \fi \fi \bm@add{#4}% \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@changefam} % \changes{v0.10}{1997/01/04} % {Rewrite for new \cs{bm@table} system} % Pull out one specified hex digit and passes % it to |\bm@modify| to change. argument is empty normally but |000| to % access the second math group in a delimiter code. % \begin{macrocode} \def\bm@changefam#1{% \@tempcnta\count@ \divide\@tempcnta"1000#1 % \multiply\@tempcnta"1000#1 % \advance\@tempcnta-\count@ \divide\@tempcnta-"100#1 % % \end{macrocode} % Having isolated the required math group (fam), look up % the offset in the current table. % \begin{macrocode} \@tempcnta\bm@table % \end{macrocode} % If the offset is $-1$, keep |\count@| unchanged, but set |\@tempa| % to use poor man's bold. Otherwise increment |\count@| to change the % math group specified. % \begin{macrocode} \ifnum\@tempcnta=\m@ne \let\@tempa\bm@pmb \else \multiply\@tempcnta"100#1 % \advance\count@\@tempcnta \fi} % \end{macrocode} % \end{macro} % % \begin{macrocode} % % \end{macrocode} % % \Finale % From carlisle@ma.man.ac.uk Tue Jan 14 12:42:39 1997 X-VM-v5-Data: ([nil nil nil nil t nil nil nil nil] ["2221" "Tue" "14" "January" "1997" "12:38:00" "GMT" "David Carlisle" "carlisle@ma.man.ac.uk" "<199701141238.MAA17542@vummath.ma.man.ac.uk>" "71" "lucida " "^From:" nil nil "1" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.3/8.8.3) with ESMTP id MAA11388 for ; Tue, 14 Jan 1997 12:42:38 GMT Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Tue, 14 Jan 1997 12:42:34 +0000 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by pillar.elsevier.co.uk (8.8.3/8.8.3) with SMTP id MAA05258 for ; Tue, 14 Jan 1997 12:40:30 GMT Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id MAA17542; Tue, 14 Jan 1997 12:38:00 GMT Message-Id: <199701141238.MAA17542@vummath.ma.man.ac.uk> Content-Length: 2220 From: David Carlisle To: s.rahtz@elsevier.co.uk Subject: lucida Date: Tue, 14 Jan 1997 12:38:00 GMT I just `acquired' lucida and so inevitably some queries and questions... Most serious first (I have the feeling this got asked on c.t.t the other week) ================================================================= If (using Y&Y names) I go $\dot{a}$ I get a \c C over my a. This is due to \ifnum\Lucida@names=0 \DeclareMathAccent\vec {\mathord}{letters}{"7E} \else \DeclareMathAccent\vec {\mathord}{letters}{"7E} \DeclareMathAccent\dot {\mathalpha}{operators}{"C7} \fi I thought the \Lucida@names stuff was just related to the *names* of the font not to encoding differences so why do the accent allocations differ here? and \vec is the same in both branches so why is it in the \if:-) ================================================================= When running my `symbols.tex' file with lucida instead of amssymb I find that \eth and \doublebarwedge are not defined. At least the first appears in the lucida text fonts somewhere doesn't it? ================================================================= > \mathcode`\=="3283 you seem to have given up converting to \DeclareMathSymbol half way down the file:-) ================================================================= \ifnum\Lucida@names=0 \renewcommand{\sfdefault}{hls} ... \else \renewcommand{\sfdefault}{lbs} ... \fi Does the LaTeX family name *need* to depend on the external font file name. My first thought at doing this would be to keep the document sources identical across different sites (and so not have xxxxy.sty or [yy]) and just have different fd files mapping the internal LaTeX family name of lbs to either a Berry or Y&Y external font name. ================================================================= \@ifpackageloaded{amstex}{}{..... Could wrap that whole lot in \AtBeginDocument so amsxxx may be loaded later. ================================================================= \def\r@@t#1#2{\setbox\z@\hbox{$\m@th#1\sqrt{#2}$} \dimen@\ht\z@ \advance\dimen@-\dp\z@ \mkern5mu\raise.6\dimen@\copy\rootbox \mkern-7.5mu \box\z@} `missing' % at end of first line. (also missing in all known formats except LaTeX 1996/12/01 :-) ================================================================= David From carlisle@ma.man.ac.uk Tue Jan 14 13:19:03 1997 X-VM-v5-Data: ([nil nil nil nil t nil nil nil nil] ["2244" "Tue" "14" "January" "1997" "13:15:20" "GMT" "David Carlisle" "carlisle@ma.man.ac.uk" "<199701141315.NAA18718@vummath.ma.man.ac.uk>" "47" "Re: lucida" "^From:" nil nil "1" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.3/8.8.3) with ESMTP id NAA15117 for ; Tue, 14 Jan 1997 13:19:02 GMT Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Tue, 14 Jan 1997 13:19:00 +0000 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by pillar.elsevier.co.uk (8.8.3/8.8.3) with SMTP id NAA06290 for ; Tue, 14 Jan 1997 13:17:50 GMT Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id NAA18718; Tue, 14 Jan 1997 13:15:20 GMT Message-Id: <199701141315.NAA18718@vummath.ma.man.ac.uk> In-reply-to: <199701141249.MAA20119@lochnagarn.elsevier.co.uk> (message from Sebastian Rahtz on Tue, 14 Jan 1997 12:49:16 GMT) Content-Length: 2243 From: David Carlisle To: s.rahtz@elsevier.co.uk Subject: Re: lucida Date: Tue, 14 Jan 1997 13:15:20 GMT > the point to my mind is that if you use Y&Y names, you'll use their > encoding I was being a good boy and just doing what Berthold told me. I ran his install script, clicked on the right buttons in ATM and away I went, straight into a cedilla:-) (Incidentally using dviwindo is about 10000000 times more pleasant than using dvips/ghostscript to preview files with these fonts and mathtime, especially on my 8meg machine at home which tends to fall over if gsview is passed a document using more than a couple of mathtime fonts on one page, I'm sure ghostview under linux would be more stable but still...) Howver using the family name is NOT a kosher way of flagging encoding differences in NFSS you're supposed to use a different encoding name if needs be (at the same time as sending the obligatory complaint to Berthold for not supporting standard TeX mechanisms:-) For the mathtime support we have just allocated MY1 MY2 ... to replace OMS OML and friends to take account of the random permutation Spivak applied to the knuth encodings. However the Lucida math fonts at least seem pretty much encoded as per normal. > > Does the LaTeX family name *need* to depend on the external font file > > name. My first thought at doing this would be to keep the document > > sources identical across different sites (and so not have xxxxy.sty > > or [yy]) and just have different fd files mapping the internal LaTeX > > family name of lbs to either a Berry or Y&Y external font name. > as i say, what i do depends on whether its just a naming thing, or > whether it means you use different encoding. > > how do i distinguish the .fd files? If its different encoding (say TY1=texnansi) then it should be \fontencoding{TY1}\fontfamily{lbs}\selectfont as opposed to \fontencoding{T1}\fontfamily{lbs}\selectfont ie same family, different encoding. in that case the fd files have different names anyway. If it is just the difference in names (as with the math fonts) then you just install one set or the other of OMSxxx.fd to match whatever name you have installed the tfm files (berry or yy) that way the document itself moves unchanged to another site, but that sites fd files pick up whatever name the file has there. (in theory) David From carlisle@ma.man.ac.uk Tue Jan 21 15:05:20 1997 X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] ["867" "Tue" "21" "January" "1997" "15:01:09" "GMT" "David Carlisle" "carlisle@ma.man.ac.uk" nil "32" "lucida/y&y" "^From:" nil nil "1" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.3/8.8.3) with ESMTP id PAA22658 for ; Tue, 21 Jan 1997 15:05:19 GMT Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Tue, 21 Jan 1997 15:04:54 +0000 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by pillar.elsevier.co.uk (8.8.3/8.8.3) with SMTP id PAA15864 for ; Tue, 21 Jan 1997 15:03:35 GMT Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-SVR4) id PAA07276; Tue, 21 Jan 1997 15:01:09 GMT Message-Id: <199701211501.PAA07276@vummath.ma.man.ac.uk> Content-Length: 866 From: David Carlisle To: Frank.Mittelbach@Uni-Mainz.de, s.rahtz@elsevier.co.uk Subject: lucida/y&y Date: Tue, 21 Jan 1997 15:01:09 GMT Frank, Sebastian. The following is a ly1enc.def (LY1enc.def for `old' latex) that sets up \usepackage[LY1]{fontenc} to use Y&Y's texnansi encoding. I have *not* shown this to Berthold yet (not sure if he'll approve of the comments at the end:-) Comments on whether this looks OK? I called the encoding L* I don't think it should ever be made T* as it is not uc/lc compatible with T1 and we have not got any policy on how to cope with that. \documentclass{article} % should be in LY1hlh.fd files \DeclareFontEncoding{LY1}{}{} \DeclareFontSubstitution{LY1}{hlh}{m}{n} \DeclareFontFamily{LY1}{hlh}{} \DeclareFontShape{LY1}{hlh}{m}{n}{<-> lbr}{}% Y&Y external name % in lucida.sty somewhere \fontencoding{LY1}\fontfamily{hlh}\selectfont \def\encodingdefault{LY1} \def\familydefault{hlh} \usepackage[LY1]{fontenc} \usepackage[ansinew]{inputenc} \begin{document} From carlisle@ma.man.ac.uk Mon Jul 22 17:56 BST 1996 X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] ["1912" "Mon" "22" "July" "1996" "17:41:55" "+0100" "David Carlisle" "carlisle@ma.man.ac.uk" nil "58" "LaTeX with times/helvetica/courier" "^From:" nil nil "7" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon [193.131.197.164]) by cadair.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id RAA16606 for ; Mon, 22 Jul 1996 17:56:50 +0100 Received: from epprod.elsevier.co.uk (actually host epprod) by snowdon with SMTP (PP); Mon, 22 Jul 1996 17:58:01 +0100 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by epprod.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id RAA10425 for ; Mon, 22 Jul 1996 17:56:40 +0100 Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id RAA17773; Mon, 22 Jul 1996 17:41:55 +0100 Message-Id: <199607221641.RAA17773@vummath.ma.man.ac.uk> Content-Length: 1911 From: David Carlisle To: graham@cs.man.ac.uk, Robin.Fairbairns@cl.cam.ac.uk, srahtz@cadair.elsevier.co.uk, alanje@cogs.sussex.ac.uk Subject: LaTeX with times/helvetica/courier Date: Mon, 22 Jul 1996 17:41:55 +0100 Content-Type: text ftp://ftp.cs.man.ac.uk/pub/carlisle/pslatex2.tar.gz -rw-r--r-- 1 3502 3502 20010 Jul 22 16:30 pslatex2.tar.gz Should you be intersted a package and shell script for producing `pslatex' Uses extra fonts over the standard psnfss distribution namely a condensed courier (85%) and `upright italic' versions of this and helvetica, ie standard non-italic fonts but with \pounds. I just used fontinst's OT1itt and OT1i for this, but wasnt sure what the Berry name would be They get called pcrr7tin phvr7ti for now. There's a readme in the tar file. so main differences from \usepackage{times,mathptm} are that \pounds works in OT1 again and helvetica is scaled 90% and courier condensed so times-helvetica-courier dont look quite so horrible together. Alan or Sebastian might care to look at my fontinst code, which I dont really understand that well:-) % input the fontinst (needs test version from the psfonts area) \input fontinst.sty % Squash a courier (this is a new font) \transformfont{pcrr8rn}{% \xscalefont{850}{% \reencodefont{8r}{\fromafm{pcrr8a}} } } % Make helvetica (this is standard font, but need fontinst version % to scamble below) \transformfont{phvr8r}{% \reencodefont{8r}{\fromafm{phvr8a}} } % make condensed courier in OT1, OT1i (with \pounds) and T1 % make helvetica in OT1i (with \pounds) \installfonts \installfont{pcrr7tn}{pcrr8rn,psyr,latin}{OT1tt}{OT1}{pcr}{c}{n}{} \installfont{pcrr7tin}{pcrr8rn,psyr,latin}{OT1itt}{OT1}{pcr}{c}{it}{} \installfont{pcrr8tn}{pcrr8rn,psyr,latin}{T1}{T1}{pcr}{c}{n}{} \installfont{phvr7ti}{phvr8r,psyr,latin}{OT1i}{OT1}{phv}{n}{it}{} \endinstallfonts David Graham, this (which you can find in ~carlisle/ftp on r8) is more or less what you have already, but with the names updated for the `new' names as used in the tetex distrib. From carlisle@ma.man.ac.uk Mon Jul 22 18:18 BST 1996 X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] ["10339" "Mon" "22" "July" "1996" "18:04:46" "+0100" "David Carlisle" "carlisle@ma.man.ac.uk" nil "462" "pslatex" "^From:" nil nil "7" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon [193.131.197.164]) by cadair.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id SAA17029 for ; Mon, 22 Jul 1996 18:18:27 +0100 Received: from epprod.elsevier.co.uk (actually host epprod) by snowdon with SMTP (PP); Mon, 22 Jul 1996 18:19:35 +0100 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by epprod.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id SAA10645 for ; Mon, 22 Jul 1996 18:18:07 +0100 Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id SAA18054; Mon, 22 Jul 1996 18:04:46 +0100 Message-Id: <199607221704.SAA18054@vummath.ma.man.ac.uk> Content-Length: 10338 From: David Carlisle To: graham@cs.man.ac.uk, Robin.Fairbairns@cl.cam.ac.uk, srahtz@cadair.elsevier.co.uk, alanje@cogs.sussex.ac.uk Subject: pslatex Date: Mon, 22 Jul 1996 18:04:46 +0100 Content-Type: text sigh the tar file misses out pslatex.sty \ProvidesPackage{pslatex}[1996/07/22 v1.1 pslatex emulation (DPC)] % 1994/06/28 v1.0 % 1996/07/22 v1.1 update to `8r' encoded base fonts. %%% pslatex emulation for LaTeX2e %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This file consists of verbatim copies of times.sty and mathptm.sty % to get a basic times/helvetica/courier setup. % % It then has a copy of OT1pcr.fd % modified to load a narrowed version of courier. % and make the ui substitution silent % % It then has a copy of OT1phv.fd % modified to load helvetica at 90%. % and make the ui substitution silent % % It then has a copy of OT1ptm.fd % modified to make the ui substitution silent % %%%% TIMES.STY \renewcommand{\sfdefault}{phv} \renewcommand{\rmdefault}{ptm} \renewcommand{\ttdefault}{pcr} %%%% MATHPTM.STY \DeclareSymbolFont{operators} {OT1}{ptmcm}{m}{n} \DeclareSymbolFont{letters} {OML}{ptmcm}{m}{it} \DeclareSymbolFont{symbols} {OMS}{pzccm}{m}{n} \DeclareSymbolFont{largesymbols}{OMX}{psycm}{m}{n} \DeclareSymbolFont{bold} {OT1}{ptm}{bx}{n} \DeclareSymbolFont{italic} {OT1}{ptm}{m}{it} % If we're in compatibility mode, defined \mathbf and \mathit. \@ifundefined{mathbf}{}{\DeclareMathAlphabet{\mathbf}{OT1}{ptm}{bx}{n}} \@ifundefined{mathit}{}{\DeclareMathAlphabet{\mathit}{OT1}{ptm}{m}{it}} % An \omicron command, to fill the gap. \DeclareMathSymbol{\omicron}{0}{operators}{`\o} % Reduce the space around math operators \thinmuskip=2mu \medmuskip=2.5mu plus 1mu minus 1mu \thickmuskip=4mu plus 1.5mu minus 1mu % No bold math. \def\boldmath{% \@warning{there is no bold Symbol font}% \global\let\boldmath=\relax } % Larger scripts. \DeclareMathSizes{5}{5}{5}{5} \DeclareMathSizes{6}{6}{5}{5} \DeclareMathSizes{7}{7}{5}{5} \DeclareMathSizes{8}{8}{6}{5} \DeclareMathSizes{9}{9}{7}{5} \DeclareMathSizes{10}{10}{7.4}{6} \DeclareMathSizes{10.95}{10.95}{8}{6} \DeclareMathSizes{12}{12}{9}{7} \DeclareMathSizes{14.4}{14.4}{10.95}{8} \DeclareMathSizes{17.28}{17.28}{12}{10} \DeclareMathSizes{20.74}{20.74}{14.4}{12} \DeclareMathSizes{24.88}{24.88}{17.28}{14.4} \DeclareFontSubstitution{OMS}{pzccm}{m}{n} \begingroup \nfss@catcodes %%%%% ``OMSptm.fd'' \DeclareFontFamily{OMS}{ptm}{} \DeclareFontShape{OMS}{ptm}{m}{n} {<-> ssub * pzccm/m/n}{} \DeclareFontShape{OMS}{ptm}{m}{it} {<-> ssub * pzccm/m/n}{} \DeclareFontShape{OMS}{ptm}{m}{sl} {<-> ssub * pzccm/m/n}{} \DeclareFontShape{OMS}{ptm}{m}{sc} {<-> ssub * pzccm/m/n}{} \DeclareFontShape{OMS}{ptm}{bx}{n} {<-> ssub * pzccm/b/n}{} \DeclareFontShape{OMS}{ptm}{bx}{it} {<-> ssub * pzccm/b/n}{} \DeclareFontShape{OMS}{ptm}{bx}{sl} {<-> ssub * pzccm/b/n}{} \DeclareFontShape{OMS}{ptm}{bx}{sc} {<-> ssub * pzccm/b/n}{} %%%% OT1pcr.fd % \DeclareFontFamily{OT1}{pcr}{\hyphenchar \font =-1}% % \DeclareFontShape{OT1}{pcr}{b}{n}{% <-> pcrb7t% }{}% % \DeclareFontShape{OT1}{pcr}{b}{sc}{% <-> pcrbc7t% }{}% % \DeclareFontShape{OT1}{pcr}{b}{sl}{% <-> pcrbo7t% }{}% % %%%% pslatex's condenced courier \DeclareFontShape{OT1}{pcr}{m}{n}{% <-> pcrr7tn% }{}% % \DeclareFontShape{OT1}{pcr}{m}{sc}{% <-> pcrrc7t% }{}% % \DeclareFontShape{OT1}{pcr}{m}{sl}{% <-> pcrro7t% }{}% % and a whole font just for \pounds.... \DeclareFontShape{OT1}{pcr}{m}{ui}{% <-> pcrr7tin% }{} % \DeclareFontShape{OT1}{pcr}{bx}{n}{<->ssub * pcr/b/n}{}% \DeclareFontShape{OT1}{pcr}{bx}{sc}{<->ssub * pcr/b/sc}{}% \DeclareFontShape{OT1}{pcr}{bx}{sl}{<->ssub * pcr/b/sl}{}% \DeclareFontShape{OT1}{pcr}{b}{it}{<->ssub * pcr/b/sl}{}% \DeclareFontShape{OT1}{pcr}{bx}{it}{<->ssub * pcr/b/it}{}% \DeclareFontShape{OT1}{pcr}{b}{ui}{<->ssub * pcr/m/ui}{}% \DeclareFontShape{OT1}{pcr}{bx}{ui}{<->sssub * pcr/b/ui}{}% \DeclareFontShape{OT1}{pcr}{m}{it}{<->ssub * pcr/m/sl}{}% % %%%% OT1phv.fd %%Filename: OT1phv.fd %%Created by: tex 16273helvetic %%Created using fontinst v1.328 %%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY \DeclareFontFamily{OT1}{phv}{} \DeclareFontShape{OT1}{phv}{b}{n}{ <-> s * [.9] phvb7t }{} \DeclareFontShape{OT1}{phv}{b}{sc}{ <-> s * [.9] phvbc7t }{} \DeclareFontShape{OT1}{phv}{b}{sl}{ <-> s * [.9] phvbo7t }{} \DeclareFontShape{OT1}{phv}{bc}{n}{ <-> s * [.9] phvbrn7t }{} \DeclareFontShape{OT1}{phv}{bc}{sc}{ <-> s * [.9] phvbcn7t }{} \DeclareFontShape{OT1}{phv}{bc}{sl}{ <-> s * [.9] phvbon7t }{} \DeclareFontShape{OT1}{phv}{m}{n}{ <-> s * [.9] phvr7t }{} \DeclareFontShape{OT1}{phv}{m}{sc}{ <-> s * [.9] phvrc7t }{} \DeclareFontShape{OT1}{phv}{m}{sl}{ <-> s * [.9] phvro7t }{} \DeclareFontShape{OT1}{phv}{mc}{n}{ <-> s * [.9] phvrrn7t }{} \DeclareFontShape{OT1}{phv}{mc}{sc}{ <-> s * [.9] phvrcn7t }{} \DeclareFontShape{OT1}{phv}{mc}{sl}{ <-> s * [.9] phvron7t }{} % for \pounds \DeclareFontShape{OT1}{phv}{m}{ui}{ <->s * [.9] phvr7ti}{} \DeclareFontShape{OT1}{phv}{bx}{n}{<->ssub * phv/b/n}{} \DeclareFontShape{OT1}{phv}{bx}{sc}{<->ssub * phv/b/sc}{} \DeclareFontShape{OT1}{phv}{bx}{sl}{<->ssub * phv/b/sl}{} \DeclareFontShape{OT1}{phv}{b}{it}{<->ssub * phv/b/sl}{} \DeclareFontShape{OT1}{phv}{bx}{it}{<->ssub * phv/b/it}{} \DeclareFontShape{OT1}{phv}{b}{ui}{<->ssub * phv/m/ui}{} \DeclareFontShape{OT1}{phv}{bx}{ui}{<->ssub * phv/b/ui}{} \DeclareFontShape{OT1}{phv}{bc}{it}{<->ssub * phv/bc/sl}{} \DeclareFontShape{OT1}{phv}{bc}{ui}{<->ssub * phv/bc/it}{} \DeclareFontShape{OT1}{phv}{m}{it}{<->ssub * phv/m/sl}{} \DeclareFontShape{OT1}{phv}{mc}{it}{<->ssub * phv/mc/sl}{} \DeclareFontShape{OT1}{phv}{mc}{ui}{<->ssub * phv/mc/it}{} %\endinput %\endinput% %%%% OT1ptm.fd %Filename: OT1ptm.fd %Created by: tex 16594times %Created using fontinst v1.328 %THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY \DeclareFontFamily{OT1}{ptm}{} \DeclareFontShape{OT1}{ptm}{b}{n}{ <-> ptmb7t }{} \DeclareFontShape{OT1}{ptm}{b}{sc}{ <-> ptmbc7t }{} \DeclareFontShape{OT1}{ptm}{b}{it}{ <-> ptmbi7t }{} \DeclareFontShape{OT1}{ptm}{b}{sl}{ <-> ptmbo7t }{} \DeclareFontShape{OT1}{ptm}{m}{n}{ <-> ptmr7t }{} \DeclareFontShape{OT1}{ptm}{m}{sc}{ <-> ptmrc7t }{} \DeclareFontShape{OT1}{ptm}{m}{it}{ <-> ptmri7t }{} \DeclareFontShape{OT1}{ptm}{m}{sl}{ <-> ptmro7t }{} \DeclareFontShape{OT1}{ptm}{bx}{n}{<->ssub * ptm/b/n}{} \DeclareFontShape{OT1}{ptm}{bx}{sc}{<->ssub * ptm/b/sc}{} \DeclareFontShape{OT1}{ptm}{bx}{it}{<->ssub * ptm/b/it}{} \DeclareFontShape{OT1}{ptm}{b}{ui}{<->ssub * ptm/b/it}{} \DeclareFontShape{OT1}{ptm}{bx}{ui}{<->ssub * ptm/b/ui}{} \DeclareFontShape{OT1}{ptm}{bx}{sl}{<->ssub * ptm/b/sl}{} \DeclareFontShape{OT1}{ptm}{m}{ui}{<->ssub * ptm/m/it}{} %%%% T1pcr.fd % \DeclareFontFamily{T1}{pcr}{\hyphenchar \font =-1}% % \DeclareFontShape{T1}{pcr}{b}{n}{% <-> pcrb8t% }{}% % \DeclareFontShape{T1}{pcr}{b}{sc}{% <-> pcrbc8t% }{}% % \DeclareFontShape{T1}{pcr}{b}{sl}{% <-> pcrbo8t% }{}% % %%%% pslatex's condensed courier \DeclareFontShape{T1}{pcr}{m}{n}{% <-> pcrr8tn% }{}% % \DeclareFontShape{T1}{pcr}{m}{sc}{% <-> pcrrc8t% }{}% % \DeclareFontShape{T1}{pcr}{m}{sl}{% <-> pcrro8t% }{}% % \DeclareFontShape{T1}{pcr}{bx}{n}{<->ssub * pcr/b/n}{}% \DeclareFontShape{T1}{pcr}{bx}{sc}{<->ssub * pcr/b/sc}{}% \DeclareFontShape{T1}{pcr}{bx}{sl}{<->ssub * pcr/b/sl}{}% \DeclareFontShape{T1}{pcr}{b}{it}{<->ssub * pcr/b/sl}{}% \DeclareFontShape{T1}{pcr}{bx}{it}{<->ssub * pcr/b/it}{}% \DeclareFontShape{T1}{pcr}{b}{ui}{<->ssub * pcr/b/it}{}% \DeclareFontShape{T1}{pcr}{bx}{ui}{<->sssub * pcr/b/ui}{}% \DeclareFontShape{T1}{pcr}{m}{it}{<->ssub * pcr/m/sl}{}% \DeclareFontShape{T1}{pcr}{m}{ui}{<->ssub * pcr/m/it}{}% % %%%% T1phv.fd %%Filename: T1phv.fd %%Created by: tex 16273helvetic %%Created using fontinst v1.328 %%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY \DeclareFontFamily{T1}{phv}{} \DeclareFontShape{T1}{phv}{b}{n}{ <-> s * [.9] phvb8t }{} \DeclareFontShape{T1}{phv}{b}{sc}{ <-> s * [.9] phvbc8t }{} \DeclareFontShape{T1}{phv}{b}{sl}{ <-> s * [.9] phvbo8t }{} \DeclareFontShape{T1}{phv}{bc}{n}{ <-> s * [.9] phvbrn8t }{} \DeclareFontShape{T1}{phv}{bc}{sc}{ <-> s * [.9] phvbcn8t }{} \DeclareFontShape{T1}{phv}{bc}{sl}{ <-> s * [.9] phvbon8t }{} \DeclareFontShape{T1}{phv}{m}{n}{ <-> s * [.9] phvr8t }{} \DeclareFontShape{T1}{phv}{m}{sc}{ <-> s * [.9] phvrc8t }{} \DeclareFontShape{T1}{phv}{m}{sl}{ <-> s * [.9] phvro8t }{} \DeclareFontShape{T1}{phv}{mc}{n}{ <-> s * [.9] phvrrn8t }{} \DeclareFontShape{T1}{phv}{mc}{sc}{ <-> s * [.9] phvrcn8t }{} \DeclareFontShape{T1}{phv}{mc}{sl}{ <-> s * [.9] phvron8t }{} \DeclareFontShape{T1}{phv}{bx}{n}{<->ssub * phv/b/n}{} \DeclareFontShape{T1}{phv}{bx}{sc}{<->ssub * phv/b/sc}{} \DeclareFontShape{T1}{phv}{bx}{sl}{<->ssub * phv/b/sl}{} \DeclareFontShape{T1}{phv}{b}{it}{<->ssub * phv/b/sl}{} \DeclareFontShape{T1}{phv}{bx}{it}{<->ssub * phv/b/it}{} \DeclareFontShape{T1}{phv}{b}{ui}{<->ssub * phv/b/it}{} \DeclareFontShape{T1}{phv}{bx}{ui}{<->ssub * phv/b/ui}{} \DeclareFontShape{T1}{phv}{bc}{it}{<->ssub * phv/bc/sl}{} \DeclareFontShape{T1}{phv}{bc}{ui}{<->ssub * phv/bc/it}{} \DeclareFontShape{T1}{phv}{m}{it}{<->ssub * phv/m/sl}{} \DeclareFontShape{T1}{phv}{m}{ui}{<->ssub * phv/m/it}{} \DeclareFontShape{T1}{phv}{mc}{it}{<->ssub * phv/mc/sl}{} \DeclareFontShape{T1}{phv}{mc}{ui}{<->ssub * phv/mc/it}{} %\endinput %\endinput% %%%% T1ptm.fd %Filename: T1ptm.fd %Created by: tex 16594times %Created using fontinst v1.328 %THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY \DeclareFontFamily{T1}{ptm}{} \DeclareFontShape{T1}{ptm}{b}{n}{ <-> ptmb8t }{} \DeclareFontShape{T1}{ptm}{b}{sc}{ <-> ptmbc8t }{} \DeclareFontShape{T1}{ptm}{b}{it}{ <-> ptmbi8t }{} \DeclareFontShape{T1}{ptm}{b}{sl}{ <-> ptmbo8t }{} \DeclareFontShape{T1}{ptm}{m}{n}{ <-> ptmr8t }{} \DeclareFontShape{T1}{ptm}{m}{sc}{ <-> ptmrc8t }{} \DeclareFontShape{T1}{ptm}{m}{it}{ <-> ptmri8t }{} \DeclareFontShape{T1}{ptm}{m}{sl}{ <-> ptmro8t }{} \DeclareFontShape{T1}{ptm}{bx}{n}{<->ssub * ptm/b/n}{} \DeclareFontShape{T1}{ptm}{bx}{sc}{<->ssub * ptm/b/sc}{} \DeclareFontShape{T1}{ptm}{bx}{it}{<->ssub * ptm/b/it}{} \DeclareFontShape{T1}{ptm}{b}{ui}{<->ssub * ptm/b/it}{} \DeclareFontShape{T1}{ptm}{bx}{ui}{<->ssub * ptm/b/ui}{} \DeclareFontShape{T1}{ptm}{bx}{sl}{<->ssub * ptm/b/sl}{} \DeclareFontShape{T1}{ptm}{m}{ui}{<->ssub * ptm/m/it}{} \endgroup \endinput From carlisle@ma.man.ac.uk Tue Jul 23 16:05 BST 1996 X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] ["865" "Tue" "23" "July" "1996" "15:50:51" "+0100" "David Carlisle" "carlisle@ma.man.ac.uk" nil "33" "\\pounds" "^From:" nil nil "7" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon [193.131.197.164]) by cadair.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id QAA06857 for ; Tue, 23 Jul 1996 16:05:09 +0100 Received: from epprod.elsevier.co.uk (actually host epprod) by snowdon with SMTP (PP); Tue, 23 Jul 1996 16:06:23 +0100 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by epprod.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id QAA02755 for ; Tue, 23 Jul 1996 16:04:58 +0100 Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id PAA05410; Tue, 23 Jul 1996 15:50:51 +0100 Message-Id: <199607231450.PAA05410@vummath.ma.man.ac.uk> Content-Length: 864 From: David Carlisle To: srahtz@cadair.elsevier.co.uk, alanje@cogs.sussex.ac.uk CC: latex-team@goofy.zdv.uni-mainz.de Subject: \pounds Date: Tue, 23 Jul 1996 15:50:51 +0100 Content-Type: text I'm fed up of trying to make silly `upright italic' fonts with fontinst which are just the same as a roman font but with \pounds in place of $ just so \pounds works out in OT1. In my private version of `times+mathptm'.sty I'm contemplating throwing out all the substitutions for the ui shape. If people ask for \fontshape{ui} explicitly they deserve to get an NFSS warning and some default substitution. For \pounds I want to do the following: \DeclareTextSymbolDefault{\textsterling}{T1} \expandafter\let \csname OT1\string\textsterling\endcsname\@undefined ie make \pounds pick up from T1 even if OT1 fonts are being used. Can not do this for the cm fonts as that forces dc fonts on everyone, but for psnfss they have both encodings anyway. Is this a) a good idea b) unworkable c) Bad because \expandafter\let is not very pure LaTeX. David From carlisle@ma.man.ac.uk Fri Jul 26 11:38 BST 1996 X-VM-v5-Data: ([nil nil nil nil t nil nil nil nil] ["1903" "Fri" "26" "July" "1996" "11:36:09" "+0100" "David Carlisle" "carlisle@ma.man.ac.uk" "<199607261036.LAA17735@vummath.ma.man.ac.uk>" "46" "Re: ?pounds" "^From:" nil nil "7" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon [193.131.197.164]) by cadair.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id LAA15434 for ; Fri, 26 Jul 1996 11:38:32 +0100 Received: from skiddaw.elsevier.co.uk (actually host skiddaw) by snowdon with SMTP (PP); Fri, 26 Jul 1996 11:39:43 +0100 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by skiddaw.elsevier.co.uk (8.6.13/8.6.12) with ESMTP id LAA25549 for ; Fri, 26 Jul 1996 11:39:25 +0100 Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id LAA17735; Fri, 26 Jul 1996 11:36:09 +0100 Message-Id: <199607261036.LAA17735@vummath.ma.man.ac.uk> In-reply-to: <9607261015.AA00958@fell.open.ac.uk> (message from Chris Rowley on Fri, 26 Jul 1996 12:16:49 +0200) Content-Length: 1902 From: David Carlisle To: C.A.ROWLEY@open.ac.uk CC: srahtz@cadair.elsevier.co.uk, latex-team@goofy.zdv.Uni-Mainz.de Subject: Re: ?pounds Date: Fri, 26 Jul 1996 11:36:09 +0100 Content-Type: text > 3. But it is not sufficient simply to put this into, eg, times.sty, since Yes I don't think it can go into the psnfss packages as there it has to be (possibly) mixed with cm fonts. However I have in fact put it into my `pslatex' package available from an archive near you. The point of this package is to totally replace the standard fonts by times/helvetica/courier. Typically by people who would never load any `non standard' fonts. It is a normal package but usually called by a shell script which sticks it in \AtBeginDocument. So the usage is latex file to get cm fonts or pslatex file to get times etc. I had to produce this as soon as 2e came out as Manchester cs department had had a `pslatex' command since at least 1986 and without some such I'd never have got them to switch to 2e. It worked well enough until last week when Graham updated to teTeX and got the new all singing all dancing ps font metrics. And suddenly all the pounds disapeared. While updating the file anyway I thought I'd do it this way this time to save having to make so many strange fonts. The option of using cm is not really an option. These fonts are used to make compact ps files for ftp purposes or for munging into pdf. People dont want a bitmap (or even bakoma) font definition stuck at the top (well they get that anyway from the mathptm fonts, but there's no need to make a virtue of that). If I'm persuaded not to force a T1 pounds then I will make every OT1 font in two forms, with $ and with #. This just seems like a waste of everyone's disk space. > 1. Should you not redefine \textdollar too? Or are you keeping > the pounds sign in the italic fonts? Could do but it's not so bad for $ the only `bad' substitution is a slanted $ instead of an italic one. the real problem is for \pounds as there are no upright pounds or sans-serif pounds in the current OT1 ps font distribution. David From carlisle@ma.man.ac.uk Mon Oct 7 11:48:03 1996 X-VM-v5-Data: ([nil nil nil nil nil t nil nil nil] ["15610" "Mon" "7" "October" "1996" "11:43:38" "+0100" "David Carlisle" "carlisle@ma.man.ac.uk" nil "361" "" "^From:" nil nil "10" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.0/8.8.0) with ESMTP id LAA09534 for ; Mon, 7 Oct 1996 11:48:02 +0100 (BST) Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Mon, 7 Oct 1996 11:47:57 +0100 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by pillar.elsevier.co.uk (8.8.0/8.8.0) with SMTP id LAA17519 for ; Mon, 7 Oct 1996 11:45:07 +0100 (BST) Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id LAA08011; Mon, 7 Oct 1996 11:43:38 +0100 Message-Id: <199610071043.LAA08011@vummath.ma.man.ac.uk> Content-Length: 15609 From: David Carlisle To: s.rahtz@elsevier.co.uk CC: tech-support@math.ams.org, bugs@goofy.zdv.uni-mainz.de, latex-team@goofy.zdv.uni-mainz.de Date: Mon, 7 Oct 1996 11:43:38 +0100 Sebastian, one for you? If you reply, could you keep the CC list, David ------- Start of forwarded message ------- Return-Path: Date: Mon, 7 Oct 1996 09:51:11 +0200 (MET DST) From: jpvial@mail.codix.fr (jp vial) Reply-To: jpvial@mail.codix.fr (jp vial) To: tech-support@math.ams.org Cc: gnats-admin@goofy.zdv.Uni-Mainz.de, latex-team@goofy.zdv.Uni-Mainz.de Subject: amslatex/2277: overrightarrow misplaced with (amsmath AND lucidbry) In-Reply-To: Your message of Sun, 6 Oct 1996 15:51:07 +0200 (MET DST) <199610061351.PAA03428@trudi.zdv.Uni-Mainz.DE> Content-Type: text Content-Length: 14940 >Number: 2277 >Category: amslatex >Synopsis: overrightarrow misplaced with amsmath AND lucidbry >Confidential: yes >Severity: serious >Priority: medium >Responsible: ams (AMS Technical Support) >State: open >Class: sw-bug >Submitter-Id: unknown >Arrival-Date: Mon Oct 7 09:51:09 1996 >Originator: jpvial@mail.codix.fr (Jean-Pierre VIAL) >Organization: >Release: LaTeX2e <1996/06/01> >Environment: Hyphenation: standard \@TeXversion: YandYtex (Standard setting for TeX3.141 and later) \@currdir: macro:->./ \input@path: undefined (Standard setting) >Description: Description of bug: If I use amsmath.sty AND the lucida math fonts with lucidbry.sty overrightarrow and overleftarrow are incorrect: with overrightarrow, the tail of the arrow extends much too far to the left (if the preceding char is for instance a <> as in the test file, the tail of the arrow crosses the <>. with overleft arrow, same thing to the right. with amsmath and cm-fonts, or lucida fonts without amsmath, there is no problem. Overline is also ok with amsmath AND lucida, the incompatibility is just for the over...arrow macros (I did not test the under..arrow macros) >How-To-Repeat: Sample file which indicates the problem: ======================================== \documentclass{article} \usepackage[expert]{lucidbry} \usepackage{amsmath} \begin{document} $\overrightarrow{OM}\quad |\overrightarrow{OM}\quad \overrightarrow{u}\quad|\overrightarrow{u}$ $\overleftarrow{OM}|\qquad \overleftarrow{u}|$ \end{document} The log file from running LaTeX on the sample: ============================================== This is TeX, C Version 3.141 (format=latex 96.7.21) 1996 OCT 6 15:14 **&latex ovrright (d:/yy/fmt/latex.fmt) (ovrright.tex LaTeX2e <1996/06/01> (d:/yy/latex/article.cls Document Class: article 1996/05/26 v1.3r Standard LaTeX document class (d:/yy/latex/size10.clo File: size10.clo 1996/05/26 v1.3r Standard LaTeX file (size option) ) \c@part=\count82 \c@section=\count83 \c@subsection=\count84 \c@subsubsection=\count85 \c@paragraph=\count86 \c@subparagraph=\count87 \c@figure=\count88 \c@table=\count89 \abovecaptionskip=\skip41 \belowcaptionskip=\skip42 \bibindent=\dimen102 ) (d:/yy/latex/psnfss/lucidbry.sty Package: lucidbry 1995/12/11 3.13 Lucida Bright (Y \& Y names) PSNFSS2e package (d:/yy/latex/psnfss/lucbr.sty Package: lucbr 1995/12/11 3.13 Lucida Bright PSNFSS2e package LaTeX Font Info: Redeclaring symbol font `letters' on input line 123. LaTeX Font Info: Overwriting symbol font `letters' in version `normal' (Font) OML/cmm/m/it --> OML/lbm/m/it on input line 123. LaTeX Font Info: Overwriting symbol font `letters' in version `bold' (Font) OML/cmm/b/it --> OML/lbm/m/it on input line 123. \symmathupright=\mathgroup4 LaTeX Font Info: Redeclaring symbol font `symbols' on input line 127. LaTeX Font Info: Overwriting symbol font `symbols' in version `normal' (Font) OMS/cmsy/m/n --> OMS/lby/m/n on input line 127. LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' (Font) OMS/cmsy/b/n --> OMS/lby/m/n on input line 127. LaTeX Font Info: Redeclaring symbol font `largesymbols' on input line 128. LaTeX Font Info: Overwriting symbol font `largesymbols' in version `normal' (Font) OMX/cmex/m/n --> OMX/lbv/m/n on input line 128. LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold' (Font) OMX/cmex/m/n --> OMX/lbv/m/n on input line 128. LaTeX Font Info: Overwriting symbol font `letters' in version `bold' (Font) OML/lbm/m/it --> OML/lbm/b/it on input line 130. LaTeX Font Info: Overwriting symbol font `mathupright' in version `bold' (Font) OML/lbm/m/n --> OML/lbm/b/n on input line 131. LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' (Font) OMS/lby/m/n --> OMS/lby/b/n on input line 132. \symitalics=\mathgroup5 \symarrows=\mathgroup6 \symboldarrows=\mathgroup7 LaTeX Font Info: Redeclaring symbol font `operators' on input line 140. LaTeX Font Info: Overwriting symbol font `operators' in version `normal' (Font) OT1/cmr/m/n --> OT1/lb/m/n on input line 140. LaTeX Font Info: Overwriting symbol font `operators' in version `bold' (Font) OT1/cmr/bx/n --> OT1/lb/m/n on input line 140. LaTeX Font Info: Overwriting symbol font `operators' in version `bold' (Font) OT1/lb/m/n --> OT1/lb/b/n on input line 141. LaTeX Font Info: Overwriting symbol font `operators' in version `normal' (Font) OT1/lb/m/n --> OT1/lb/m/n on input line 142. LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 143. LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal' (Font) OT1/cmr/bx/n --> OT1/lb/b/n on input line 143. LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' (Font) OT1/cmr/bx/n --> OT1/lb/b/n on input line 143. LaTeX Font Info: Redeclaring math alphabet \mathrm on input line 144. LaTeX Font Info: Redeclaring math alphabet \mathsf on input line 145. LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal' (Font) OT1/cmss/m/n --> OT1/lbs/m/n on input line 145. LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' (Font) OT1/cmss/bx/n --> OT1/lbs/m/n on input line 145. LaTeX Font Info: Redeclaring math alphabet \mathit on input line 146. LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal' (Font) OT1/cmr/m/it --> OT1/lb/m/it on input line 146. LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' (Font) OT1/cmr/bx/it --> OT1/lb/m/it on input line 146. LaTeX Font Info: Redeclaring math alphabet \mathtt on input line 147. LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal' (Font) OT1/cmtt/m/n --> OT1/lbt/m/n on input line 147. LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' (Font) OT1/cmtt/m/n --> OT1/lbt/m/n on input line 147. LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' (Font) OT1/lb/b/n --> OT1/lb/b/n on input line 148. LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' (Font) OT1/lbs/m/n --> OT1/lbs/b/n on input line 149. LaTeX Font Info: Overwriting math alphabet `\mathrm' in version `bold' (Font) OT1/lb/m/n --> OT1/lb/b/n on input line 150. LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' (Font) OT1/lb/m/it --> OT1/lb/b/it on input line 151. LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' (Font) OT1/lbt/m/n --> OT1/lbt/b/n on input line 152. LaTeX Font Info: Redeclaring math accent \vec on input line 161. LaTeX Font Info: Redeclaring math accent \dot on input line 162. LaTeX Font Info: Redeclaring math symbol \Gamma on input line 287. LaTeX Font Info: Redeclaring math symbol \Delta on input line 288. LaTeX Font Info: Redeclaring math symbol \Theta on input line 289. LaTeX Font Info: Redeclaring math symbol \Lambda on input line 290. LaTeX Font Info: Redeclaring math symbol \Xi on input line 291. LaTeX Font Info: Redeclaring math symbol \Pi on input line 292. LaTeX Font Info: Redeclaring math symbol \Sigma on input line 293. LaTeX Font Info: Redeclaring math symbol \Upsilon on input line 294. LaTeX Font Info: Redeclaring math symbol \Phi on input line 295. LaTeX Font Info: Redeclaring math symbol \Psi on input line 296. LaTeX Font Info: Redeclaring math symbol \Omega on input line 297. LaTeX Font Info: Redeclaring math symbol \rightleftharpoons on input line 35 6. LaTeX Font Info: Redeclaring math symbol \leftrightharpoons on input line 35 7. LaTeX Font Info: Redeclaring math symbol \angle on input line 440. LaTeX Font Info: Redeclaring math symbol \simeq on input line 539. LaTeX Font Info: Redeclaring math symbol \hbar on input line 562. )) (d:/yy/latex/amslatex/amsmath.sty Package: amsmath 1995/02/23 v1.2b AMS math features \@mathmargin=\skip43 (d:/yy/latex/amslatex/amstext.sty Package: amstext 1995/01/25 v1.2 (d:/yy/latex/amslatex/amsgen.sty File: amsgen.sty 1995/02/01 v1.2a \@emptytoks=\toks14 \ex@=\dimen103 )) (d:/yy/latex/amslatex/amsbsy.sty Package: amsbsy 1995/01/20 v1.2 \pmbraise@=\dimen104 ) (d:/yy/latex/amslatex/amsopn.sty Package: amsopn 1995/02/20 v1.2a operator names ) LaTeX Info: Redefining \frac on input line 181. \uproot@=\count90 \leftroot@=\count91 \classnum@=\count92 \DOTSCASE@=\count93 LaTeX Info: Redefining \dots on input line 328. LaTeX Info: Redefining \ldots on input line 411. LaTeX Info: Redefining \cdots on input line 415. \Mathstrutbox@=\box26 \strutbox@=\box27 \big@size=\dimen105 LaTeX Font Info: Redeclaring font encoding OML on input line 493. LaTeX Font Info: Redeclaring font encoding OMS on input line 494. \skewcharcount@=\count94 \familycount@=\count95 \pointcount@=\count96 \accentdimen@=\dimen106 \accentmu@=\count97 \minaw@=\dimen107 \c@MaxMatrixCols=\count98 \dotsspace@=\muskip10 \c@parentequation=\count99 \dspbrk@lvl=\count100 \tag@help=\toks15 \row@=\count101 \column@=\count102 \maxfields@=\count103 \andhelp@=\toks16 \eqnshift@=\dimen108 \alignsep@=\dimen109 \tagshift@=\dimen110 \tagwidth@=\dimen111 \totwidth@=\dimen112 \lineht@=\dimen113 \@envbody=\toks17 \multlinegap=\skip44 \multlinetaggap=\skip45 ) (ovrright.aux) LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 5. LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Checking defaults for LMR/lbm/m/n on input line 5. LaTeX Font Info: Try loading font information for LMR+lbm on input line 5. (d:/yy/latex/psnfss/LMRlbm.fd) LaTeX Font Info: ... okay on input line 5. LaTeX Font Info: Try loading font information for OT1+lb on input line 5. (d:/yy/latex/psnfss/OT1lb.fd LaTeX Font Info: File OT1lb.fd loading (Y&Ynames) LucidaBright on input line 20. ) LaTeX Font Info: Font shape `OT1/lb/m/n' will be (Font) scaled to size 9.49997pt on input line 5. LaTeX Font Info: Font shape `OT1/lb/m/n' will be (Font) scaled to size 6.93004pt on input line 6. LaTeX Font Info: Font shape `OT1/lb/m/n' will be (Font) scaled to size 5.19997pt on input line 6. LaTeX Font Info: Try loading font information for OML+lbm on input line 6. (d:/yy/latex/psnfss/OMLlbm.fd) LaTeX Font Info: Font shape `OML/lbm/m/it' will be (Font) scaled to size 9.49997pt on input line 6. LaTeX Font Info: Font shape `OML/lbm/m/it' will be (Font) scaled to size 6.93004pt on input line 6. LaTeX Font Info: Font shape `OML/lbm/m/it' will be (Font) scaled to size 5.19997pt on input line 6. LaTeX Font Info: Try loading font information for OMS+lby on input line 6. (d:/yy/latex/psnfss/OMSlby.fd) LaTeX Font Info: Font shape `OMS/lby/m/n' will be (Font) scaled to size 9.49997pt on input line 6. LaTeX Font Info: Font shape `OMS/lby/m/n' will be (Font) scaled to size 6.93004pt on input line 6. LaTeX Font Info: Font shape `OMS/lby/m/n' will be (Font) scaled to size 5.19997pt on input line 6. LaTeX Font Info: Try loading font information for OMX+lbv on input line 6. (d:/yy/latex/psnfss/OMXlbv.fd) LaTeX Font Info: Font shape `OMX/lbv/m/n' will be (Font) scaled to size 9.49997pt on input line 6. LaTeX Font Info: Font shape `OMX/lbv/m/n' will be (Font) scaled to size 6.93004pt on input line 6. LaTeX Font Info: Font shape `OMX/lbv/m/n' will be (Font) scaled to size 5.19997pt on input line 6. LaTeX Font Info: Font shape `OML/lbm/m/n' will be (Font) scaled to size 9.49997pt on input line 6. LaTeX Font Info: Font shape `OML/lbm/m/n' will be (Font) scaled to size 6.93004pt on input line 6. LaTeX Font Info: Font shape `OML/lbm/m/n' will be (Font) scaled to size 5.19997pt on input line 6. LaTeX Font Info: Font shape `OT1/lb/m/it' will be (Font) scaled to size 9.49997pt on input line 6. LaTeX Font Info: Font shape `OT1/lb/m/it' will be (Font) scaled to size 6.93004pt on input line 6. LaTeX Font Info: Font shape `OT1/lb/m/it' will be (Font) scaled to size 5.19997pt on input line 6. LaTeX Font Info: Font shape `LMR/lbm/m/n' will be (Font) scaled to size 9.49997pt on input line 6. LaTeX Font Info: Font shape `LMR/lbm/m/n' will be (Font) scaled to size 6.93004pt on input line 6. LaTeX Font Info: Font shape `LMR/lbm/m/n' will be (Font) scaled to size 5.19997pt on input line 6. LaTeX Font Info: Font shape `LMR/lbm/b/n' will be (Font) scaled to size 9.49997pt on input line 6. LaTeX Font Info: Font shape `LMR/lbm/b/n' will be (Font) scaled to size 6.93004pt on input line 6. LaTeX Font Info: Font shape `LMR/lbm/b/n' will be (Font) scaled to size 5.19997pt on input line 6. [1 ] (ovrright.aux) ) Here is how much of TeX's memory you used: 1179 strings out of 5000 15267 string characters out of 40000 55995 words of memory out of 65534 4055 multiletter control sequences out of 9244 15677 words of font info for 38 fonts, out of 24661 for 511 15 hyphenation exceptions out of 1009 28i,13n,24p,375b,114s stack positions out of 600i,100n,200p,8192b,6000s Output written on ovrright.dvi (1 page, 5012 bytes). ============================================================ End of LaTeX2e bug report. ============================================================ Jean-Pierre Vial >Fix: >Audit-Trail: >Unformatted: LaTeX2e bug report. Generated by latexbug.tex on 1996/10/06 Reports may be submitted by email to latex-bugs@uni-mainz.de Please use the subject line: Subject: overrightarrow misplaced with amsmath AND lucidbry ============================================================ *** Initex configuration files hyphen.cfg *** ------- End of forwarded message ------- From carlisle@ma.man.ac.uk Tue Jan 7 18:12:58 1997 X-VM-v5-Data: ([nil nil nil nil t nil nil nil nil] ["44001" "Tue" "7" "January" "1997" "18:09:15" "GMT" "David Carlisle" "carlisle@ma.man.ac.uk" "<199701071809.SAA24795@vummath.ma.man.ac.uk>" "1318" "mathptm" "^From:" nil nil "1" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.3/8.8.3) with ESMTP id SAA15334 for ; Tue, 7 Jan 1997 18:12:57 GMT Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Tue, 7 Jan 1997 18:12:55 +0000 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by pillar.elsevier.co.uk (8.8.3/8.8.3) with SMTP id SAA08881 for ; Tue, 7 Jan 1997 18:11:52 GMT Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id SAA24795; Tue, 7 Jan 1997 18:09:15 GMT Message-Id: <199701071809.SAA24795@vummath.ma.man.ac.uk> Content-Length: 44000 From: David Carlisle To: alanje@cogs.sussex.ac.uk, s.rahtz@elsevier.co.uk Subject: mathptm Date: Tue, 7 Jan 1997 18:09:15 GMT Any chance that mathptm could go \let\@tempa\version@elt \def\version@elt#1{% \ifx\mv@bold#1\else\noexpand\version@elt\noexpand#1\fi} \edef\version@list{\version@list} \let\version@elt\@tempa \let\mv@bold\@undefined as well as \def\boldmath{% \@warning{there is no bold Symbol font}% \global\let\boldmath=\relax } (by the way that should be \PackageWarning{mathptm} :-) This really removes the bold math version internal data structures which saves a bit of space but more importantly it means I can test reliably for the presence or not of a workable set of bold math fonts by going \ifx\mv@bold\@undefined .... The mathtime package does this (in fact I just copied it from there:-) Or at least it will when the new FMi/DPC mathtime support hits the streets (not announced yet). In a similar vein, stmaryrd.sty goes \SetSymbolFont{stmry}{bold}{U}{stmry}{b}{n} which is a bit of a pain as there is no bold font (I think?) and then it relies on the fd file substitution to get back to m weight. This means I have to go \SetSymbolFont{stmry}{bold}{U}{stmry}{m}{n}% so that the `bm' package can recognise that there is no bold font. \bm is a bit like \boldsymbol but takes a `bit' more care over getting the spacing right, expanding its argument down to primitive tokens and then dissasembling the mathcodes/delcodes, math class etc and re-constructing a token with the same math spacing but bold. Either by changing the \fam if the bold font is allocated in the normal math version (done for the standard symbol fonts, so it works with delimiters accents etc) otherwise it uses a \mathcoice/\boldmath construct if it thinks that there is a bold math version with a different font allocated for the current slot. or a `poor man's bold' overprinting fudge if not. Seems to work OK (I think Berthold might even pay for it:-) but currently its automatic interogation of the math version setup is thrown off line by mathptm and stmaryrd... David In case you want to play... ================== \def\batchfile{bm.ins} \input docstrip.tex \preamble \endpreamble \keepsilent \generateFile{bm.sty}{f}{\from{bm.dtx}{package}} ================== % % \iffalse %% Copyright 1996 1997 David Carlisle Frank Mittelbach %% %% TEST VERSION NOT FOR DISTRIBUTION % % %<*dtx> \ProvidesFile{bm.dtx} % %\NeedsTeXFormat{LaTeX2e} %\ProvidesPackage{bm} %\ProvidesFile{bm.drv} % \fi % \ProvidesFile{bm.dtx} [1997/01/06 v0.11 Bold Symbol Support (DPC/FMi)] % % \iffalse %<*driver> \documentclass{ltxdoc} \usepackage{bm} \DocInput{bm.dtx} \end{document} % % \fi % % \CheckSum{722} % % \GetFileInfo{bm.dtx} % \begin{document} % \title{The \textsf{bm} package\thanks{This file % has version number \fileversion, last % revised \filedate.}} % % \date{\filedate} % \author{David Carlisle with support by Frank Mittelbach} % \maketitle % % \section{Introduction} % % This package defines commands to access bold math % symbols. The basic command is |\bm| which may be used to make the % math expression in its argument be typeset using bold fonts. % % The syntax of |\bm| is:\\ % |\bm|\marg{math expression}\\ % So |$\alpha \not= \bm{\alpha}$| produces $\alpha \not= \bm{\alpha}$. % % |\bm| goes to some trouble to preserve the spacing, so that for % instance |\bm<| is a bold $\bm<$ but with the correct |\mathrel| % spacing that \TeX\ gives to $<$. The calculations that \TeX\ needs to % do for |\bm| can be quite involved and so a definition form is % provided. % % |\DeclareBoldMathCommand|%^^A % \oarg{math version}\marg{cmd}\marg{math expression} % % Defines |\cmd| to be the bold form of the math expression. % The \meta{math version} defaults to `bold' (i.e., |\boldmath|). % % For relatively simple expressions, the resulting definitions are very % efficient, for instance after:\\ % |\DeclareBoldMathCommand\balpha{\alpha}|\\ % |\balpha| is a single `mathchardef' token producing a bold alpha, % and so is just as fast to execute as |\alpha|. % % The above command is mainly intended for use in packages. % For occasional use in \LaTeX\ documents, and for compatibility % with the plain \TeX\ support for the mathtime fonts, a `user-level' % version, |\bmdefine| is provided that is equivalent to:\\ % |\DeclareBoldMathCommand[bold]|. % % If there is a `heavy' math version defined (usually accessed by a % user-command |\heavymath|) then a similar command |\hm| % is defined which access these `ultra bold' fonts. Currently this is % probably only useful with the `mathtime plus' font collection. % Definitions of commands that use these fonts may be made by % specifying the optional argument `heavy' to |\DeclareBoldMathCommand|. % Again an abbreviation, |\hmdefine|, is provided, equivalent to:\\ % |\DeclareBoldMathCommand[heavy]|. % % The command names (but not the implementation) are taken from Michael % Spivak's macros to support the mathtime fonts for plain \TeX. In those % original macros, the syntax for |\bmdefine| was % |\bmdefine\balpha{\bm\alpha}| (with a nested |\bm|). This syntax also % works with this package. % % \section{Features} % In most cases this package should work in a fairly self explanatory % way, but there are some things that might not be obvious. % % \subsection{Interaction with Math Alphabet Commands} % % As mentioned above, |\bm| goes to some trouble to try to make a % command that is just like its argument, but using a bold font. % This does not always produce the effect that you might expect. %\begin{verbatim} % $1 g \bm{g}$ % $2 \mathrm{g \bm{g}}$ % $3 {g} \bm{{g}}$ % $4 \mathrm{{g} \bm{{g}}}$ % $5 \mathrm{g} \bm{\mathrm{g}}$ %\end{verbatim} % produces the following: % \begin{flushleft} % $1 g \bm{g}$ % $2 \mathrm{g \bm{g}}$ % $3 {g} \bm{{g}}$ % $4 \mathrm{{g} \bm{{g}}}$ % $5 \mathrm{g} \bm{\mathrm{g}}$ % \end{flushleft} % In math mode `g' is effectively a command that produces the letter `g' % from the `letters' alphabet, unless a Math Alphabet command is in % effect, in which case the `g' comes from the specified alphabet. % |\bm{g}| makes an equivalent command, but which defaults to a bold % letter alphabet. So in the first example |\bm{g}| is bold math italic, % but in the second example the |\mathrm| applies to both |g| and % |\bm{g}| in the same way, and so they are both roman. % % |\bm| only inspects the `top level' definition of a command, for more % complicated expressions, and anything inside a |{ }| group, |\bm| % forces bold fonts by essentially the same (slow) technique used by the % AMS |\boldsymbol| command (but |\bm| still takes more care of the % spacing). So the third example produces identical output to the first % (but \TeX\ takes more time producing it). % % In the fourth example the |\mathrm{\bm{g}}| is essentially % equivalent to |\mathrm{\mbox{\boldmath$g$}}|. Currently math alphabet % settings are not passed down to `nested' math lists, and so in this % example, the |\mathrm| has no effect, and a bold math italic $\bm g$ % is obtained. % % Similarly the last example is equivalent to % |$\mbox{\boldmath$\mathrm{g}$}}| and so in this case, one obtains a % bold roman \textbf{g}. % % \subsection{Delimiters} % \TeX\ can treat character tokens in two\footnote % {Well more than two really.} % ways. If there is a preceding % |\left| or |\right| it can treat them as a delimiter, otherwise it can % treat them as a standard character. For example |\left<\right>| % produces $\left<\right>$, which is totally different from |<>|, which % produces $<>$. % % \TeX\ can only do this for character tokens. Commands such as % |\langle| do not act in this way. This means that |\bm| has to decide % whether to treat a character as a delimiter or not. The rule it uses % is, it makes a delimiter command for a character if the previous % token in the argument was |\left| or |\right|. So |\left\bm{<}| does % not work, but |\bm{\left<}| does. % % \subsection{Command Arguments} % % Normally if a command takes arguments the full command, including % any arguments, should be included in |\bm|. % % So |\bm{\overbrace{abc}}| (producing \smash{$\bm{\overbrace{abc}}$}) % not % |\bm{\overbrace}{abc}|. If you do not include all the arguments you % will typically get the error message:\\ % |Runaway argument?|\\ % |! Forbidden control sequence found while scanning use of| % \texttt{\ldots} % % However commands defined in terms of the \TeX\ accent and % radical primitives \emph{may} be used without their arguments. % So |\bm{\hat}{a}| produces $\bm{\hat}{a}$, a bold accent over a % non-bold $a$ (compare $\hat{a}$) % whereas |\bm{\hat{a}}| makes both the $a$ and the accent bold, % $\bm{\hat{a}}$. % Similarly, although the \LaTeX\ command |\sqrt| must be used with its % arguments, |\sqrtsign| may be used as in |\bm\sqrtsign{abc}| to % produce $\bm\sqrtsign{abc}$ rather than $\sqrtsign{abc}$ or % $\bm{\sqrtsign{abc}}$ % % If you really need to make a command with arguments use bold fonts % without making all of the arguments bold, you can explicitly % reset the math version in the argument, eg:\\ % $\begin{array}{ccc} % |\sqrt{xyz}|&|\bm{\sqrt{xyz}}|&|\bm{\sqrt{\mbox{\unboldmath$xyz$}}}|\\ % \sqrt{xyz}& \bm{\sqrt{xyz}}& \bm{\sqrt{\mbox{\unboldmath$xyz$}}} % \end{array}$ % % \subsection{Bold fonts} % This package interrogates the font allocations of the bold and heavy % math versions, to determine which bold fonts are available. % This means that it is best to load the package \emph{after} % any packages that define new symbol fonts, or (like the % \textsf{mathtime} package) completely change the symbol font % allocations. % % If no bold font appears to be available for a particular symbol, % |\bm| will use `poor man's bold' that is, overprinting the same % character in slightly offset % positions to give an appearance of boldness. % % In the standard Computer Modern font set, there is no bold % `large symbols' font. In the `mathptm' and (standard) mathtime % font sets there are no bold math fonts. In the `mathtime plus' % font set there are suitable fonts for bold and heavy math setting, % and so |\bm| and |\hm| work well. % % \subsection{Strange failures} % In order to get the correct spacing, |\bm| has to `investigate' the % definition of the commands in its argument. It is possible that % some strange constructions could `confuse' this investigation. % If this happens then \LaTeX\ will almost certainly stop with a strange % error. This should not happen with any of the math symbols % defined in the base \LaTeX\ or AMS distributions, or any commands % defined in terms of those symbols using normal \LaTeX\ math % constructs. However if some command does fail to work inside |\bm| % you should always be able to surround it with an extra set of braces % |\bm{{\cmd}}| rather than |\bm{\cmd}|. |\bm| will not then attempt % to set the correct spacing, so you may need to set it explicitly, % for instance, for a relation, |\bm{\mathrel{\cmd}}|. % % \StopEventually{} % % \section{Implementation} % % \changes{v0.01}{1996/12/01} % {Initial DPC attempt, % remove all assumptions about mathtime encoding} % \changes{v0.02}{1996/12/02} % {Add \cs{mathcoice} stuff} % \changes{v0.03}{1996/12/12} % {Completely reimplement (again). Add \cs{bmdefine}.} % \changes{v0.04}{1996/12/12} % {Add \cs{hm} and support for special active mathcode.} % \changes{v0.05}{1996/12/12} % {Assorted fixes} % % % % The commands |\bm| and |\hm| work by defining a number of additional % symbol fonts corresponding to the standard ones % `operators', `letters', `symbols', and `largesymbols'. % The names for these symbols fonts are produced by prefixing the usual % name with `bold' or `heavy'. % % For maximum flexibility we get the font definitions by looking in the % corresponding math versions, i.e., into |\mv@bold| and if defined into % |\mv@heavy|. % % \begin{macrocode} %<*package> % \end{macrocode} % \changes{v0.09}{1996/12/19} % {Always define \cs{bm} even if no bold math} % % \changes{v0.10}{1997/01/04} % {Macro added} % \begin{macro}{\bm@table} % \begin{macro}{\bm@boldtable} % \begin{macro}{\bm@heavytable} % The table, |\bm@table|, (which is locally |\let| to either the bold % or heavy version) defines, for each \meta{math group} (\meta{fam}), % the `offset' to the bold version of the specified symbol font. % If there is no bold symbol font defined, the offset will be % set to zero if there is a bold font assigned to this slot in the % bold math version, or $-1$ if the font in the bold math version % is the same as the one in the normal math version. In this case % a `poor man's bold' system of overprinting is used to achieve % boldness where this is possible. % % The settings are made at the time this package is read, and so % it is best to load this package late, after any font loading packages % have been loaded. Symbol fonts loaded after this package will get the % offset of zero, so they will still be made bold by |\bm| as long as an % appropriate font is declared for the bold math version. % % |\bm@boldtable| and |\bm@heavytable| are set up using very similar % code, which is temporarily defined to |\bm|, to save wasting a csname. % Similarly |\bm@pmb|\ldots\ (which will be defined later) are used % as scratch macros. % % The general plan. Run through the fonts allocated to the normal math % version. Ignore \meta{math alphabet} allocations\footnote{For now?} % but for each math symbol font, look in the math version specified by % |#1| (bold or heavy). If the font there is different, then allocate % a new symbol font in the normal math version to access that bold font % and place the numerical difference between the allocations of the bold % and normal font into the table being built (|\bm@boldtable|, if |#1| % is bold). If the symbol allocation is already greater than |\bm@max| % do not allocate a new symbol font, but rather set the offset in the % table to zero. |\bm| will detect this, and use |\boldmath| on its % argument in this case, so the bold font will be accessed but more % slowly than using a direct access to a bold font allocated into the % normal math version. If the font allocated in the bold math version is % the same as the font in the normal math version, set the offset to % $-1$, which is a flag value that causes |\bm| to use `poor man's bold' % overprinting three copies of the symbol, offset slightly to give an % appearance of boldness. % % Fonts containing delimiters and math accents \emph{must} be allocated % into the normal math version if they are to be used with |\bm|. (In % these cases |\bm| will produce the normal weight symbol, rather than % using |\boldmath| or poor man's bold.) % % \begin{macrocode} \def\bm#1{% % \end{macrocode} % This code can not work inside a group, as that would affect any symbol % font allocations, so instead use some scratch macros to save and % restore the definitions of commands we need to change locally. % \begin{macrocode} \let\bm@pmb\install@mathalphabet \let\bm@pmb@\getanddefine@fonts \let\bm@pmb@@\or % \end{macrocode} % Make |\or| non-expandable, so we can build an |\ifcase| bit-by-bit % in a sequence of |\edef|s. % \begin{macrocode} \let\or\relax % \end{macrocode} % % Initialise the table (to |\@gobble| to remove the first |\or|). % \begin{macrocode} \expandafter\let\csname bm@#1table\endcsname\@gobble % \end{macrocode} % % Helper macro that adds the next entry to the table being built. % \begin{macrocode} \def\bm@define##1{% \expandafter\xdef\csname bm@#1table\endcsname{% \csname bm@#1table\endcsname\or##1}}% % \end{macrocode} % % Each symbol font is recorded in the math version list by a sequence % such as:\\ % | \getanddefine@fonts \symsymbols \OMS/cmsy/m/n|\\ % Where the first argument is a chardef token carrying the number % allocated (to symbols, in this example), and the second argument is a % csname whose \emph{name} denotes the font used. % So locally redefine |\getanddefine@fonts| to compare |#2| with % the name in the appropriate slot in the bold math version. % \begin{macrocode} \def\getanddefine@fonts##1##2{% \def\@tempa{##2}% % \end{macrocode} % % \begin{macrocode} \def\@tempb####1##1####2####3\@nil{\def\@tempb{####2}}% % \end{macrocode} % % \begin{macrocode} \expandafter\expandafter\expandafter \@tempb\csname mv@#1\endcsname\@nil % \end{macrocode} % % Now |\@tempa| and |\@tempb| contain the names of the fonts allocated % to this slot in the two math versions. % \begin{macrocode} \ifx\@tempa\@tempb % \end{macrocode} % If they are the same, set this offset to $-1$, as a flag to use % poor man's bold. % \begin{macrocode} \bm@define\m@ne \else % \end{macrocode} % Else make a new name by adjoining |#1| to the name of the symbol font % eg, |\symboldsymbols| to match |\symsymbols|. If that font has already % been allocated, or if we are below |\bm@max| then the table will be % set with the offset between the two fonts. otherwise set the offset to % zero (so |\boldmath| will be used to access the font). % \begin{macrocode} \edef\@tempa{sym#1\expandafter\@gobblefour\string##1}% \ifnum##1>% \expandafter\ifx\csname\@tempa\endcsname\relax \bm@max \else \maxdimen \fi % \end{macrocode} % % \begin{macrocode} \bm@define\z@ \else % \end{macrocode} % % If the font is not yet allocated, allocate it now, using % an internal hack into |\DeclareMathSymbolFont|. % \begin{macrocode} \expandafter\ifx\csname\@tempa\endcsname\relax \begingroup \escapechar\m@ne \edef\@tempb{\endgroup \noexpand\split@name \expandafter\string\@tempb}% \@tempb/\@nil \expandafter\new@mathgroup\csname\@tempa\endcsname \expandafter\new@symbolfont\csname\@tempa\endcsname \f@encoding\f@family\f@series\f@shape \else % \end{macrocode} % If the font has been allocated already, use the existing allocation. % \begin{macrocode} \PackageInfo{bm}% {Symbol font \@tempa\space already defined.\MessageBreak Not overwriting it}% \fi % \end{macrocode} % Whether the font has just been allocated, or whether it was previously % allocated, compute the offset and add it to the table. % \begin{macrocode} \count@\csname\@tempa\endcsname \advance\count@-##1% \bm@define{\the\count@\relax}% \fi \fi}% % \end{macrocode} % % The math version list also contains information about math alphabet % commands, but we want to ignore those here, so \ldots % \begin{macrocode} \let\install@mathalphabet\@gobbletwo % \end{macrocode} % % Having set up the local definitions, execute the list for the normal % math version. % \begin{macrocode} \mv@normal % \end{macrocode} % % So now the offsets are all entered into the table, separated by % |\or|. % Finish off the definition by making this an |\ifcase|. Add a default % value of zero, so that any symbol fonts declared later will also % work, as long as a bold version is assigned to the bold math version. % \begin{macrocode} \expandafter\xdef\csname bm@#1table\endcsname{% \noexpand\ifcase\@tempcnta \csname bm@#1table\endcsname \noexpand\else \z@ \noexpand\fi}% % \end{macrocode} % % Put things back as they were. % \begin{macrocode} \let\install@mathalphabet\bm@pmb \let\getanddefine@fonts\bm@pmb@ \let\or\bm@pmb@@} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\bm@max} % To save declaring too many symbol fonts, do not auto-declare % any bold symbol fonts for symbol fonts in slots higher than % |\bm@max|. The same number is used for the heavy fonts, so with this % setting of four, potentially eight new fonts could be declared % in addition to the four original symbol fonts, just leaving space for % four math alphabets. If this is set to a higher value before this % package is loaded, keep that value. % \begin{macrocode} \ifx\bm@max\@undefined \chardef\bm@max=4 \fi % \end{macrocode} % % If there is no bold math version, It is very easy to set up % the table, no need to use all the tricky code above. % Also, at the end of the package redefine the internal macro % that |\bm| uses to call |\boldmath|, to use poor man's bold % instead. % \begin{macrocode} \ifx\mv@bold\@undefined \def\bm@boldtable{\m@ne} \AtEndOfPackage{% \def\bm@gr@up#1#2{% \bm@pmb{#2}}} \else % \end{macrocode} % Otherwise use the definition of |\bm| above to set up |\bm@boldtable| % by comparing the fonts available in the normal and bold math versions. % \begin{macrocode} \bm{bold} % \end{macrocode} % % \begin{macro}{\mathbf} % As the bold font has been defined as a symbol font, make |\mathbf| % access that rather than have it allocate a new math group for the % same font. % \begin{macrocode} \DeclareSymbolFontAlphabet\mathbf{boldoperators} % \end{macrocode} % \end{macro} % % \begin{macrocode} \fi % \end{macrocode} % % Similarly if there is a heavy math version, set up |\bm@heavytable|. % (If there is no heavy math version, do nothing here, as |\hm| will be % set to |\bm| later, once that is defined.) % \begin{macrocode} \ifx\mv@heavy\@undefined \else \bm{heavy} \fi % \end{macrocode} % \end{macro} % % % \begin{macro}{\bm@general} % |\bm| is pretty much |\bmdefine\bm@command| followed by executing % |\bm@command|. It would in principle be possible to execute the % emboldened tokens directly, rather than building up a macro first, % but (as I learned the hard way) it's difficult to do this in the midst % of all these nested |\if| constructs. % First extract the central bit of code for |\hm| |\bm| |\hmdefine| and % |\bmdefine|. Note that in the case of the inline versions they take % an argument and brace it, rather than relying on |\bm@general| to pick % up the argument. This makes the code robust with respect to premature % expansion. % \begin{macrocode} \def\bm@general#1#2#3#4{% \begingroup % \end{macrocode} % First locally disable |\bm| and |\hm|, as they would mess things % up terribly, and the original Spivak versions used the syntax % |\bmdefine\balpha{\bm\alpha}|. % \begin{macrocode} \let\bm\@empty \let\hm\@empty % \end{macrocode} % Now initialise The commands used to save the tokens constructed. % \begin{macrocode} \global\let\bm@command\@empty \let\@let@token\@empty % \end{macrocode} % As we want to expand the macros to look at their definition % turn off protection. Otherwise the |\protect| will be carried over % and apply to the wrong token, eg |{|. % \begin{macrocode} \let\protect\@empty \let\@typeset@protect\@empty % \end{macrocode} % Set up either bold or heavy % \begin{macrocode} \def\bm@mathchoice{\bm@m@thchoice#1}% \def\bm@group{\bm@gr@up#1}% \let\bm@table#2% % \end{macrocode} % These two save on the number of |\ifx| tests below. % \begin{macrocode} \let\right\left \let\mskip\mkern % \end{macrocode} % For optional argument commands. This expandable version of % |\@ifnextchar| is not 100\% safe, but works for |\sqrt| unless % you put something really strange in the arguments. % \changes{v0.11}{1997/01/06} % {\cs{@ifnextchar} made safe.} % \begin{macrocode} \def\@ifnextchar##1##2##3##4{% \if##1##4% \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi {##2##4}{##3{##4}}}% % \end{macrocode} % For AMS definitions. % \begin{macrocode} \let\DN@\copy \let\FN@\copy \let\next@\copy \global\let\bm@first\@empty % \end{macrocode} % Make sure things like |\pounds| take the `math branch' even % in |\bmdefine| (which is not executed in math mode). % \begin{macrocode} \let\ifmmode\iftrue % \end{macrocode} % The last redefinition just makes |\mathit| type commands re-insert % themselves (more or less) as if they are allowed to expand % they die horribly if the expansions are put into |\mathchoice| % and so executed more than once. % \begin{macrocode} \def\select@group##1##2##3##4{{% \protect##1{##4}}}% \def\use@mathgroup##1##2##3{{% \protect\use@mathgroup##1{##2}{##3}}}% % \end{macrocode} % % So now start looking at the argument. % \changes{v0.10}{1997/01/04} % {Use \cs{bm@end}} % \begin{macrocode} \bm@expand#4\bm@end \endgroup % \end{macrocode} % % Finally outside the group either execute |\bm@command| (for |\bm|) % or save its definition (for |\bmdefine|). % \begin{macrocode} #3} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm} % Set up the bold (rather than heavy) version, and run |\bm@command| % right at the end, to execute the emboldened argument. % \begin{macrocode} \DeclareRobustCommand\bm[1]{% \bm@general\boldmath\bm@boldtable\bm@command{#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\DeclareBoldMathCommand} % \changes{v0.07}{1996/12/14} % {Macro added} % \begin{macro}{\bm@declare} % \changes{v0.07}{1996/12/14} % {Macro added} % |DeclareBoldMathCommand|%^^A % \oarg{mathversion}\marg{command}\marg{math expression}\\ % looks like |\bm| except at the end the specified command is % globally defined to be |\bm@command|. % The \meta{mathversion} defaults to `bold'. % \begin{macrocode} \def\DeclareBoldMathCommand{\@testopt\bm@declare{bold}} % \end{macrocode} % % \begin{macrocode} \def\bm@declare[#1]#2{% \expandafter\bm@general \csname #1math\expandafter\endcsname \csname bm@#1table\endcsname {\bm@define#2}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\bmdefine} % |\bmdefine| Shorthand for |\DeclareBoldMathCommand[bold]|. % % |\bm| is empty within the definition, so that either\\ % |\bmdefine\balpha{\bm\alpha}| or |\bmdefine\balpha{\alpha}| \\ % may be used. (The former just for compatibility with the original % version for plain \TeX). % \begin{macrocode} \def\bmdefine{\DeclareBoldMathCommand[bold]} % \end{macrocode} % \end{macro} % % \begin{macro}{\hm} % \begin{macro}{\hmdefine} % Same again for |\hm|. % \begin{macrocode} \ifx\mv@heavy\@undefined % \end{macrocode} % % If there is no heavy math version defined, let |\hm| be defined % as |\bm|. Currently there is no warning given, perhaps there should % be, or even an error? % \begin{macrocode} \let\hm\bm \let\heavymath\boldmath \let\bm@heavytable\bm@boldtable % \end{macrocode} % % \begin{macrocode} \else % \end{macrocode} % % Otherwise define |\hm| and |\hmdefine| in direct analogy with the % above. % \begin{macrocode} \DeclareRobustCommand\hm[1]{% \bm@general\heavymath\bm@heavytable\bm@command{#1}} % \end{macrocode} % % \begin{macrocode} \def\hmdefine{\DeclareBoldMathCommand[heavy]} % \end{macrocode} % % \begin{macrocode} \fi % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\bm@end} % \changes{v0.10}{1997/01/04} % {Macro added} % Normally speaking |\outer| declarations should be avoided at all % costs. (\LaTeX\ redefines all of plain \TeX's allocation macros % to be non-outer.) However this is one place where it seems like a % good idea. If a command taking an argument is put in |\bm| without % its argument, then the |\@@end| terminating token would be taken as % the argument, and so the rest of the paragraph would be gobbled up % and the \LaTeX\ would die horribly. So make the internal terminating % token |\outer|. (The actual test for termination is made against % |@@end| not |\bm@end| as this macro will be expanded by the look-ahead % system.) % \begin{macrocode} \outer\def\bm@end{\@@end} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@expand} % \changes{v0.11}{1997/01/06} % {Double up.} % \begin{macro}{\bm@exp@nd} % \changes{v0.11}{1997/01/06} % {Macro added} % |\afterassignment| trick to fully expand the following tokens until % the first non-expandable token is revealed. This may discard a space % token (which is what \TeX\ is looking for) but that doesn't matter in % math mode. The expansion lookahead is done twice in case any stray % space tokens have crept in.\footnote{The need for this was noticed % while testing \cs{sqrt}. The definition of \cs{root} inherited from % plain \TeX\ has an anomalous space token, that is normally harmless % (just wastes memory), but which killed earlier versions of this % package.} % \begin{macrocode} \def\bm@expand{\afterassignment\bm@exp@nd\count@`\a} % \end{macrocode} % % \begin{macrocode} \def\bm@exp@nd{\afterassignment\bm@test\count@`\a} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\bm@test} % Normally we will grab the non-expandable token as a macro argument % but better check it is not |{| first. Save the previous token % so we can check later if it was |\left|, in which case use the delcode % rather than the mathcode if the current token is a character. % \begin{macrocode} \def\bm@test{% \let\bm@previous\@let@token \futurelet\@let@token\bm@test@} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@test@} % If looking at a single token, switch to |\bm@test@token|, else if % looking at a |{ }| group, grab the whole group with |\bm@group|. % A |\bgroup| token will take the wrong branch here (currently not % trapped). % \begin{macrocode} \def\bm@test@{% \ifx\@let@token\bgroup \expandafter\bm@group \else \expandafter\bm@test@token \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@gr@up} % If faced with a group, % If we are in math mode, stick it in a |\boldsymbol| like construct % and then recurse on |\bm@expand|. % Otherwise just use |\bfseries\boldmath|. % The actual test is deferred till `run time'. % Here and elsewhere could deal with the inner list with an inner call % to |\bm|, but that doesn't seem to gain very much, and complicates the % code quite a bit. % % |#1| is either |\boldmath| or |\heavymath|. % \begin{macrocode} \def\bm@gr@up#1#2{% \bm@add{{\bm@gr@@p#1{#2}}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@gr@@p} % |#1| is either |\boldmath| or |\heavymath|. % \begin{macrocode} \def\bm@gr@@p#1#2{% \ifmmode \bm@mchoice#1{#2}{#2}{#2}{#2}% \else \bfseries#1#2% \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@test@token} % If not facing a |{ }| group then test to see what we have. % Basic idea: Trap |\mathchardef| tokens, character tokens, and calls to % |\mathchar|, |\mathaccent|, etc, and change the \emph{math-group} % (fam) to point at the bold version. % Other things just copy straight over to the command being built. % (Anything inside a |\mathop| or similar will end up being made bold % as the |\mathop| will be copied over, but its argument will be made % bold by the group code above. % \begin{macrocode} \def\bm@test@token#1{% \let\bm@next\@empty % \end{macrocode} % % Stop here. Note that it is vital that the terminating token % is non-expandable and defined, rather than the usual \LaTeX\ % terminators |\@nil| or |\@@|. (Worse still would be a `quark' % like |docstrip|'s |\qStop|.) % \begin{macrocode} \ifx#1\@@end % \end{macrocode} % % |\bm@mathchoice| uses macro arguments, so need to make the tail % recursion explicit here. All the other cases recurse by way of % |\afterassignment| which means all the trailing |\fi| are eaten % while making the assignment. % \begin{macrocode} \else\ifx#1\mathchoice \let\bm@next\bm@mathchoice % \end{macrocode} % % The main point: Find these expressions, and change the mathgroup. % \begin{macrocode} \else\ifx#1\mathchar \afterassignment\bm@mathchar\count@ \else\ifx#1\mathaccent \afterassignment\bm@mathaccent\count@ \else\ifx#1\delimiter \afterassignment\bm@delimiter\count@ \else\ifx#1\radical \afterassignment\bm@radical\count@ % \end{macrocode} % % Need to trap spaces otherwise digits will get turned to bold % mathchars. % \begin{macrocode} \else\ifx#1\mkern \bm@register#1{\muskip\z@}% \else\ifx#1\kern \bm@register#1\dimen@ \else\ifx#1\penalty \bm@register#1\count@ % \end{macrocode} % % \begin{macrocode} \else\ifcat\noexpand#1\relax % \end{macrocode} % Other command, look if it's a mathchardef token (otherwise just add % it). % \begin{macrocode} \xdef\meaning@{\meaning#1}% \expandafter\bm@mchar@test\meaning@""\@nil#1% % \end{macrocode} % Character token. % If it is of catcode 11 or 12, get its mathcode. % If that is |"80000| bail out and just copy the character else % if the previous token was |\left| or |\right|, get the delcode % instead of the mathcode. % This currently means the $'$ in |a'| does not go bold. % but you can use |a^\prime| % \begin{macrocode} \else\ifcat.\ifcat a#1.\else#1\fi \ifx\bm@previous\left \count@\delcode`#1% \bm@delimiter \else \count@\mathcode`#1\relax \ifnum\count@=\mathcode`\'% \bm@add{#1}% \else \bm@mathchar \fi \fi \else % \end{macrocode} % And final possibility: % a character token of catcode other than 11 or 12. % \begin{macrocode} \bm@add{#1}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \bm@next} % \end{macrocode} % \end{macro} % % % \begin{macro}{\bm@define} % \changes{v0.08}{1996/12/18} % {Defined commands now always robust} % End code for |\bmdefine|. Define the given command name to the % robust form of the accumulated code. % % If |\bm@command| is equal to |\@gtempa| then it is a macro whose % expansion is a single call to |\mathchar|, so that can be optimised % with a |\mathchardef|. % \begin{macrocode} \def\bm@define#1{% \begingroup \ifx\bm@command\@gtempa \def\mathchar{\global\mathchardef#1}% \bm@command \else % \end{macrocode} % Rather than simply |\let#1\bm@command|, make the defined command % robust. |\bm@first| is normally empty, but might be something like % |\DOTSI| which needs to be lifted to the top level, in front % of any |\protect| because of the lookahead mechanism used % in the \textsf{amsmath} package. % \begin{macrocode} \toks@\expandafter{\bm@command}% \xdef#1{\bm@first\noexpand\bm@protect\noexpand#1{\the\toks@}}% \fi \endgroup} % \end{macrocode} % \end{macro} % % % \begin{macro}{\bm@protect} % \changes{v0.08}{1996/12/18} % {macro added} % Commands defined by |\bmdefine| re-insert themselves % if protection is enabled. % \begin{macrocode} \def\bm@protect#1{% \ifx\protect\@typeset@protect \expandafter\@firstofone \else \protect#1\expandafter\@gobble \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@mchoice} % |\boldsymbol|, more or less. % |#1| is either |\boldmath| or |\heavymath|. % \begin{macrocode} \def\bm@mchoice#1#2#3#4#5{% \mathchoice{\hbox{#1$\displaystyle\m@th#2$}}% {\hbox{#1$\textstyle\m@th#3$}}% {\hbox{#1$\scriptstyle\m@th#4$}}% {\hbox{#1$\scriptscriptstyle\m@th#5$}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@m@thchoice} % Action if you find a |\mathchoice|. Add the bold version to % |\bm@command| then recurse. % % |#1| is either |\boldmath| or |\heavymath|. % \begin{macrocode} \def\bm@m@thchoice#1#2#3#4#5{% \bm@add{\bm@mchoice#1{#2}{#3}{#4}{#5}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@register} % \changes{v0.07}{1996/12/14} % {Macro added} % Combined code for setting up |\bm@r@gister| with the correct % register type. % \begin{macrocode} \def\bm@register#1#2{% \def\@tempa{#1\the#2}% \afterassignment\bm@r@gister#2} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@r@gister} % \changes{v0.06}{1996/12/12} % {Support \cs{mskip}} % \changes{v0.07}{1996/12/14} % {Combine all register macros} % |\mkern| itself would transfer to |\bm@command| without any special % test, but any explict dimension following would be converted to % |\mathchar|. So trap this and grab the muskip as a muskip. % This is used in |\iiint|. |\penalty| was needed for the % AMS version of |\colon|, and so do most of the others as well. % \begin{macrocode} \def\bm@r@gister{% \bm@xadd{\@tempa\space}} % \end{macrocode} % \end{macro} % % % \begin{macro}{\bm@mathchar} % \changes{v0.10}{1997/01/04} % {Modify to use \cs{boldmath} or \cs{pmb} if needed.} % Change the family (math group) of a mathcode and then % use the modified code with |\mathchar|. If there is no % suitable bold font in the current math version, use the original % unmodified mathcode, but switch to |\boldmath| (if there is a bold % font there) or use `poor man's bold'. Note that these other % possibilities are only possible here, not for the otherwise similar % code for |\delimiter| or |\mathaccent|, as those commands % must work with fonts from the same math version. % % Finally recurse down the list. % \begin{macrocode} \def\bm@mathchar{% % \end{macrocode} % % \begin{macrocode} \@tempcntb\count@ \let\@tempa\bm@group % \end{macrocode} % % |\bm@changefam| will isolate the math group from the mathcode % and look up the offset in the current table. % \begin{macrocode} \bm@changefam{}% % \end{macrocode} % % If the mathcode has changed, then just add the new |\mathchar| % (saving |\@gtempa| allows |\bmdefine| to optimise this to a % mathchardef if it turns out to be the only symbol in the argument). % \begin{macrocode} \ifnum\count@>\@tempcntb % \end{macrocode} % % \begin{macrocode} \ifx\bm@command\@empty \xdef\@gtempa{\mathchar\the\count@\space}% \fi \bm@xadd{\mathchar\the\count@\space}% \else % \end{macrocode} % % Otherwise grab the math class from the math code % and add that (locally zapping |\bm@expand| as we don't want % to recurse at this point). % \begin{macrocode} \begingroup \divide\count@"1000 \let\bm@expand\relax \bm@xadd\bm@class \endgroup % \end{macrocode} % |\@tempa| will be |\bm@group| (which applies |\boldmath| and % |\mathchoice|) unless it was changed by |\bm@changefam| to |\bm@pmb| % (which applies a `poor man's bold' construction in a |\mathchoice|). % \begin{macrocode} \edef\@tempb{% \noexpand\@tempa{\mathchar\the\count@\space}}% \@tempb \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@pmb} % \changes{v0.10}{1997/01/04} % {Macro added} % Add a poor man's bold construction to the list being built. % \begin{macrocode} \def\bm@pmb#1{% \bm@add{\bm@pmb@{#1}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@pmb@} % \changes{v0.10}{1997/01/04} % {Macro added} % |\pmb| variant. (See \TeX{}Book, or AMS \textsf{amsbsy} package). % This one takes a bit more care to use smaller offsets in subscripts. % \begin{macrocode} \def\bm@pmb@#1{{% \setbox\tw@\hbox{$\m@th\mkern.4mu$}% \mathchoice \bm@pmb@@\displaystyle\@empty{#1}% \bm@pmb@@\textstyle\@empty{#1}% \bm@pmb@@\scriptstyle\defaultscriptratio{#1}% \bm@pmb@@\scriptscriptstyle\defaultscriptscriptratio{#1}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@pmb@@} % \changes{v0.10}{1997/01/04} % {Macro added} % Helper macro. Box |#3| and set it three times in the style |#1|, % offset by an amount reduced by the ratio specified in |#2|. % \begin{macrocode} \def\bm@pmb@@#1#2#3{{% \setbox\z@\hbox{$\m@th#1#3$}% \dimen@#2\wd\tw@ \rlap{\copy\z@}% \kern\dimen@ \raise1.5\dimen@\rlap{\copy\z@}% \kern\dimen@ \box\z@}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@class} % \changes{v0.10}{1997/01/04} % {Macro added} % Convert a numeric math class back to a math class command. % |\mathord| is omitted in class $0$ and $7$ to save space and so % things work out right in constructions such as |x^a| where % |x^\mathord{a}| would not work. % \begin{macrocode} \def\bm@class{% \ifcase\count@ \or \mathop\or \mathbin\or \mathrel\or \mathopen\or \mathclose\or \mathpunct\or \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@add} % \changes{v0.07}{1996/12/14} % {macro added} % A version of |\g@addto@macro| that internally uses a |\begingroup| % rather than a brace group\footnote{This bug is fixed in the \LaTeX\ % kernel of 1996/12/01}, to save creating a mathord. % % As need to redefine it anyway, save some tokens by making % it specific to |\bm@command|, and to execute |\bm@expand| % to continue the loop. % \begin{macrocode} \def\bm@add#1{% \begingroup \toks@\expandafter{\bm@command#1}% \xdef\bm@command{\the\toks@}% \endgroup \bm@expand} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@xadd} % An |\xdef| version of |\bm@add|. % \begin{macrocode} \def\bm@xadd#1{% \begingroup \toks@\expandafter{\bm@command}% \xdef\bm@command{\the\toks@#1}% \endgroup \bm@expand} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@mathaccent} % |\mathaccent| version of |\bm@mathchar|. % \begin{macrocode} \def\bm@mathaccent{% \bm@changefam{}% \bm@xadd{\mathaccent\the\count@\space}} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@delimiter} % Change both families (math groups) of a delcode and then % use the modified code with |\delimiter|. % \begin{macrocode} \def\bm@delimiter{% \bm@changefam{}% \bm@changefam{000}% \bm@xadd{\delimiter\the\count@\space}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@radical} % Same for |\radical|. % \begin{macrocode} \def\bm@radical{% \bm@changefam{}% \bm@changefam{000}% \bm@xadd{\radical\the\count@\space}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@mchar@} % Catcode 12 |\mathchar|, for |\ifx| tests. % \begin{macrocode} \edef\bm@mchar@{\meaning\mathchar} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@mchar@test} % Test if the |\meaning| starts with |\mathchar|. If it does, grab the % value into |\count@| and call |\bm@mathchar|, else just copy the % command into the accumulated tokens. % |#1|, |#2|, |#3| are all |\meaning| produced tokens, or `dummy tokens' % added at the time this is called. |#4| is the original token, in case % decide not to use the |\meaning|. % \begin{macrocode} \def\bm@mchar@test#1"#2"#3\@nil#4{% \xdef\meaning@{#1}% \ifx\meaning@\bm@mchar@ \count@"#2\relax \bm@mathchar \else % \end{macrocode} % Some other command: copy it straight over. If it is the first thing % added, and it is a |\relax| token, save it in |\bm@first| for use % in |\bm@define|. % \begin{macrocode} \ifx\bm@previous\@empty \ifx\relax#4% \gdef\bm@first{#4}% \fi \fi \bm@add{#4}% \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\bm@changefam} % \changes{v0.10}{1997/01/04} % {Rewrite for new \cs{bm@table} system} % Pull out one specified hex digit and passes % it to |\bm@modify| to change. argument is empty normally but |000| to % access the second math group in a delimiter code. % \begin{macrocode} \def\bm@changefam#1{% \@tempcnta\count@ \divide\@tempcnta"1000#1 % \multiply\@tempcnta"1000#1 % \advance\@tempcnta-\count@ \divide\@tempcnta-"100#1 % % \end{macrocode} % Having isolated the required math group (fam), look up % the offset in the current table. % \begin{macrocode} \@tempcnta\bm@table % \end{macrocode} % If the offset is $-1$, keep |\count@| unchanged, but set |\@tempa| % to use poor man's bold. Otherwise increment |\count@| to change the % math group specified. % \begin{macrocode} \ifnum\@tempcnta=\m@ne \let\@tempa\bm@pmb \else \multiply\@tempcnta"100#1 % \advance\count@\@tempcnta \fi} % \end{macrocode} % \end{macro} % % \begin{macrocode} % % \end{macrocode} % % \Finale % From carlisle@ma.man.ac.uk Tue Jan 14 12:42:39 1997 X-VM-v5-Data: ([nil nil nil nil t nil nil nil nil] ["2221" "Tue" "14" "January" "1997" "12:38:00" "GMT" "David Carlisle" "carlisle@ma.man.ac.uk" "<199701141238.MAA17542@vummath.ma.man.ac.uk>" "71" "lucida " "^From:" nil nil "1" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.3/8.8.3) with ESMTP id MAA11388 for ; Tue, 14 Jan 1997 12:42:38 GMT Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Tue, 14 Jan 1997 12:42:34 +0000 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by pillar.elsevier.co.uk (8.8.3/8.8.3) with SMTP id MAA05258 for ; Tue, 14 Jan 1997 12:40:30 GMT Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id MAA17542; Tue, 14 Jan 1997 12:38:00 GMT Message-Id: <199701141238.MAA17542@vummath.ma.man.ac.uk> Content-Length: 2220 From: David Carlisle To: s.rahtz@elsevier.co.uk Subject: lucida Date: Tue, 14 Jan 1997 12:38:00 GMT I just `acquired' lucida and so inevitably some queries and questions... Most serious first (I have the feeling this got asked on c.t.t the other week) ================================================================= If (using Y&Y names) I go $\dot{a}$ I get a \c C over my a. This is due to \ifnum\Lucida@names=0 \DeclareMathAccent\vec {\mathord}{letters}{"7E} \else \DeclareMathAccent\vec {\mathord}{letters}{"7E} \DeclareMathAccent\dot {\mathalpha}{operators}{"C7} \fi I thought the \Lucida@names stuff was just related to the *names* of the font not to encoding differences so why do the accent allocations differ here? and \vec is the same in both branches so why is it in the \if:-) ================================================================= When running my `symbols.tex' file with lucida instead of amssymb I find that \eth and \doublebarwedge are not defined. At least the first appears in the lucida text fonts somewhere doesn't it? ================================================================= > \mathcode`\=="3283 you seem to have given up converting to \DeclareMathSymbol half way down the file:-) ================================================================= \ifnum\Lucida@names=0 \renewcommand{\sfdefault}{hls} ... \else \renewcommand{\sfdefault}{lbs} ... \fi Does the LaTeX family name *need* to depend on the external font file name. My first thought at doing this would be to keep the document sources identical across different sites (and so not have xxxxy.sty or [yy]) and just have different fd files mapping the internal LaTeX family name of lbs to either a Berry or Y&Y external font name. ================================================================= \@ifpackageloaded{amstex}{}{..... Could wrap that whole lot in \AtBeginDocument so amsxxx may be loaded later. ================================================================= \def\r@@t#1#2{\setbox\z@\hbox{$\m@th#1\sqrt{#2}$} \dimen@\ht\z@ \advance\dimen@-\dp\z@ \mkern5mu\raise.6\dimen@\copy\rootbox \mkern-7.5mu \box\z@} `missing' % at end of first line. (also missing in all known formats except LaTeX 1996/12/01 :-) ================================================================= David From carlisle@ma.man.ac.uk Tue Jan 14 13:19:03 1997 X-VM-v5-Data: ([nil nil nil nil t nil nil nil nil] ["2244" "Tue" "14" "January" "1997" "13:15:20" "GMT" "David Carlisle" "carlisle@ma.man.ac.uk" "<199701141315.NAA18718@vummath.ma.man.ac.uk>" "47" "Re: lucida" "^From:" nil nil "1" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.3/8.8.3) with ESMTP id NAA15117 for ; Tue, 14 Jan 1997 13:19:02 GMT Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Tue, 14 Jan 1997 13:19:00 +0000 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by pillar.elsevier.co.uk (8.8.3/8.8.3) with SMTP id NAA06290 for ; Tue, 14 Jan 1997 13:17:50 GMT Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-4.1:AL2) id NAA18718; Tue, 14 Jan 1997 13:15:20 GMT Message-Id: <199701141315.NAA18718@vummath.ma.man.ac.uk> In-reply-to: <199701141249.MAA20119@lochnagarn.elsevier.co.uk> (message from Sebastian Rahtz on Tue, 14 Jan 1997 12:49:16 GMT) Content-Length: 2243 From: David Carlisle To: s.rahtz@elsevier.co.uk Subject: Re: lucida Date: Tue, 14 Jan 1997 13:15:20 GMT > the point to my mind is that if you use Y&Y names, you'll use their > encoding I was being a good boy and just doing what Berthold told me. I ran his install script, clicked on the right buttons in ATM and away I went, straight into a cedilla:-) (Incidentally using dviwindo is about 10000000 times more pleasant than using dvips/ghostscript to preview files with these fonts and mathtime, especially on my 8meg machine at home which tends to fall over if gsview is passed a document using more than a couple of mathtime fonts on one page, I'm sure ghostview under linux would be more stable but still...) Howver using the family name is NOT a kosher way of flagging encoding differences in NFSS you're supposed to use a different encoding name if needs be (at the same time as sending the obligatory complaint to Berthold for not supporting standard TeX mechanisms:-) For the mathtime support we have just allocated MY1 MY2 ... to replace OMS OML and friends to take account of the random permutation Spivak applied to the knuth encodings. However the Lucida math fonts at least seem pretty much encoded as per normal. > > Does the LaTeX family name *need* to depend on the external font file > > name. My first thought at doing this would be to keep the document > > sources identical across different sites (and so not have xxxxy.sty > > or [yy]) and just have different fd files mapping the internal LaTeX > > family name of lbs to either a Berry or Y&Y external font name. > as i say, what i do depends on whether its just a naming thing, or > whether it means you use different encoding. > > how do i distinguish the .fd files? If its different encoding (say TY1=texnansi) then it should be \fontencoding{TY1}\fontfamily{lbs}\selectfont as opposed to \fontencoding{T1}\fontfamily{lbs}\selectfont ie same family, different encoding. in that case the fd files have different names anyway. If it is just the difference in names (as with the math fonts) then you just install one set or the other of OMSxxx.fd to match whatever name you have installed the tfm files (berry or yy) that way the document itself moves unchanged to another site, but that sites fd files pick up whatever name the file has there. (in theory) David From carlisle@ma.man.ac.uk Tue Jan 21 15:05:20 1997 X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] ["867" "Tue" "21" "January" "1997" "15:01:09" "GMT" "David Carlisle" "carlisle@ma.man.ac.uk" nil "32" "lucida/y&y" "^From:" nil nil "1" nil nil nil nil] nil) Received: from snowdon.elsevier.co.uk (snowdon.elsevier.co.uk [193.131.197.164]) by cadair.elsevier.co.uk (8.8.3/8.8.3) with ESMTP id PAA22658 for ; Tue, 21 Jan 1997 15:05:19 GMT Received: from pillar.elsevier.co.uk by snowdon.elsevier.co.uk with SMTP (PP); Tue, 21 Jan 1997 15:04:54 +0000 Received: from vummath.ma.man.ac.uk (vummath.ma.man.ac.uk [130.88.16.53]) by pillar.elsevier.co.uk (8.8.3/8.8.3) with SMTP id PAA15864 for ; Tue, 21 Jan 1997 15:03:35 GMT Received: by vummath.ma.man.ac.uk (SMI-8.6/SMI-SVR4) id PAA07276; Tue, 21 Jan 1997 15:01:09 GMT Message-Id: <199701211501.PAA07276@vummath.ma.man.ac.uk> Content-Length: 866 From: David Carlisle To: Frank.Mittelbach@Uni-Mainz.de, s.rahtz@elsevier.co.uk Subject: lucida/y&y Date: Tue, 21 Jan 1997 15:01:09 GMT Frank, Sebastian. The following is a ly1enc.def (LY1enc.def for `old' latex) that sets up \usepackage[LY1]{fontenc} to use Y&Y's texnansi encoding. I have *not* shown this to Berthold yet (not sure if he'll approve of the comments at the end:-) Comments on whether this looks OK? I called the encoding L* I don't think it should ever be made T* as it is not uc/lc compatible with T1 and we have not got any policy on how to cope with that. \documentclass{article} % should be in LY1hlh.fd files \DeclareFontEncoding{LY1}{}{} \DeclareFontSubstitution{LY1}{hlh}{m}{n} \DeclareFontFamily{LY1}{hlh}{} \DeclareFontShape{LY1}{hlh}{m}{n}{<-> lbr}{}% Y&Y external name % in lucida.sty somewhere \fontencoding{LY1}\fontfamily{hlh}\selectfont \def\encodingdefault{LY1} \def\familydefault{hlh} \usepackage[LY1]{fontenc} \usepackage[ansinew]{inputenc} \begin{document}