Hello, you need braces around #1, otherwise \textit takes just the first token (character) and the rest will remain unchanged.
Zdeněk Wagner http://ttsm.icpf.cas.cz/team/wagner.shtml http://icebearsoft.euweb.cz st 5. 12. 2018 v 15:12 odesílatel John Was <john....@ntlworld.com> napsal: > > Hello > > I didn't realize that textit took an argument, but my solution will work > (I've used the \ifitalic trick for years for different purposes!), at least > in plain XeTeX language, if one just adds the argument to the definition: > > \def\Textit#1{{\italictrue \textit #1}} > > Anyway, I hope that helps in the search for an elegant solution which > doesn't clutter up the input file. > > > John > > -----Original Message----- > From: Zdenek Wagner > Sent: Wednesday, December 05, 2018 12:10 PM > To: Unicode-based TeX for Mac OS X and other platforms > Subject: Re: [XeTeX] Fake italics for some characters only > > Hi, > > this will not work. \textit is a macro which requires a parameter, > thus \textit} will report an unbalaced brace. Returning to my solution > I forgot to write that the active characters must first be defined. > You either activate them, define them and then deactivate them which > is tedious. It is better to define them inside a group but the > definition must be global, it cannot be done with \newcommand. If you > define just one character (i.e. A), \gdef is not needed, it can be > done by: > > \begingroup \catcode`\A=13 > \expandafter\endgroup\expandafter\def\noexpand A{{\fakeslantfont A}} > > If you need several characters, i.e. A and B, you can either repet the > block or do it like that: > > \begingroup > \uccode`\x=A > \uccode`\y=B > \catcode`\A=13 > \catcode`\B=13 > \uppercase{ > \gdef A{{\fakeslantfont x}} > \gdef B{{\fakeslantfont y}} > } > \endgroup > > Notice that the characters remain inactive, with chategory 11 > (letter). They will be activated inside a group defined by \mytextit > from my previous mail. \mytextit must not have a parameter because > once set tha categories cannot be changed (unless you use lua or > possibly eTeX). \dotextit will then take the parameter with active A > anb B and closes the group so that the categories return to 11. There > is no need to use \if. > > Zdeněk Wagner > http://ttsm.icpf.cas.cz/team/wagner.shtml > http://icebearsoft.euweb.cz > st 5. 12. 2018 v 12:39 odesílatel John Was <john....@ntlworld.com> napsal: > > > > Hello > > > > I work in plain XeTeX, but I hope the following will work (and make sense) > > in XeLaTeX too. > > > > You could redefine \textit, but to keep things simple, set up a new > > command, > > say \Textit, and change all occurrences of \textit to \Textit in your > > document (or a copy thereof!). > > > > Thus: > > > > \def\Textit{{\italictrue \textit}} (double braces to keep things local). > > > > You will also need a new \if: > > > > \newif\ifitalic > > > > Now, supposing the character you want to influence as you describe is ć > > (Unicode 0107). > > > > Make that active: > > > > \catcode"0107=\active > > \defć{{\ifitalic {\fakeslantfont \char"0107} \else \char"0107 \fi}} > > > > > > Obviously, change \fakeslantfont to whatever you have used to define the > > faked italic font. Again I have used double {{ }} for safety. > > > > ć will then appear with artificial slanting whenever it occurs within > > \Textit. > > > > And so on for all the characters to be treated this way. > > > > (More elegantly, redefine \textit itself but I'm not experienced with the > > LaTeX \renewcommand etc. features.) > > > > Hope this helps (and I hope XeTeX picks up on the fact that I'm actually > > now > > at johno...@gmail.com!) > > > > Best > > > > > > John > > > > > > > > > > -----Original Message----- > > From: Benct Philip Jonsson > > Sent: Tuesday, December 04, 2018 7:57 PM > > To: xetex@tug.org > > Subject: [XeTeX] Fake italics for some characters only > > > > I have a somewhat unusual problem. In a document produced using > > XeLaTeX I need to use four Unicode letters with scarce font > > support in italicized words and passages but the font which I have > > to use supports these characters only in roman. The obvious > > solution is to use the FakeSlant feature of fontspec but I don’t > > want to enclose these characters in a command argument, in the > > hope that a future version of the document can use an italic font > > which supports these characters, but neither do I (perhaps > > needless to say) want to use fake italics except for these four > > characters. In other words I would like to perform some kind of > > “keyhole surgery” in the preamble and use these characters > > normally in the body of the document, which I guess means having > > to make them active and somehow detect when they are inside the > > argument of `\textit`. (Note: it is appropriate to use `\textit` > > rather than `\emph` here because the purpose of the italicization > > is to mark text as being in an object language in a linguistic > > text.) Is that at all possible? I guess I could wrap `\textit` in > > a macro which locally redefines the active characters, but I’m not > > sure how to do that, nor how to access the glyphs corresponding to > > the characters once the characters are active. I am a user who > > isn’t afraid of using and making the most of various packages or > > of writing an occasional custom command to wrap up some repeatedly > > needed operation, but I am no expert. I am aware of all the > > arguments against fake italics — that is why I want to limit the > > damage as much as possible! — but I have no choice here. Waiting > > for the/an appropriate font to include italic versions of these > > characters is not an option at the moment. > > > > /Benct > > > > > > > > -------------------------------------------------- > > Subscriptions, Archive, and List information, etc.: > > http://tug.org/mailman/listinfo/xetex > > > > > > > > -------------------------------------------------- > > Subscriptions, Archive, and List information, etc.: > > http://tug.org/mailman/listinfo/xetex > > > > -------------------------------------------------- > Subscriptions, Archive, and List information, etc.: > http://tug.org/mailman/listinfo/xetex > > > > -------------------------------------------------- > Subscriptions, Archive, and List information, etc.: > http://tug.org/mailman/listinfo/xetex -------------------------------------------------- Subscriptions, Archive, and List information, etc.: http://tug.org/mailman/listinfo/xetex