diff options
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xltxtra/xltxtra.sty')
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xltxtra/xltxtra.sty | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xltxtra/xltxtra.sty b/Master/texmf-dist/tex/xelatex/xltxtra/xltxtra.sty new file mode 100644 index 00000000000..9ce1d107112 --- /dev/null +++ b/Master/texmf-dist/tex/xelatex/xltxtra/xltxtra.sty @@ -0,0 +1,185 @@ +%% +%% This is file `xltxtra.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xltxtra.dtx (with options: `package') +%% ____________________________ +%% The XLTXTRA package +%% (C) 2006-2017 Will Robertson +%% License information appended +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% THE XLTXTRA PACKAGE +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Copyright (C) 2006-2018 by Will Robertson <wspr81@gmail.com> +%% +%% Distributable under the LaTeX Project Public License, +%% 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) +%% by Will Robertson. +%% +%% This work consists of the files xltxtra.dtx and xltxtra.ins, +%% and the derived files xltxtra.sty and xltxtra.pdf. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ProvidesPackage{xltxtra} + [2018/12/31 v0.7 Improvements for the "XeLaTeX" format] +\RequirePackage{ifluatex} +\ifluatex + \PackageWarningNoLine {xltxtra} {^^J + XLTXTRA IS TO BE USED ONLY UNDER XETEX. + LOAD FONTSPEC DIRECTLY, INSTEAD.^^J + ABORTING LOADING% + } + \RequirePackage{fontspec} + \expandafter \endinput +\fi +\RequirePackage{ifxetex} +\RequireXeTeX +\RequirePackage{fontspec} +\RequirePackage{realscripts} +\newif\if@xxt@nosscript@ +\newif\if@xxt@nologos@ +\DeclareOption{no-sscript}{\@xxt@nosscript@true} +\DeclareOption{no-logos}{\@xxt@nologos@true} +\ProcessOptions* +\RequirePackage{metalogo} +\if@xxt@nologos@ + \let\TeX\original@TeX + \let\LaTeX\original@LaTeX + \let\LaTeXe\original@LaTeXe +\fi +\if@xxt@nosscript@ + \DeclareRobustCommand*\textsubscript{% + \@ifstar{\realsubscript}{\fakesubscript}} + \DeclareRobustCommand*\textsuperscript{% + \@ifstar{\realsuperscript}{\fakesuperscript}} +\fi +\ExplSyntaxOn +\newcommand*\vfrac[2]{ + \fontspec_if_fontspec_font:TF + { + \fontspec_if_opentype:TF + { + {\addfontfeature{VerticalPosition=Numerator}#1} + \textfractionsolidus + {\addfontfeature{VerticalPosition=Denominator}#2} + } + { + {\addfontfeature{VerticalPosition=Superior}#1} + \textfractionsolidus + {\addfontfeature{VerticalPosition=Inferior}#2} + } + } + { + \PackageError {xltxtra} + { \string\vfrac\space~can~only~be~used~with~fontspec~fonts } + { Nothing~more~to~tell. } + } +} +\ExplSyntaxOff +\newcommand\namedglyph[1]{% + \@tempcnta=\XeTeXglyphindex "#1"\relax + \ifnum\@tempcnta>0 + \XeTeXglyph\@tempcnta + \else + \xxt@namedglyph@fallback{#1}% + \fi} +\newcommand\xxt@namedglyph@fallback[1]{[#1]} +\ExplSyntaxOn +\seq_new:N \l__xetex_showhyphens_seq +\box_new:N \l__xetex_show_hyphens_wrapping_box +\box_new:N \l__xetex_show_hyphens_temp_box +\box_new:N \l__xetex_show_hyphens_final_box +\box_new:N \g__xetex_show_hyphens_word_box + +\cs_new_protected:Npn \xetex_show_hyphens:n #1 + { + \box_clear:N \l__xetex_show_hyphens_final_box + % split the input into items + \seq_set_split:Nnn \l__xetex_showhyphens_seq { ~ } { #1 } + % hyphenate all items + \seq_map_function:NN \l__xetex_showhyphens_seq \xetex_hyphenate_word:n + % set a box to the maximum dimension to force a Underfull \hbox warning + \hbox_set_to_wd:Nnn \l__xetex_show_hyphens_final_box { \c_max_dim } + { + \hbox_unpack_clear:N \l__xetex_show_hyphens_final_box + } + } + +\cs_new_protected:Npn \xetex_hyphenate_word:n #1 + { + \vbox_set:Nn \l__xetex_show_hyphens_wrapping_box + {% build a paragraph with the word with a very narrow line width + \dim_set:Nn \hsize { 1sp } + % disregard spurious messages + \hbadness = 10000\relax + \dim_set:Nn \hfuzz { \c_max_dim } + % clear possible values of \everypar and other parameters + \everypar={} + \skip_set:Nn \leftskip { 0pt } + \skip_set_eq:NN \rightskip \leftskip + % skip the first step + \pretolerance = -1\relax + % avoid the indentation and add a skip to allow hyphenation + \noindent + \skip_horizontal:n { 0pt } + #1 + \par + \hbox_gset:Nn \g__xetex_show_hyphens_word_box {} + % start a recursion to dismantle the paragraph just built + \xetex_show_hyphens_split: + % the result is put into \g__xetex_show_hyphens_word_box + } + % add the box to the final container + \hbox_set:Nn \l__xetex_show_hyphens_final_box + { + \hbox_unpack_clear:N \l__xetex_show_hyphens_final_box + \hbox_unpack_clear:N \g__xetex_show_hyphens_word_box + } + } + +\cs_new_protected:Npn \xetex_show_hyphens_split: + { + \unskip % remove the interline glue + \unpenalty % remove possible penalties + % get the last line + \box_set_to_last:N \l__xetex_show_hyphens_temp_box + \box_if_empty:NF \l__xetex_show_hyphens_temp_box + {% if there is a last line unpack it into a container + \hbox_gset:Nn \g__xetex_show_hyphens_word_box + {% the order is last to first + \hbox_unpack_clear:N \l__xetex_show_hyphens_temp_box + \unskip\unskip % remove spaces + \hbox_unpack_clear:N \g__xetex_show_hyphens_word_box + } + % restart the recursion + \xetex_show_hyphens_split: + } + } + +\cs_set_eq:NN \showhyphens \xetex_show_hyphens:n +\ExplSyntaxOff +%% +%% THE XLTXTRA PACKAGE +%% +%% Copyright (C) 2006-2018 by Will Robertson <wspr81@gmail.com> +%% +%% Distributable under the LaTeX Project Public License, +%% 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) +%% by Will Robertson. +%% +%% This work consists of the files xltxtra.dtx and xltxtra.ins, +%% and the derived files xltxtra.sty and xltxtra.pdf. +%% +%% +%% +%% End of file `xltxtra.sty'. |