You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
185 lines
5.6 KiB
185 lines
5.6 KiB
%%
|
|
%% 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'.
|
|
|