summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/babel/bbunicode.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/babel/bbunicode.dtx')
-rw-r--r--Master/texmf-dist/source/latex/babel/bbunicode.dtx180
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 \~}