From 0835f73e7c7f6a0fd55c5205df5c3593162dfee6 Mon Sep 17 00:00:00 2001 From: Jonathan Kew Date: Sun, 24 Dec 2006 16:19:15 +0000 Subject: euenc, source for fontspec etc git-svn-id: svn://tug.org/texlive/trunk@2883 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/source/xelatex/xltxtra/xltxtra.dtx | 286 +++++++++++++++------ 1 file changed, 211 insertions(+), 75 deletions(-) (limited to 'Master/texmf-dist/source/xelatex/xltxtra/xltxtra.dtx') diff --git a/Master/texmf-dist/source/xelatex/xltxtra/xltxtra.dtx b/Master/texmf-dist/source/xelatex/xltxtra/xltxtra.dtx index 4c2f0f44b2e..0f55ecafe23 100644 --- a/Master/texmf-dist/source/xelatex/xltxtra/xltxtra.dtx +++ b/Master/texmf-dist/source/xelatex/xltxtra/xltxtra.dtx @@ -5,7 +5,7 @@ % Copyright (C) 2006 by Will Robertson % % Distributable under the LaTeX Project Public License, -% version 1.3b or higher (your choice). The latest version of +% version 1.3c or higher (your choice). The latest version of % this license is at: http://www.latex-project.org/lppl.txt % % This work is "maintained" (as per LPPL maintenance status) @@ -15,8 +15,10 @@ % and the derived files xltxtra.sty and xltxtra.pdf. % % -%<*batchfile> +%<*internalbatchfile> \begingroup +% +%<*batchfile> \input docstrip.tex \keepsilent \preamble @@ -33,7 +35,7 @@ Copyright (C) 2006 by Will Robertson Distributable under the LaTeX Project Public License, -version 1.3b or higher (your choice). The latest version of +version 1.3c or higher (your choice). The latest version of this license is at: http://www.latex-project.org/lppl.txt This work is "maintained" (as per LPPL maintenance status) @@ -49,11 +51,14 @@ This work consists of the file \jobname.dtx \nopreamble\nopostamble \generate{\file{README.txt}{\from{\jobname.dtx}{readme}}} \generate{\file{dtx-style.sty}{\from{\jobname.dtx}{dtx-style}}} -\endgroup % +%\endbatchfile +%<*internalbatchfile> +\endgroup +% % %<*driver> -\documentclass{ltxdoc} +\documentclass[12pt]{ltxdoc} \EnableCrossrefs \CodelineIndex \RecordChanges @@ -66,7 +71,7 @@ This work consists of the file \jobname.dtx % %<*readme> ------------------------ -THE XLTXTRA PACKAGE v0.1 +THE XLTXTRA PACKAGE v0.3 This package provides a few small features that are useful for XeLaTeX. @@ -105,7 +110,7 @@ Will Robertson % improved functionality for broken or sub-standard \LaTeX\ methods when using the % \XeTeX\ format. % -% Documentation is slim, since new features per se are slim. +% Documentation is slim, and a bit ugly at this stage. I intend to improve it at some stage\dots Anyway, look through the sections to see what's contained within. % % \part{The \textsf{xltxtra} package} %\iffalse @@ -113,87 +118,158 @@ Will Robertson %\fi % This is the package. % \begin{macrocode} -\unless\ifdefined\XeTeXversion - \@latex@error{^^J - *************************************************^^J - *** The xltxtra package only works with XeTeX ***^^J - *************************************************} -\fi \ProvidesPackage{xltxtra} - [2006/06/08 v0.1 Improvements for the XeTeX/LaTeX format] + [2006/06/13 v0.2 Improvements for the XeTeX/LaTeX format] +% \end{macrocode} +% +% \paragraph{Required packages} +% \begin{macrocode} +\RequirePackage{ifxetex} +\RequireXeTeX +\RequirePackage{graphicx} +\RequirePackage{fontspec} +\RequirePackage{xunicode} % \end{macrocode} % % \section{Logos} +% \DescribeMacro{\XeTeX} +% \DescribeMacro{\XeLaTeX} +% The \TeX-related logos people insist upon using need to be tuned +% on a per-font basis. This package will (might!) eventually allow this, +% but for now, it's baby steps. The \XeTeX\ and \XeLaTeX\ logos +% are provided. +% % The various \TeX-like logos that extend outside the regular % vertical alphabetic bounds of running text have the unfortunate % side-effects in \XeTeX\ of often overrunning the \cmd\baselineskip. % Putting the logos in zero-height boxes prevents this problem. +% Actually, this problem doesn't happen anymore. % -% We also provide a \cmd\XeTeX\ logo for convenience. Thanks, Jonathan. -% +% Here're some examples. The default: % \begin{example} -% \TeX\ \XeTeX\ \LaTeX \\ % the default -% \TeXlogospacing{-0.1em}{-0.1em}{0.8ex}{-0.36em}{-0.15em} -% \TeX\ \XeTeX\ \LaTeX \\ -% \TeXlogospacing{0em}{0em}{0ex}{-0.36em}{-0.15em} -% \TeX\ \XeTeX\ \LaTeX +% \TeX\ \XeTeX\ \LaTeX\ \XeLaTeX +% \end{example} +% Notice it's a bit tight when not using Computer Modern, as here: +% \begin{example} +% \usefont{OT1}{cmr}{m}{n} +% \TeX\ \XeTeX\ \LaTeX\ \XeLaTeX +% \end{example} +% This package provides a \emph{non-stable} method of specifying +% the spacings in these logos. In the future, it will hopefully adjust +% somewhat automatically. +% +% \noindent To do: +% \begin{itemize}[noitemsep] +% \item adapt \cmd\LaTeX\ to use small caps if available\dots +% \item \dots otherwise, need a scaling factor, and maybe a vertical nudge factor +% \item add other logos +% \item per-font parameters, with some defaults for common fonts +% \item add `low contrast' small caps versions, et al. +% \item probably break out the whole thing into its own package, if it works +% \end{itemize} +% +% \begin{macro}{\TeX@logo@spacing} +% \darg{Kern between T \& eX} +% \darg{Kern between Te \& X} +% \darg{Lowering amount for E in TeX} +% \darg{Kerning between L \& aTeX} +% \darg{Kerning between La \& TeX} +% \darg{Kerning between Xe \& LaTeX} +% This macro defines new \cmd\TeX\ and \cmd\XeTeX\ logos. +% Parameters must be tuned on a per-font basis: +% \begin{example} +% \TeX@logo@spacing{-0.12em}{-0.12em}% +% {0.5ex}{-0.3em}{-0.12em}{-0.1em} +% \TeX\ \XeTeX\ \LaTeX\ \XeLaTeX % \end{example} % -% To do: adapt \cmd\LaTeX\ to -% use small caps if possible. -% Add other logos. -% -% To do: Provide for per-font parameters and define -% some font-specific parameters. +% \emph{Warning!} This macro will {\fontspec{Hoefler Text Black} definitely} change in the future. +% If you care abouts backwards compatibility in your documents, copy+paste +% the definitions below rather than using \cmd\TeX@logo@spacing. % -% \begin{macro}{\TeXlogospacing} -% \darg{Kern between T \& E} -% \darg{Kern between E \& X} -% \darg{Lowering amount for E} -% \darg{Kerning between L \& A} -% \darg{Kerning between A \& TeX} -% This macro defines new \cmd\TeX\ and \cmd\XeTeX\ logos. -% Parameters must be tuned on a per-font basis. -% \emph{Warning!} This macro will almost certainly change in the future. % \begin{macrocode} -\newcommand*\TeXlogospacing[5]{% - \DeclareRobustCommand\TeX{% - \leavevmode - \smash{% - T\kern#1 - \lower#3\hbox{E}\kern#2 X}% - \spacefactor1000\relax} - \DeclareRobustCommand{\LaTeX}{% - \leavevmode - \smash{ - L\kern#4% - {\sbox\z@ T% - \vbox to\ht\z@{\hbox{\check@mathfonts - \fontsize\sf@size\z@ - \math@fontsfalse\selectfont - A}% - \vss}% - }% - \kern#5% - \TeX}} - \DeclareRobustCommand\XeTeX{% - \leavevmode - \smash{% - X\lower #3 - \hbox{\kern #2 - \ifnum\XeTeXcharglyph"018E > 0 +\newlength\xxt@kern@Te +\newlength\xxt@kern@eX +\newlength\xxt@lower@e +\newlength\xxt@kern@La +\newlength\xxt@kern@aT +\newlength\xxt@kern@eL +\newcommand*\TeX@logo@spacing[6]{% + \setlength\xxt@kern@Te{#1}% + \setlength\xxt@kern@eX{#2}% + \setlength\xxt@lower@e{#3}% + \setlength\xxt@kern@La{#4}% + \setlength\xxt@kern@aT{#5}% + \setlength\xxt@kern@eL{#6}% +} +\DeclareRobustCommand\TeX{% + \leavevmode + \smash{% + T\kern\xxt@kern@Te + \lower\xxt@lower@e\hbox{E}\kern\xxt@kern@eX X}% + \spacefactor1000\relax} +\DeclareRobustCommand{\LaTeX}{% + \leavevmode + \smash{% + L\kern\xxt@kern@La + {\sbox\z@ T% + \vbox to\ht\z@{\hbox{\check@mathfonts + \fontsize\sf@size\z@ + \math@fontsfalse\selectfont + A}% + \vss}% + }% + \kern\xxt@kern@aT + \TeX}} +\DeclareRobustCommand\XeTeX{% + \leavevmode + \smash{% + X\lower\xxt@lower@e + \hbox{\kern\xxt@kern@eX + \ifnum\XeTeXfonttype\font>0 + \ifnum\XeTeXcharglyph"018E>0 \char"018E\relax - \else\ifdim\fontdimen1\font=0pt - \reflectbox{E}% - \else % rotation is about the origin, so we need to adjust positioning - \XeTeXuseglyphmetrics=1% - \setbox0=\hbox{E}\dimen0=\ht0\advance\dimen0by\dp0% - \raise\dimen0\hbox{\rotatebox{180}{\box0}}% - \fi\fi - }\kern#1\TeX}}} -\TeXlogospacing{-0.15em}{-0.15em}{0.5ex}{-0.36em}{-0.15em} + \else + \ifdim\fontdimen1\font=0pt + \reflectbox{E}% + \else + \XeTeXuseglyphmetrics=1% + \setbox0=\hbox{E}\dimen0=\ht0\advance\dimen0by\dp0% + \raise\dimen0\hbox{\rotatebox{180}{\box0}}% + \fi + \fi + \else + \setbox0=\hbox{E}\dimen0=\ht0\advance\dimen0by\dp0% + \raise\dimen0\hbox{\rotatebox{180}{\box0}}% + \fi + }\kern\xxt@kern@Te\TeX}}% +\DeclareRobustCommand\XeLaTeX{% + \leavevmode + \smash{% + X\lower\xxt@lower@e + \hbox{\kern\xxt@kern@eX + \ifnum\XeTeXfonttype\font>0\relax + \ifnum\XeTeXcharglyph"018E>0\relax + \char"018E\relax + \else + \ifdim\fontdimen1\font=0pt\relax + \reflectbox{E}% + \else + \XeTeXuseglyphmetrics=1\relax + \setbox0=\hbox{E}\dimen0=\ht0\advance\dimen0by\dp0\relax + \raise\dimen0\hbox{\rotatebox{180}{\box0}}% + \fi + \fi + \else + \setbox0=\hbox{E}\dimen0=\ht0\advance\dimen0by\dp0\relax + \raise\dimen0\hbox{\rotatebox{180}{\box0}}% + \fi}\kern\xxt@kern@eL\LaTeX}} +\TeX@logo@spacing{-0.15em}{-0.15em}{0.5ex}{-0.36em}{-0.15em}{-0.1em} % \end{macrocode} % \changes{v0.1}{2006/05/03}{Implemented.} +% \changes{v0.2}{2006/06/11}{Added \cmd\XeLaTeX\ logo. Thanks Herb!} +% \changes{v0.2}{2006/06/11}{Added TFM font check.} +% \changes{v0.2}{2006/08/12}{\cmd\TeX@logo@spacing made ``private'' and added an arg for \cmd\XeLaTeX.} % \end{macro} % % \section{\eTeX\ functionality} @@ -214,6 +290,37 @@ Will Robertson \RequirePackage{fixltx2e}[2006/03/24] % \end{macrocode} % +% \section{\cmd\eminnershape} +% \begin{macro}{\em} +% \begin{macro}{\emph} +% \pkg{fixltx2e}'s method for checking for ``inner'' emphasis is a little fragile in \XeTeX, because +% font slant information might be missing from the font. Therefore, we use \LaTeX's \acro{NFSS} +% information, which is more likely to be correct. +% +% \begin{example} +% \renewcommand\eminnershape{\scshape} +% \fontspec{Didot} +% Nested {\em emphasis is \emph{now} fixed.} +% \end{example} +% +% \begin{macrocode} +\DeclareRobustCommand\em + {\@nomath\em + \edef\@tempa{\f@shape}% + \edef\@tempb{\itdefault}% + \ifx\@tempa\@tempb + \eminnershape + \else + \emshape + \fi} +\DeclareTextFontCommand{\emph}{\em} +\let\emshape\itshape +\let\eminnershape\upshape +% \end{macrocode} +% \changes{v0.2}{2006/08/12}{Migrated from \textsf{fontspec}.} +% \end{macro} \end{macro} +% +% % \section{Programmming bits and pieces} % % Thanks to a long-ago c.t.t.\ post by Robin Fairbairns for the code how to \cmd\let\ a robust macro. @@ -361,7 +468,7 @@ Will Robertson % % \section{\cmd\vfrac} % A command for setting vulgar fractions based on AAT or OpenType font features. -% Not really recommended for many purposes, but it's a good example. +% Not really recommended for many purposes, depending on your text, but it's a good example. % \begin{example} % \fontspec{Hoefler Text} % AAT: \vfrac{123}{456}\par @@ -394,6 +501,33 @@ Will Robertson % \changes{v0.1}{2006/05/03}{Implemented.} % \end{macro} % +% \section{Named glyphs} +% Along the way somewhere, \XeTeX\ added support for selecting glyphs from a TrueType-based OpenType font based on their internal glyph name. Jonathan Kew posted the following definition as a nice interface to it. +% \begin{example} +% \fontspec{Charis SIL} +% \namedglyph{yen} +% \namedglyph{smile} +% \end{example} +% \begin{macro}{\namedglyph} +% \darg{Name of the font glyph to be typeset} +% \begin{macrocode} +\newcommand\namedglyph[1]{% + \@tempcnta=\XeTeXglyphindex "#1"\relax + \ifnum\@tempcnta>0 + \XeTeXglyph\@tempcnta + \else + \xxt@namedglyph@fallback{#1}% + \fi} +% \end{macrocode} +% \changes{v0.2}{2006/08/12}{Implemented.} +% \end{macro} +% \begin{macro}{\xxt@namedglyph@fallback} +% Redefine this macro to change how glyph names that aren't found get typeset. +% \begin{macrocode} +\newcommand\xxt@namedglyph@fallback[1]{[#1]} +% \end{macrocode} +% \changes{v0.2}{2006/08/12}{Implemented.} +% \end{macro} % %\iffalse % @@ -429,8 +563,8 @@ Will Robertson \def\pfill{\hspace*{\fill}}} {\endlist} -\usepackage{array,booktabs,calc,color,fancyvrb,graphicx,ifthen,longtable,refstyle,varioref} -\usepackage{fontspec,xunicode,xltxtra} +\usepackage{array,booktabs,calc,color,enumitem,fancyvrb,graphicx,ifthen,longtable,refstyle,varioref} +\usepackage{fontspec,ifxetex,xunicode,xltxtra} \setromanfont[WordSpace=0.9,Mapping=tex-text, BoldFont=Hoefler Text, ItalicFeatures={Contextuals={NoWordFinal,NoLineFinal}}]{Hoefler Text} @@ -449,7 +583,7 @@ Will Robertson \begingroup \color{niceblue} \typesetexample - \endgroup\nobreak\par\nobreak\noindent\hrulefill} + \endgroup\nobreak\par\nobreak\noindent\hrulefill\nobreak\par} \let\examplesize\normalsize \let\auxwidth\relax @@ -488,6 +622,8 @@ Will Robertson \newcommand*\name[1]{{#1}} \newcommand*\pkg[1]{\textsf{#1}} +\newcommand*\acro[1]{\textsc{\MakeLowercase{#1}}} + \newcommand*\note[1]{\unskip\footnote{#1}} \let\latin\textit -- cgit v1.2.3