diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/babel/bbunicode.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/babel/bbunicode.dtx | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/babel/bbunicode.dtx b/Master/texmf-dist/source/latex/babel/bbunicode.dtx new file mode 100644 index 00000000000..79677ae1edb --- /dev/null +++ b/Master/texmf-dist/source/latex/babel/bbunicode.dtx @@ -0,0 +1,180 @@ +% \iffalse meta-comment +% +% Copyright 2013 Javier Bezos and any individual authors +% listed elsewhere in this file. All rights reserved. +% +% This file is part of the Babel system. +% -------------------------------------- +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2003/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work is Javier Bezos. +% +% The list of all files belonging to the Babel system is +% given in the file `manifest.bbl. See also `legal.bbl' for additional +% information. +% +% The list of derived (unpacked) files belonging to the distribution +% and covered by LPPL is defined by the unpacking scripts (with +% extension .ins) which are part of the distribution. +% \fi +% \CheckSum{795} +% +% \iffalse +%<*dtx> +\ProvidesFile{bbunicode.dtx} + [2013/04/22 v1.0b Babel hooks for Unicode engines] +%</dtx> +% +%% File `bbunicode.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 2103 +%% by Javier Bezos +% +%<*filedriver> +\documentclass{ltxdoc} +\font\manual=logo10 % font used for the METAFONT logo, etc. +\newcommand*\MF{{\manual META}\-{\manual FONT}} +\newcommand*{\babel}{\textsf{babel}} +\newcommand*{\langvar}{$\langle \it lang \rangle$} +\newcommand*{\note}[1]{} +\newcommand*{\pkg}[1]{\textsf{#1}} +\newcommand*{\Lopt}[1]{\textsf{#1}} +\newcommand*{\file}[1]{\texttt{#1}} +\begin{document} + \DocInput{bbunicode.dtx} +\end{document} +%</filedriver> +% \fi +% +% \GetFileInfo{bbunicode.dtx} +% \StopEventually{} +% +% \section{Hooks for XeTeX and LuaTeX} +% +% \subsection{XeTeX} +% +% Unfortunately, the current encoding cannot be retrieved and +% therefore it is reset always to |utf8|, which seems a sensible default. +% \begin{macrocode} +%<*xetex> +\def\BabelStringsDefault{unicode} +\let\xebbl@stop\relax +\AddBabelHook{xetex}{encodedcommands}{% + \def\bbl@tempa{#1}% + \ifx\bbl@tempa\@empty + \XeTeXinputencoding"bytes"% + \else + \XeTeXinputencoding"#1"% + \fi + \def\xebbl@stop{\XeTeXinputencoding"utf8"}} +\AddBabelHook{xetex}{stopcommands}{% + \xebbl@stop + \let\xebbl@stop\relax} +%</xetex> +% \end{macrocode} +% \subsection{LuaTeX} +% +% This part relies on the |lua| stripts in \pkg{luatex-hyphen} by Khaled +% Hosny, \'{E}lie Roux, and Manuel +% P\'{e}gouri\'{e}-Gonnard. \'{E}lie also improved the code below. +% \changes{bbunicode~1.0b}{2013/04/22}{luatex-hyphen is loaded +% with require. Changes supplied by \'{E}lie Roux.} +% +% \begin{macrocode} +%<*luatex> +\directlua{% + require("luatex-hyphen") + Babel = {} + function Babel.bytes(line) + return line:gsub("(.)", + function (chr) return unicode.utf8.char(string.byte(chr)) end) + end + function Babel.begin_process_input() + if luatexbase and luatexbase.add_to_callback then + luatexbase.add_to_callback('process_input_buffer',Babel.bytes,'Babel.bytes') + else + Babel.callback = callback.find('process_input_buffer') + callback.register('process_input_buffer',Babel.bytes) + end + end + function Babel.end_process_input () + if luatexbase and luatexbase.remove_from_callback then + luatexbase.remove_from_callback('process_input_buffer','Babel.bytes') + else + callback.register('process_input_buffer',Babel.callback) + end + end +} +\def\BabelStringsDefault{unicode} +\let\luabbl@stop\relax +\AddBabelHook{luatex}{encodedcommands}{% + \def\bbl@tempa{utf8}\def\bbl@tempb{#1}% + \ifx\bbl@tempa\bbl@tempb\else + \directlua{Babel.begin_process_input()}% + \def\luabbl@stop{% + \directlua{Babel.end_process_input()}}% + \fi}% +\AddBabelHook{luatex}{stopcommands}{% + \luabbl@stop + \let\luabbl@stop\relax} +\AddBabelHook{luatex}{patterns}{% + \ifx\directlua\relax\else + \ifcsname lu@texhyphen@loaded@\the\language\endcsname \else + \global\@namedef{lu@texhyphen@loaded@\the\language}{}% + \directlua{ + luatexhyphen.loadlanguage('\luatexluaescapestring{\string#1}', + '\the\language')}% + \fi + \fi} +\AddBabelHook{luatex}{adddialect}{% + \ifx\directlua\relax\else + \directlua{ + luatexhyphen.adddialect('\luatexluaescapestring{\string#1}', + '\luatexluaescapestring{\string#2}') + }% + \fi} +\AddBabelHook{luatex}{everylanguage}{% + \directlua{ + processnow = (tex.language == 0) or + (luatexhyphen.lookupname('\luatexluaescapestring{\string#1}') == nil)}% + \ifnum0=\directlua{tex.sprint(processnow and "0" or "1")}\relax + \global\@namedef{lu@texhyphen@loaded@\the\language}{}% + \fi} +\AddBabelHook{luatex}{loadpatterns}{% + \ifnum0=\directlua{tex.sprint(processnow and "0" or "1")}\relax + \input #1\relax + \fi} +\AddBabelHook{luatex}{loadexceptions}{% + \ifnum0=\directlua{tex.sprint(processnow and "0" or "1")}\relax + \input #1\relax + \fi + \directlua{processnow = nil}} +%</luatex> +% \end{macrocode} +% +\endinput +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} |