summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/lualatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-09-27 23:17:40 +0000
committerKarl Berry <karl@freefriends.org>2009-09-27 23:17:40 +0000
commit523691ad983891609b53ee8edab9ad9cef4248a4 (patch)
treeeae640246d1b3f086e0854f80688e99cc215fe5e /Master/texmf-dist/source/lualatex
parenta2ee29a725b5fa657e369a9daf0ecb6f66e79c49 (diff)
luainputenc 0.94 (26sep09)
git-svn-id: svn://tug.org/texlive/trunk@15483 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/lualatex')
-rw-r--r--Master/texmf-dist/source/lualatex/luainputenc/Makefile16
-rw-r--r--Master/texmf-dist/source/lualatex/luainputenc/luainputenc.dtx694
2 files changed, 458 insertions, 252 deletions
diff --git a/Master/texmf-dist/source/lualatex/luainputenc/Makefile b/Master/texmf-dist/source/lualatex/luainputenc/Makefile
index 68e17ca6e87..e3857b9057c 100644
--- a/Master/texmf-dist/source/lualatex/luainputenc/Makefile
+++ b/Master/texmf-dist/source/lualatex/luainputenc/Makefile
@@ -23,10 +23,10 @@ ALL_FILES = $(GENERATED) $(SOURCE)
# Installation locations
FORMAT = lualatex
-RUNDIR = $(TEXMF)/tex/$(FORMAT)/$(NAME)
-DOCDIR = $(TEXMF)/doc/$(FORMAT)/$(NAME)
-SRCDIR = $(TEXMF)/source/$(FORMAT)/$(NAME)
-TEXMF = ./texmf
+RUNDIR = $(TEXMFROOT)/tex/$(FORMAT)/$(NAME)
+DOCDIR = $(TEXMFROOT)/doc/$(FORMAT)/$(NAME)
+SRCDIR = $(TEXMFROOT)/source/$(FORMAT)/$(NAME)
+TEXMFROOT = ./texmf
CTAN_ZIP = $(NAME).zip
TDS_ZIP = $(NAME).tds.zip
@@ -63,18 +63,18 @@ define run-install
@mkdir -p $(SRCDIR) && cp $(SRCFILES) $(SRCDIR)
endef
-$(TDS_ZIP): TEXMF=./tmp-texmf
+$(TDS_ZIP): TEXMFROOT=./tmp-texmf
$(TDS_ZIP): $(ALL_FILES)
@echo "Making TDS-ready archive $@."
@$(RM) -- $@
$(run-install)
- @cd $(TEXMF) && zip -9 ../$@ -r . >/dev/null
- @$(RM) -r -- $(TEXMF)
+ @cd $(TEXMFROOT) && zip -9 ../$@ -r . >/dev/null
+ @$(RM) -r -- $(TEXMFROOT)
.PHONY: install manifest clean mrproper
install: $(ALL_FILES)
- @echo "Installing in '$(TEXMF)'."
+ @echo "Installing in '$(TEXMFROOT)'."
$(run-install)
manifest:
diff --git a/Master/texmf-dist/source/lualatex/luainputenc/luainputenc.dtx b/Master/texmf-dist/source/lualatex/luainputenc/luainputenc.dtx
index d52c48f60cc..06e7c6b8ce6 100644
--- a/Master/texmf-dist/source/lualatex/luainputenc/luainputenc.dtx
+++ b/Master/texmf-dist/source/lualatex/luainputenc/luainputenc.dtx
@@ -41,7 +41,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: luainputenc 2009/04/15 v0.93 inputenc package for LuaTeX}
+\Msg{* Package: luainputenc 2009/09/23 v0.94 inputenc package for LuaTeX}
\Msg{************************************************************************}
\keepsilent
@@ -129,7 +129,7 @@ and the derived files
%<package>
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{luainputenc}
-%<package> [2009/04/15 v0.93 inputenc package for LuaTeX]
+%<package> [2009/09/23 v0.94 inputenc package for LuaTeX]
%<package>
% \fi
%<*driver>
@@ -164,13 +164,14 @@ and the derived files
% \GetFileInfo{luainputenc.sty}
%
% \title{The \textsf{luainputenc} package}
-% \date{2009/04/15 v0.93}
+% \date{2009/09/23 v0.94}
% \author{Elie Roux \\ \texttt{elie.roux@telecom-bretagne.eu}}
%
% \maketitle
%
% \begin{abstract}
-% Input encoding management for Lua\TeX . For an introduction on this package (among others), please refer to \texttt{luatex-reference.pdf}.
+% Input encoding management for Lua\TeX . For an introduction on this package
+% (among others), please refer to \texttt{luatex-reference.pdf}.
% \end{abstract}
%
% \tableofcontents
@@ -179,49 +180,121 @@ and the derived files
%
% \subsection{Introduction}
%
-% One the the most interesting new features of Lua\TeX\ is the fact that it is (like Omega/Aleph) not limited to 256 characters, and can now understand Unicode. The problem is that it does not read input the way older engines (like pdf\TeX) do, and thus \textsf{inputenc} is totally broken with Lua\TeX . This package aims at replacing \textsf{inputenc} for Lua\TeX , by adapting the way Lua\TeX\ handles input, and the way \textsf{inputenc} handles UTF-8. This package has two very distinct modes: 8-bit and UTF-8.
+% One the the most interesting new features of Lua\TeX\ is the fact that it is
+% (like Omega/Aleph) not limited to 256 characters, and can now understand
+% Unicode. The problem is that it does not read input the way older engines
+% (like pdf\TeX) do, and thus \textsf{inputenc} is totally broken with Lua\TeX
+% . This package aims at replacing \textsf{inputenc} for Lua\TeX , by adapting
+% the way Lua\TeX\ handles input, and the way \textsf{inputenc} handles UTF-8.
+% This package has two very distinct modes: 8-bit and UTF-8.
%
% \subsection{Overview of 8-bit mode}
%
-% This package \textbf{does not} map 8-bit encodings to utf8. It allows Lua\TeX\ to read 8-bit characters, by converting each byte into a unicode character with the same character number. The resulting unicode characters are not true UTF-8, they are what we will call ``fake UTF-8". For example the byte 225 will be converted into the unicode character with number 225 (two bytes long). It will be true UTF-8 only if the encoding is latin1.
-%
-% Here is how it works: the 8-bit encodings are converted into fake UTF-8, so that the corresponding tokens are chars with the good numbers. Then (like \textsf{inputenc}) it reads the char numbers, and converts it into LICR (\LaTeX\ Internal Character Representation), with the font encoding.
-%
-% \textsf{luainputenc} only changes the input behaviour, it does not change the ouput behaviour (when files are written for example). The consequence is that files will still be written by Lua\TeX\ in UTF-8 (fake UTF-8 in this case), even if the asked input encoding is a 8-bit encoding. In most cases it's not a problem, as most files will be written in LICR, meaning ASCII, which is both 8-bit and UTF-8. The problem comes when characters with a number $>$ 128 are written in a 8-bit encoding. This may happen if you use |\protect| in a section for example. In these cases, Lua\TeX\ will write fake UTF-8, and try to read 8-bit encoding, so it will get confused.
-%
-% The proposed solution is to unactivate the input conversion when we read certain files or extentions. This package should work with no change for most documents, but if you cook your own aux files with an unknown extention, you may have to force the package to read some files in UTF-8 instead of 8-bit. See comments in the \texttt{.sty} file to know the useful commands.
+% This package \textbf{does not} map 8-bit encodings to utf8. It allows
+% Lua\TeX\ to read 8-bit characters, by converting each byte into a unicode
+% character with the same character number. The resulting unicode characters
+% are not true UTF-8, they are what we will call ``fake UTF-8". For example
+% the byte 225 will be converted into the unicode character with number 225
+% (two bytes long). It will be true UTF-8 only if the encoding is latin1.
+%
+% Here is how it works: the 8-bit encodings are converted into fake UTF-8, so
+% that the corresponding tokens are chars with the good numbers. Then (like
+% \textsf{inputenc}) it reads the char numbers, and converts it into LICR
+% (\LaTeX\ Internal Character Representation), with the font encoding.
+%
+% In Lua\TeX\ version 0.43, a new callback called |process_output_buffer|,
+% this callbacks allows to make Lua\TeX\ write 8-bit instead of UTF-8, so the
+% behaviour is the same as pdfTeX as this level. For versions prior to 0.43
+% though, we need to do more tricky things, described in the next paragraph.
+% This machinery is disabled for Lua\TeX\ version 0.43 and superior, so you
+% can keep the default behaviour, which will be compatible with pdfTeX in
+% most cases, but you can consider the machinery obsolete.
+%
+% For these old versions, \textsf{luainputenc} only changes the input behaviour, it does not change
+% the ouput behaviour (when files are written for example). The consequence is
+% that files will still be written by Lua\TeX\ in UTF-8 (fake UTF-8 in this
+% case), even if the asked input encoding is a 8-bit encoding. In most cases
+% it's not a problem, as most files will be written in LICR, meaning ASCII,
+% which is both 8-bit and UTF-8. The problem comes when characters with a
+% number $>$ 128 are written in a 8-bit encoding. This may happen if you use
+% |\protect| in a section for example. In these cases, Lua\TeX\ will write
+% fake UTF-8, and try to read 8-bit encoding, so it will get confused.
+%
+% The proposed solution is to unactivate the input conversion when we read
+% certain files or extentions. This package should work with no change for
+% most documents, but if you cook your own aux files with an unknown
+% extention, you may have to force the package to read some files in UTF-8
+% instead of 8-bit. See comments in the \texttt{.sty} file to know the useful
+% commands.
%
% \subsection{Overview of UTF-8 mode}
%
-% The behaviour of \textsf{inputenc} in utf8 mode is to read the input byte by byte, and decide if the character we are in is 1, 2, 3 or 4 bytes long, and then read other bytes accordingly. This behaviour fails with Lua\TeX\ because it reads input character by character (characters do not have a fixed number of bytes in unicode). The result is thus an error.
+% The behaviour of \textsf{inputenc} in utf8 mode is to read the input byte by
+% byte, and decide if the character we are in is 1, 2, 3 or 4 bytes long, and
+% then read other bytes accordingly. This behaviour fails with Lua\TeX\
+% because it reads input character by character (characters do not have a
+% fixed number of bytes in unicode). The result is thus an error.
%
-% All characters recognized by \TeX\ are active characters, that correspond to a LICR macro. Then \textsf{inputenc} reads the \texttt{*.dfu} files that contain the correspondance between these LICR macros and a character number in the fonts for different font encodings (T1, OT1, etc.).
+% All characters recognized by \TeX\ are active characters, that correspond to
+% a LICR macro. Then \textsf{inputenc} reads the \texttt{*.dfu} files that
+% contain the correspondance between these LICR macros and a character number
+% in the fonts for different font encodings (T1, OT1, etc.).
%
% \subsubsection{legacy mode}
%
-% \textsf{luainputenc} can get this behaviour (we will call it \emph{legacy mode}, but another difference implied by the fact that Lua\TeX\ can read more than 256 characters is that fonts can also have more than 256 characters. Lua\TeX\ can thus read unicode fonts. If we want to use unicode fonts (OTF for example), we can't use the \emph{legacy mode} anymore, as it would mean that we would have to rewrite a specially long \texttt{unicode.dfu} file, and it would be totally inefficient, as for instance \texttt{\'e} (unicode character number 233) would be mapped to \texttt{\string\'e}, and then mapped back to \texttt{\string\char\ 233}.
+% \textsf{luainputenc} can get this behaviour (we will call it \emph{legacy
+% mode}, but another difference implied by the fact that Lua\TeX\ can read
+% more than 256 characters is that fonts can also have more than 256
+% characters. Lua\TeX\ can thus read unicode fonts. If we want to use unicode
+% fonts (OTF for example), we can't use the \emph{legacy mode} anymore, as it
+% would mean that we would have to rewrite a specially long
+% \texttt{unicode.dfu} file, and it would be totally inefficient, as for
+% instance \texttt{\'e} (unicode character number 233) would be mapped to
+% \texttt{\string\'e}, and then mapped back to \texttt{\string\char\ 233}.
%
% \subsubsection{unicode font mode}
%
-% To fix this, the most simple solution is to desactivate all activated characters, thus typing \texttt{\'e} will directly call \texttt{\string\char\ 233} in the unicode fonts, and produce a \texttt{\'e}. We will call this behaviour the \emph{unicode font mode}. To enable this mode, you can use the option \texttt{unactivate} in \textsf{luainputenc}, and you must use the font encoding \texttt{EU2} provided by this package too. See section \ref{s:eu2} for more details about \texttt{EU2}. To use this mode with \texttt{EU2}, you must be able to open OTF fonts. A simple way to do so it by using the package \textsf{luaotfload}.
+% To fix this, the most simple solution is to desactivate all activated
+% characters, thus typing \texttt{\'e} will directly call
+% \texttt{\string\char\ 233} in the unicode fonts, and produce a \texttt{\'e}.
+% We will call this behaviour the \emph{unicode font mode}. To enable this
+% mode, you can use the option \texttt{unactivate} in \textsf{luainputenc},
+% and you must use the font encoding \texttt{EU2} provided by this package
+% too. See section \ref{s:eu2} for more details about \texttt{EU2}. To use
+% this mode with \texttt{EU2}, you must be able to open OTF fonts. A simple
+% way to do so it by using the package \textsf{luaotfload}.
%
% \subsubsection{mixed mode}
%
-% But the \emph{unicode font mode} has a strong limitation (that will certainly dissapear with time): it cannot use non-unicode fonts. If you want to mix unicode fonts and old fonts, you'll have to use the \emph{mixed mode}. In this mode you can type some parts of your document in \emph{legacy mode} and some in \emph{unicode font mode}. The reason why we chose not to integrate this choice in the \emph{legacy mode} is that we wanted to have a mode that preserved most of the backward compatibility, to safely compile old documents; the \emph{mixed mode} introduces new things that may break old documents. To get the \emph{mixed mode}, you must pass the option \texttt{lutf8x} to \textsf{luainputenc}. This mode is the most experimental.
+% But the \emph{unicode font mode} has a strong limitation (that will
+% certainly dissapear with time): it cannot use non-unicode fonts. If you want
+% to mix unicode fonts and old fonts, you'll have to use the \emph{mixed
+% mode}. In this mode you can type some parts of your document in \emph{legacy
+% mode} and some in \emph{unicode font mode}. The reason why we chose not to
+% integrate this choice in the \emph{legacy mode} is that we wanted to have a
+% mode that preserved most of the backward compatibility, to safely compile
+% old documents; the \emph{mixed mode} introduces new things that may break
+% old documents. To get the \emph{mixed mode}, you must pass the option
+% \texttt{lutf8x} to \textsf{luainputenc}. This mode is the most experimental.
%
% \section{Files}
%
-% This package contains a \texttt{.sty} file for both \LaTeX\ and Plain, a patch for inputenc to use \textsf{luainputenc} so that you can process old documents without changing anything, and the lua functions.
+% This package contains a \texttt{.sty} file for both \LaTeX\ and Plain, a
+% patch for inputenc to use \textsf{luainputenc} so that you can process old
+% documents without changing anything, and the lua functions.
%
% \subsection{\texttt{inputenc.sty} patch}
%
-% A good thing would be to patch \textsf{inputenc} to load \textsf{luainputenc} instead, so that you don't have to change your documents to load \textsf{luainputenc} especially. The \LaTeX\ team is extremely conservative and does not want this patch applied (maybe we will find a solution later). Here is a patch for inputenc.sty:
+% A good thing would be to patch \textsf{inputenc} to load
+% \textsf{luainputenc} instead, so that you don't have to change your
+% documents to load \textsf{luainputenc} especially. The \LaTeX\ team is
+% extremely conservative and does not want this patch applied (maybe we will
+% find a solution later). Here is a patch for inputenc.sty:
%
% \iffalse
%<*patch>
% \fi
%
-%
% \begin{macrocode}
\ifnum\@tempcnta<`#2\relax
@@ -255,7 +328,8 @@ and the derived files
%
% \subsection{\texttt{luainputenc.sty}}
%
-% This file has some code from \texttt{inputenc.sty}, but also provides new options, and new macros to convert from 8-bit to fake UTF-8.
+% This file has some code from \texttt{inputenc.sty}, but also provides new
+% options, and new macros to convert from 8-bit to fake UTF-8.
%
% \iffalse
%<*package>
@@ -282,7 +356,10 @@ and the derived files
% \end{macrocode}
%
-% First we check if we are called with Lua\TeX , (pdf)\TeX or Xe\TeX . If we are called with pdf\TeX , we default to \textsf{inputenc}, and to \textsf{xetex-inputenc} if we are called with Xe\TeX . We also remap the new options to \texttt{utf8} in these cases.
+% First we check if we are called with Lua\TeX , (pdf)\TeX or Xe\TeX . If
+% we are called with pdf\TeX , we default to \textsf{inputenc}, and to
+% \textsf{xetex-inputenc} if we are called with Xe\TeX . We also remap the
+% new options to \texttt{utf8} in these cases.
%
% \begin{macrocode}
@@ -311,17 +388,18 @@ and the derived files
% \end{macrocode}
%
-% Here we know we are called with Lua\TeX . We first require \textsf{luatextra}, then we load the \texttt{lua} file.
+% Here we know we are called with Lua\TeX . We first require
+% \textsf{luatextra}, then we load the \texttt{lua} file.
%
% \begin{macrocode}
\RequirePackage{luatextra}
-\luaUseModule{luainputenc}
+\luatexUseModule{luainputenc}
% \end{macrocode}
%
-% Here is some code from \textsf{inputenc}.
+% Here is some code from \textsf{inputenc}.
%
% \begin{macrocode}
@@ -352,9 +430,12 @@ and the derived files
}
% \end{macrocode}
%
-% We changed a little the behaviour of this macro: we removed |\@inpenc@loop\^^?\^^ff|, because it made no sense in UTF-8 mode. We will call this line for 8-bit encodings.
+% We changed a little the behaviour of this macro: we removed
+% |\@inpenc@loop\^^?\^^ff|, because it made no sense in UTF-8 mode. We will
+% call this line for 8-bit encodings.
%
% \begin{macrocode}
+
\def\inputencoding#1{%
\the\inpenc@prehook
\gdef\@inpenc@test{\global\let\@inpenc@test\relax}%
@@ -400,7 +481,9 @@ and the derived files
% \end{macrocode}
%
-% Here we declare our options. Note that we remap \texttt{utf8} to \texttt{lutf8}, because we use out \texttt{lutf8.def} instead of \textsf{inputenc}'s \texttt{utf8.def}.
+% Here we declare our options. Note that we remap \texttt{utf8} to
+% \texttt{lutf8}, because we use out \texttt{lutf8.def} instead of
+% \textsf{inputenc}'s \texttt{utf8.def}.
%
% \begin{macrocode}
@@ -422,7 +505,8 @@ and the derived files
% \end{macrocode}
%
-% For the \texttt{unactivate} option, for \emph{unicode font mode}, we just don't do anything.
+% For the \texttt{unactivate} option, for \emph{unicode font mode}, we just
+% don't do anything.
%
% \begin{macrocode}
@@ -432,7 +516,9 @@ and the derived files
% \end{macrocode}
%
-% All other options are 8-bit encodings, so we activate the translation into fake UTF-8, and we execute the loop we removes from |\inputencoding|.
+% All other options are 8-bit encodings, so we activate the translation
+% into fake UTF-8, and we execute the loop we removes from
+% |\inputencoding|.
%
% \begin{macrocode}
@@ -444,7 +530,27 @@ and the derived files
% \end{macrocode}
%
-% |\lIE@setstarted| and |\lIE@setstopped| are called when the fake UTF-8 translation must be activated or desactivated. You can call them several successive times. They are called very often, even if the package is not activated (for example if it's loaded with the utf8 option), but they act only if the package is activated.
+% The rest of the file is only the machinery for LuaTeX versions without
+% the callback |process_output_buffer|, so it will be deprecated after
+% TeXLive 2009, you are not advised to use it.
+%
+% \begin{macrocode}
+
+\ifnum\luatexversion>42
+
+ \newcommand*{\lIE@activate}[0]{%
+ \luadirect{luainputenc.register_callbacks()}%
+ }
+
+\else
+
+% \end{macrocode}
+%
+% |\lIE@setstarted| and |\lIE@setstopped| are called when the fake UTF-8
+% translation must be activated or desactivated. You can call them several
+% successive times. They are called very often, even if the package is not
+% activated (for example if it's loaded with the utf8 option), but they act
+% only if the package is activated.
%
% \begin{macrocode}
@@ -462,11 +568,23 @@ and the derived files
% \end{macrocode}
%
-% The following 5 macros are made to declare a file that will have to be read in fake UTF-8 and not in 8-bit. These files are the ones that will be generated by \TeX . In \textbf{no way} this means you can include true UTF-8 files, it means that you can include files that have been written by Lua\TeX\ with \textsf{luainputenc}, which means files in fake UTF-8. The macros are very simple, when you call them with a file name (the same as the one you will use with \string\input ), it will read it with or without the fake UTF-8 translation. This package includes a whole bunch of extentions that will be read in fake UTF-8, so the occasions to use these macros will be rare, but if you use them, please report it to the package maintainer.
+% The following 5 macros are made to declare a file that will have to be
+% read in fake UTF-8 and not in 8-bit. These files are the ones that will
+% be generated by \TeX . In \textbf{no way} this means you can include true
+% UTF-8 files, it means that you can include files that have been written
+% by Lua\TeX\ with \textsf{luainputenc}, which means files in fake UTF-8.
+% The macros are very simple, when you call them with a file name (the same
+% as the one you will use with \string\input ), it will read it with or
+% without the fake UTF-8 translation. This package includes a whole bunch
+% of extentions that will be read in fake UTF-8, so the occasions to use
+% these macros will be rare, but if you use them, please report it to the
+% package maintainer.
%
-% \begin{macro}{\lIE@SetUtfFile}
+% \begin{macro}{\lIE@SetUtfFile}
%
-% If you call this macro with a file name, each time you will input this file, it will be read in fake UTF-8. You can call it with a file that you generate with Lua\TeX\ and that you want to include.
+% If you call this macro with a file name, each time you will input this
+% file, it will be read in fake UTF-8. You can call it with a file that you
+% generate with Lua\TeX\ and that you want to include.
%
% \begin{macrocode}
@@ -476,11 +594,13 @@ and the derived files
% \end{macrocode}
%
-% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\lIE@SetNonUtfFile}
+% \begin{macro}{\lIE@SetNonUtfFile}
%
-% Same as the previous macro, except that the file will be read as 8-bit. This macro is useful if there is an exception in an extention (see further comments).
+% Same as the previous macro, except that the file will be read as 8-bit.
+% This macro is useful if there is an exception in an extention (see
+% further comments).
%
% \begin{macrocode}
@@ -490,11 +610,11 @@ and the derived files
% \end{macrocode}
%
-% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\lIE@UnsetFile}
+% \begin{macro}{\lIE@UnsetFile}
%
-% This macro gives a file the default behaviour of its extention.
+% This macro gives a file the default behaviour of its extention.
%
% \begin{macrocode}
@@ -504,11 +624,16 @@ and the derived files
% \end{macrocode}
%
-% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\lIE@SetUtfExt}
+% \begin{macro}{\lIE@SetUtfExt}
%
-% You can tell \textsf{luainputenc} to treat all files with a particular extention in a certain way. The way the file extention is checked is to compare the four last characters of the filename. So if your extention has only three letters, you must include the preceding dot. This macro tells \textsf{luainputenc} to read all files from an extention in fake UTF-8.
+% You can tell \textsf{luainputenc} to treat all files with a particular
+% extention in a certain way. The way the file extention is checked is to
+% compare the four last characters of the filename. So if your extention
+% has only three letters, you must include the preceding dot. This macro
+% tells \textsf{luainputenc} to read all files from an extention in fake
+% UTF-8.
%
% \begin{macrocode}
@@ -518,11 +643,11 @@ and the derived files
% \end{macrocode}
%
-% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\lIE@SetUtfExt}
+% \begin{macro}{\lIE@SetUtfExt}
%
-% Same as before, but the files will be read in 8-bit.
+% Same as before, but the files will be read in 8-bit.
%
% \begin{macrocode}
@@ -532,11 +657,13 @@ and the derived files
% \end{macrocode}
%
-% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\lIE@InputUtfFile}
+% \begin{macro}{\lIE@InputUtfFile}
%
-% This macro inputs a file in fake UTF-8. It has the ``feature" to unset the behaviour on the file you will call, so to be safe, you must call them with files for which the behaviour has not been set.
+% This macro inputs a file in fake UTF-8. It has the ``feature" to unset
+% the behaviour on the file you will call, so to be safe, you must call
+% them with files for which the behaviour has not been set.
%
% \begin{macrocode}
@@ -549,11 +676,11 @@ and the derived files
% \end{macrocode}
%
-% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\lIE@InputNonUtfFile}
+% \begin{macro}{\lIE@InputNonUtfFile}
%
-% Same as before, but to read a file as 8-bit.
+% Same as before, but to read a file as 8-bit.
%
% \begin{macrocode}
@@ -565,9 +692,9 @@ and the derived files
% \end{macrocode}
%
-% \end{macro}
+% \end{macro}
%
-% Two definitions to put the previous two macros in the user space.
+% Two definitions to put the previous two macros in the user space.
%
% \begin{macrocode}
@@ -592,6 +719,8 @@ and the derived files
\fi%
}
+\fi
+
\ProcessOptions*
% \end{macrocode}
@@ -626,13 +755,15 @@ and the derived files
% \end{macrocode}
%
-% Most of the file is taken from \texttt{utf8.def}, the main changes are commented. A lot of code was removed, especially the codes that analysed the unicode characters byte by byte.
+% Most of the file is taken from \texttt{utf8.def}, the main changes are
+% commented. A lot of code was removed, especially the codes that analysed
+% the unicode characters byte by byte.
%
% \begin{macrocode}
\ProvidesFile{lutf8.def}
- [2009/04/15 v0.93 UTF-8 support for luainputenc]
+ [2009/09/23 v0.94 UTF-8 support for luainputenc]
\makeatletter
\catcode`\ \saved@space@catcode
@@ -645,7 +776,11 @@ and the derived files
% \end{macrocode}
%
-% This function is changed a lot. Its aim is to map the character (first argument) to a macro (second argument). In \texttt{utf8.def} it was complicated as unicode was analyzed byte by byte. With Lua\TeX\ it is extremely simple, we just have to activate the character, and call a traditional |\DeclareInputTeXt|.
+% This function is changed a lot. Its aim is to map the character (first
+% argument) to a macro (second argument). In \texttt{utf8.def} it was
+% complicated as unicode was analyzed byte by byte. With Lua\TeX\ it is
+% extremely simple, we just have to activate the character, and call a
+% traditional |\DeclareInputTeXt|.
%
% \begin{macrocode}
@@ -734,12 +869,17 @@ and the derived files
% \end{macrocode}
%
-% This file is mostly the code from \texttt{lutf.def}, but it adds mechanisms to pass from \emph{legacy mode} to \emph{unicode font mode}. The trick is to put in a lua table all characters that are activated by the \emph{legacy mode}, and to unactivate them when we switch to \emph{unicode font mode}. This is made (almost) entirely in lua. The difficult part is the changes in |\DeclareFontEncoding|.
+% This file is mostly the code from \texttt{lutf.def}, but it adds
+% mechanisms to pass from \emph{legacy mode} to \emph{unicode font mode}.
+% The trick is to put in a lua table all characters that are activated by
+% the \emph{legacy mode}, and to unactivate them when we switch to
+% \emph{unicode font mode}. This is made (almost) entirely in lua. The
+% difficult part is the changes in |\DeclareFontEncoding|.
%
% \begin{macrocode}
\ProvidesFile{lutf8x.def}
- [2009/04/15 v0.93 UTF-8 support for luainputenc]
+ [2009/09/23 v0.94 UTF-8 support for luainputenc]
\makeatletter
\catcode`\ \saved@space@catcode
@@ -752,7 +892,7 @@ and the derived files
% \end{macrocode}
%
-% We change it a little to add the activated character in the lua table.
+% We change it a little to add the activated character in the lua table.
%
% \begin{macrocode}
@@ -778,7 +918,8 @@ and the derived files
% \end{macrocode}
%
-% The macros to change from/to \emph{legacy mode} to/from \emph{unicode font mode}.
+% The macros to change from/to \emph{legacy mode} to/from \emph{unicode
+% font mode}.
%
% \begin{macrocode}
@@ -798,7 +939,10 @@ and the derived files
% \end{macrocode}
%
-% We add some code to automatically activate or unactivate characters according to the encoding changes. Note that we override |\@@enc@update|, which may pose some problems if a package of yours does it too. Fortunately this package is the only one that does it in \TeX Live.
+% We add some code to automatically activate or unactivate characters
+% according to the encoding changes. Note that we override |\@@enc@update|,
+% which may pose some problems if a package of yours does it too.
+% Fortunately this package is the only one that does it in \TeX Live.
%
% \begin{macrocode}
@@ -871,12 +1015,16 @@ and the derived files
%
% \subsection{\texttt{eu2enc.def}\label{s:eu2}}
%
-% This file is extremely short. It just declares the encoding, with the default font. The default font here is lmr, which means that \LaTeX\ will read \texttt{eu2lmr.fd}. The problem is that all unicode fonts are OTF fonts, so \texttt{eu2lmr.fd} will call OTF fonts. Thus, to use \texttt{EU2}, you need to be able to read OTF fonts. The package \textsf{luaotfload} is a good choice to be able to do so.
+% This file is extremely short. It just declares the encoding, with the
+% default font. The default font here is lmr, which means that \LaTeX\ will
+% read \texttt{eu2lmr.fd}. The problem is that all unicode fonts are OTF
+% fonts, so \texttt{eu2lmr.fd} will call OTF fonts. Thus, to use
+% \texttt{EU2}, you need to be able to read OTF fonts. The package
+% \textsf{luaotfload} is a good choice to be able to do so.
%
% \begin{macrocode}
-\ProvidesFile{eu2enc.def}[2009/04/15 v0.1
- a unicode font encoding for LuaTeX.]
+\ProvidesFile{eu2enc.def}[2009/09/23 v0.1 a unicode font encoding for LuaTeX.]
\DeclareFontEncoding{EU2}{}{}
\DeclareErrorFont{EU2}{lmr}{m}{n}{10}
\DeclareFontSubstitution{EU2}{lmr}{m}{n}
@@ -893,62 +1041,64 @@ and the derived files
%
% \subsection{\texttt{eu2lmr.fd}}
%
-% This file simply describes the default (lmr) font of the \texttt{EU2} encoding. It loads the otf fonts with some default features enabled. This file may change, don't rely on it too much.
+% This file simply describes the default (lmr) font of the \texttt{EU2}
+% encoding. It loads the otf fonts with some default features enabled. This
+% file may change, don't rely on it too much.
%
% \begin{macrocode}
\ProvidesFile{eu2lmr.fd}
- [2009/04/15 v0.1 Font defs for Latin Modern for LuaTeX's EU2 encoding]
+ [2009/09/23 v0.2 Font defs for Latin Modern for LuaTeX's EU2 encoding]
\DeclareFontFamily{EU2}{lmr}{}
\DeclareFontShape{EU2}{lmr}{m}{n}%
- {<-5.5> "lmroman5-regular:+tlig;+tsub;+liga"
- <5.5-6.5> "lmroman6-regular:+tlig;+tsub;+liga"
- <6.5-7.5> "lmroman7-regular:+tlig;+tsub;+liga"
- <7.5-8.5> "lmroman8-regular:+tlig;+tsub;+liga"
- <8.5-9.5> "lmroman9-regular:+tlig;+tsub;+liga"
- <9.5-11> "lmroman10-regular:+tlig;+tsub;+liga"
- <11-15> "lmroman12-regular:+tlig;+tsub;+liga"
- <15-> "lmroman17-regular:+tlig;+tsub;+liga"
+ {<-5.5> "lmroman5-regular:+tlig;+tsub;+liga;+rlig;"
+ <5.5-6.5> "lmroman6-regular:+tlig;+tsub;+liga;+rlig;"
+ <6.5-7.5> "lmroman7-regular:+tlig;+tsub;+liga;+rlig;"
+ <7.5-8.5> "lmroman8-regular:+tlig;+tsub;+liga;+rlig;"
+ <8.5-9.5> "lmroman9-regular:+tlig;+tsub;+liga;+rlig;"
+ <9.5-11> "lmroman10-regular:+tlig;+tsub;+liga;+rlig;"
+ <11-15> "lmroman12-regular:+tlig;+tsub;+liga;+rlig;"
+ <15-> "lmroman17-regular:+tlig;+tsub;+liga;+rlig;"
}{}
\DeclareFontShape{EU2}{lmr}{m}{sl}%
- {<-8.5> "lmroman8-oblique:+tlig;+tsub;+liga"
- <8.5-9.5> "lmroman9-oblique:+tlig;+tsub;+liga"
- <9.5-11> "lmroman10-oblique:+tlig;+tsub;+liga"
- <11-15> "lmroman12-oblique:+tlig;+tsub;+liga"
- <15-> "lmroman17-oblique:+tlig;+tsub;+liga"
+ {<-8.5> "lmroman8-oblique:+tlig;+tsub;+liga;+rlig;"
+ <8.5-9.5> "lmroman9-oblique:+tlig;+tsub;+liga;+rlig;"
+ <9.5-11> "lmroman10-oblique:+tlig;+tsub;+liga;+rlig;"
+ <11-15> "lmroman12-oblique:+tlig;+tsub;+liga;+rlig;"
+ <15-> "lmroman17-oblique:+tlig;+tsub;+liga;+rlig;"
}{}
\DeclareFontShape{EU2}{lmr}{m}{it}%
- {<-7.5> "lmroman7-italic:+tlig;+tsub;+liga"
- <7.5-8.5> "lmroman8-italic:+tlig;+tsub;+liga"
- <8.5-9.5> "lmroman9-italic:+tlig;+tsub;+liga"
- <9.5-11> "lmroman10-italic:+tlig;+tsub;+liga"
- <11-> "lmroman12-italic:+tlig;+tsub;+liga"
+ {<-7.5> "lmroman7-italic:+tlig;+tsub;+liga;+rlig;"
+ <7.5-8.5> "lmroman8-italic:+tlig;+tsub;+liga;+rlig;"
+ <8.5-9.5> "lmroman9-italic:+tlig;+tsub;+liga;+rlig;"
+ <9.5-11> "lmroman10-italic:+tlig;+tsub;+liga;+rlig;"
+ <11-> "lmroman12-italic:+tlig;+tsub;+liga;+rlig;"
}{}
\DeclareFontShape{EU2}{lmr}{m}{sc}%
- {<-> "lmroman10-capsregular:+tlig;+tsub;+liga"}{}
+ {<-> "lmroman10-capsregular:+tlig;+tsub;+liga;+rlig;"}{}
%
% Is this the right 'shape'?:
\DeclareFontShape{EU2}{lmr}{m}{scsl}%
- {<-> "lmroman10-capsoblique:+tlig;+tsub;+liga"}{}
+ {<-> "lmroman10-capsoblique:+tlig;+tsub;+liga;+rlig;"}{}
%%%%%%% bold series
\DeclareFontShape{EU2}{lmr}{b}{n}
- {<-> "lmroman10-demi:+tlig;+tsub;+liga"}{}
+ {<-> "lmroman10-demi:+tlig;+tsub;+liga;+rlig;"}{}
\DeclareFontShape{EU2}{lmr}{b}{sl}
- {<-> "lmroman10-demioblique:+tlig;+tsub;+liga"}{}
+ {<-> "lmroman10-demioblique:+tlig;+tsub;+liga;+rlig;"}{}
%%%%%%%% bold extended series
\DeclareFontShape{EU2}{lmr}{bx}{n}
- {<-5.5> "lmroman5-bold:+tlig;+tsub;+liga"
- <5.5-6.5> "lmroman6-bold:+tlig;+tsub;+liga"
- <6.5-7.5> "lmroman7-bold:+tlig;+tsub;+liga"
- <7.5-8.5> "lmroman8-bold:+tlig;+tsub;+liga"
- <8.5-9.5> "lmroman9-bold:+tlig;+tsub;+liga"
- <9.5-11> "lmroman10-bold:+tlig;+tsub;+liga"
- <11-> "lmroman12-bold:+tlig;+tsub;+liga"
+ {<-5.5> "lmroman5-bold:+tlig;+tsub;+liga;+rlig;"
+ <5.5-6.5> "lmroman6-bold:+tlig;+tsub;+liga;+rlig;"
+ <6.5-7.5> "lmroman7-bold:+tlig;+tsub;+liga;+rlig;"
+ <7.5-8.5> "lmroman8-bold:+tlig;+tsub;+liga;+rlig;"
+ <8.5-9.5> "lmroman9-bold:+tlig;+tsub;+liga;+rlig;"
+ <9.5-11> "lmroman10-bold:+tlig;+tsub;+liga;+rlig;"
+ <11-> "lmroman12-bold:+tlig;+tsub;+liga;+rlig;"
}{}
\DeclareFontShape{EU2}{lmr}{bx}{it}
- {<-> "lmroman10-bolditalic:+tlig;+tsub;+liga"}{}
+ {<-> "lmroman10-bolditalic:+tlig;+tsub;+liga;+rlig;"}{}
\DeclareFontShape{EU2}{lmr}{bx}{sl}
- {<-> "lmroman10-boldoblique:+tlig;+tsub;+liga"}{}
+ {<-> "lmroman10-boldoblique:+tlig;+tsub;+liga;+rlig;"}{}
% \end{macrocode}
%
@@ -958,7 +1108,8 @@ and the derived files
%
% \subsection{\texttt{luainputenc.lua}}
%
-% First the \texttt{inputenc} module is registered as a Lua\TeX\ module, with some informations.
+% First the \texttt{inputenc} module is registered as a Lua\TeX\ module,
+% with some informations.
%
% \iffalse
%<*lua>
@@ -970,8 +1121,8 @@ luainputenc = { }
luainputenc.module = {
name = "luainputenc",
- version = 0.93,
- date = "2009/04/15",
+ version = 0.94,
+ date = "2009/09/23",
description = "Lua simple inputenc package.",
author = "Elie Roux",
copyright = "Elie Roux",
@@ -986,221 +1137,276 @@ luainputenc.log = luainputenc.log or function(...)
luatextra.module_log('luainputenc', format(...))
end
-local char, utfchar, byte, format, gsub =
-string.char, unicode.utf8.char, string.byte, string.format, string.gsub
+local char, utfchar, byte, format, gsub, utfbyte, utfgsub =
+string.char, unicode.utf8.char, string.byte, string.format, string.gsub, unicode.utf8.byte, unicode.utf8.gsub
-local started, stopped = 1, 0
-
-luainputenc.state = stopped
+% \end{macrocode}
+%
+% The function to transform a 8-bit character in the corresponding fake
+% UTF-8 character.
+%
+% \begin{macrocode}
-function luainputenc.setstate(state)
- if state == luainputenc.state then
- return
- elseif state == started then
- luainputenc.start()
- else
- luainputenc.stop()
- end
+function luainputenc.byte_to_utf(ch)
+ return utfchar(byte(ch))
end
-function luainputenc.setstarted()
- luainputenc.setstate(started)
-end
+% \end{macrocode}
+%
+% The function that will be registered in the
+% \texttt{process\_input\_buffer} callback when needed.
+%
+% \begin{macrocode}
-function luainputenc.setstopped()
- luainputenc.setstate(stopped)
+function luainputenc.fake_utf_read(buf)
+ return gsub(buf,"(.)", luainputenc.byte_to_utf)
end
% \end{macrocode}
%
-% The function to transform a 8-bit character in the corresponding fake UTF-8 character.
+% The function to transform a fake utf8 character in the corresponding
+% 8-bit character.
%
% \begin{macrocode}
-function luainputenc.byte_to_utf(c)
- return utfchar(byte(c))
+function luainputenc.utf_to_byte(ch)
+ return char(utfbyte(ch))
end
% \end{macrocode}
%
-% The function that will be registered in the \texttt{process\_input\_buffer} callback when needed.
+% The function that will be registered in the
+% \texttt{process\_output\_buffer} callback if it exists.
%
% \begin{macrocode}
-function luainputenc.fake_utf(buf)
- return gsub(buf,"(.)", luainputenc.byte_to_utf)
+function luainputenc.fake_utf_write(buf)
+ return utfgsub(buf,"(.)", luainputenc.utf_to_byte)
end
% \end{macrocode}
%
-% \texttt{start()} and \texttt{stop()} are the functions that register or unregister the function in the callback. When the function is registered, Lua\TeX\ reads the input in fake UTF-8.
+% Here we register the two callbacks, and the behaviour is the same as in pdfTeX.
+% The next part of the file is only the machinery for LuaTeX versions without
+% the callback |process_output_buffer|, so it will be deprecated after
+% TeXLive 2009, you are not advised to use it.
%
% \begin{macrocode}
-function luainputenc.start()
- callback.add('process_input_buffer', luainputenc.fake_utf,
- 'luainputenc.fake_utf')
- luainputenc.state = started
- if luainputenc.callback_registered == 0 then
- luainputenc.register_callback()
+if tex.luatexversion > 42 then
+
+ function luainputenc.register_callbacks()
+ callback.add('process_output_buffer', luainputenc.fake_utf_write, 'luainputenc.fake_utf_write')
+ callback.add('process_input_buffer', luainputenc.fake_utf_read, 'luainputenc.fake_utf_read')
end
-end
+
+else
+
+% \end{macrocode}
+%
+% \texttt{start()} and \texttt{stop()} are the functions that register or
+% unregister the function in the callback. When the function is registered,
+% Lua\TeX\ reads the input in fake UTF-8.
+%
+% \begin{macrocode}
+
+ local started, stopped = 1, 0
-function luainputenc.stop()
- callback.remove('process_input_buffer', 'luainputenc.fake_utf')
luainputenc.state = stopped
- return
-end
+
+ function luainputenc.setstate(state)
+ if state == luainputenc.state then
+ return
+ elseif state == started then
+ luainputenc.start()
+ else
+ luainputenc.stop()
+ end
+ end
+
+ function luainputenc.setstarted()
+ luainputenc.setstate(started)
+ end
+
+ function luainputenc.setstopped()
+ luainputenc.setstate(stopped)
+ end
+
+ function luainputenc.start()
+ callback.add('process_input_buffer', luainputenc.fake_utf_read,
+ 'luainputenc.fake_utf_read')
+ luainputenc.state = started
+ if luainputenc.callback_registered == 0 then
+ luainputenc.register_callback()
+ end
+ end
+
+ function luainputenc.stop()
+ callback.remove('process_input_buffer', 'luainputenc.fake_utf_read')
+ luainputenc.state = stopped
+ return
+ end
% \end{macrocode}
%
-% Here is a list of all file extentions for which we consider that the files have been written by Lua\TeX , and thus must be read in fake UTF-8. I may have forgotten things in the list. If you find a new extention, please report the maintainer.
+% Here is a list of all file extentions for which we consider that the
+% files have been written by Lua\TeX , and thus must be read in fake UTF-8.
+% I may have forgotten things in the list. If you find a new extention,
+% please report the maintainer.
%
% \begin{macrocode}
-luainputenc.unicode_extentions = {
- ['.aux'] = 1, -- basic files
- ['.toc'] = 1,
- ['.gls'] = 1,
- ['.ind'] = 1,
- ['.idx'] = 1,
- ['.vrb'] = 1, -- beamer and powerdot
- ['.nav'] = 1, -- other beamer extentions
- ['.sol'] = 1,
- ['.qsl'] = 1,
- ['.snm'] = 1,
- ['.pgn'] = 1, -- pagereference
- ['.cpg'] = 1, -- AlProTeX
- ['.pst'] = 1, -- pst-tree
- ['.tmp'] = 1, -- sauerj/collect
- ['.sym'] = 1, -- listofsymbols
- ['.sub'] = 1, -- listofsymbols
- ['.lof'] = 1, -- preprint
- ['.lot'] = 1, -- preprint
- ['mtc1'] = 1, -- minitoc
- ['.ovr'] = 1, -- thumbss
- ['.fff'] = 1, -- endplate
- ['.sbb'] = 1, -- splitbib
- ['.bbl'] = 1, -- latex
- ['.ain'] = 1, -- authorindex
- ['.abb'] = 1, -- juraabbrev
- ['.ent'] = 1, -- endnotes
- ['.end'] = 1, -- fn2end
- ['.thm'] = 1, -- ntheorem
- ['.xtr'] = 1, -- extract
- ['.han'] = 1, -- linguho
- ['.bnd'] = 1, -- bibref
- ['.bbl'] = 1, -- bibref
- ['.col'] = 1, -- mwrite
- ['.ttt'] = 1, -- endfloat
- ['.fax'] = 1, -- lettre
- ['.tns'] = 1, -- lettre
- ['.odt'] = 1, -- lettre
- ['.etq'] = 1, -- lettre
- ['.emd'] = 1, -- poemscol
- ['.emx'] = 1, -- poemscol
- ['.ctn'] = 1, -- poemscol
- ['.hst'] = 1, -- vhistory
- ['.acr'] = 1, -- crosswrd
- ['.dwn'] = 1, -- crosswrd
- ['.ttc'] = 1, -- talk
- -- ['.txt'] = 1, -- coverpage, but not sure it's safe to include it...
- ['.eve'] = 1, -- calend0
- ['.scn'] = 1, -- cwebmac
- }
+ luainputenc.unicode_extentions = {
+ ['.aux'] = 1, -- basic files
+ ['.toc'] = 1,
+ ['.gls'] = 1,
+ ['.ind'] = 1,
+ ['.idx'] = 1,
+ ['.vrb'] = 1, -- beamer and powerdot
+ ['.nav'] = 1, -- other beamer extentions
+ ['.sol'] = 1,
+ ['.qsl'] = 1,
+ ['.snm'] = 1,
+ ['.pgn'] = 1, -- pagereference
+ ['.cpg'] = 1, -- AlProTeX
+ ['.pst'] = 1, -- pst-tree
+ ['.tmp'] = 1, -- sauerj/collect
+ ['.sym'] = 1, -- listofsymbols
+ ['.sub'] = 1, -- listofsymbols
+ ['.lof'] = 1, -- preprint
+ ['.lot'] = 1, -- preprint
+ ['mtc1'] = 1, -- minitoc
+ ['.ovr'] = 1, -- thumbss
+ ['.fff'] = 1, -- endplate
+ ['.sbb'] = 1, -- splitbib
+ ['.bbl'] = 1, -- latex
+ ['.ain'] = 1, -- authorindex
+ ['.abb'] = 1, -- juraabbrev
+ ['.ent'] = 1, -- endnotes
+ ['.end'] = 1, -- fn2end
+ ['.thm'] = 1, -- ntheorem
+ ['.xtr'] = 1, -- extract
+ ['.han'] = 1, -- linguho
+ ['.bnd'] = 1, -- bibref
+ ['.bbl'] = 1, -- bibref
+ ['.col'] = 1, -- mwrite
+ ['.ttt'] = 1, -- endfloat
+ ['.fax'] = 1, -- lettre
+ ['.tns'] = 1, -- lettre
+ ['.odt'] = 1, -- lettre
+ ['.etq'] = 1, -- lettre
+ ['.emd'] = 1, -- poemscol
+ ['.emx'] = 1, -- poemscol
+ ['.ctn'] = 1, -- poemscol
+ ['.hst'] = 1, -- vhistory
+ ['.acr'] = 1, -- crosswrd
+ ['.dwn'] = 1, -- crosswrd
+ ['.ttc'] = 1, -- talk
+ -- ['.txt'] = 1, -- coverpage, but not sure it's safe to include it...
+ ['.eve'] = 1, -- calend0
+ ['.scn'] = 1, -- cwebmac
+ }
% \end{macrocode}
%
-% The code to define a specific behaviour for certain files.
+% The code to define a specific behaviour for certain files.
%
% \begin{macrocode}
-luainputenc.unicode_files = {}
+ luainputenc.unicode_files = {}
-luainputenc.non_unicode_files = {}
+ luainputenc.non_unicode_files = {}
-function luainputenc.set_unicode_file(filename)
- if luainputenc.non_unicode_files[filename] == 1 then
- luainputenc.non_unicode_files[filename] = nil
+ function luainputenc.set_unicode_file(filename)
+ if luainputenc.non_unicode_files[filename] == 1 then
+ luainputenc.non_unicode_files[filename] = nil
+ end
+ luainputenc.unicode_files[filename] = 1
end
- luainputenc.unicode_files[filename] = 1
-end
-function luainputenc.set_non_unicode_file(filename)
- if luainputenc.unicode_files[filename] == 1 then
- luainputenc.unicode_files[filename] = nil
+ function luainputenc.set_non_unicode_file(filename)
+ if luainputenc.unicode_files[filename] == 1 then
+ luainputenc.unicode_files[filename] = nil
+ end
+ luainputenc.non_unicode_files[filename] = 1
end
- luainputenc.non_unicode_files[filename] = 1
-end
-function luainputenc.set_unicode_extention(ext)
- luainputenc.unicode_extention[ext] = 1
-end
+ function luainputenc.set_unicode_extention(ext)
+ luainputenc.unicode_extention[ext] = 1
+ end
-function luainputenc.set_non_unicode_extention(ext)
- if luainputenc.unicode_extentions[ext] == 1 then
- luainputenc.unicode_extentions[ext] = nil
+ function luainputenc.set_non_unicode_extention(ext)
+ if luainputenc.unicode_extentions[ext] == 1 then
+ luainputenc.unicode_extentions[ext] = nil
+ end
end
-end
-function luainputenc.unset_file(filename)
- if luainputenc.unicode_files[filename] == 1 then
- luainputenc.unicode_files[filename] = nil
- elseif luainputenc.non_unicode_files[filename] == 1 then
- luainputenc.non_unicode_files[filename] = nil
+ function luainputenc.unset_file(filename)
+ if luainputenc.unicode_files[filename] == 1 then
+ luainputenc.unicode_files[filename] = nil
+ elseif luainputenc.non_unicode_files[filename] == 1 then
+ luainputenc.non_unicode_files[filename] = nil
+ end
end
-end
-local unicode, non_unicode = stopped, started
-
-function luainputenc.find_state(filename)
- if luainputenc.unicode_files[filename] == 1 then
- return unicode
- elseif luainputenc.non_unicode_files[filename] == 1 then
- return non_unicode
- else
- local ext = filename:sub(-4)
- if luainputenc.unicode_extentions[ext] == 1 then
- return unicode
- else
+ local unicode, non_unicode = stopped, started
+
+ function luainputenc.find_state(filename)
+ if luainputenc.unicode_files[filename] == 1 then
+ return unicode
+ elseif luainputenc.non_unicode_files[filename] == 1 then
return non_unicode
- end
+ else
+ local ext = filename:sub(-4)
+ if luainputenc.unicode_extentions[ext] == 1 then
+ return unicode
+ else
+ return non_unicode
+ end
+ end
end
-end
% \end{macrocode}
%
-% We register the functions to stop or start the fake UTF-8 translation in the appropriate callbacks if necessary.
+% We register the functions to stop or start the fake UTF-8 translation in
+% the appropriate callbacks if necessary.
%
% \begin{macrocode}
-function luainputenc.pre_read_file(env)
- local currentstate = luainputenc.state
- luainputenc.setstate(luainputenc.find_state(env.filename))
- env.previousstate = currentstate
-end
+ function luainputenc.pre_read_file(env)
+ if not env.path then
+ return
+ end
+ local currentstate = luainputenc.state
+ luainputenc.setstate(luainputenc.find_state(env.filename))
+ env.previousstate = currentstate
+ end
-function luainputenc.close(env)
- luainputenc.setstate(env.previousstate)
-end
+ function luainputenc.close(env)
+ luainputenc.setstate(env.previousstate)
+ end
-luainputenc.callback_registered = 0
+ luainputenc.callback_registered = 0
-function luainputenc.register_callback()
- if luainputenc.callback_registered == 0 then
- callback.add('pre_read_file', luainputenc.pre_read_file,
- 'luainputenc.pre_read_file')
- callback.add('file_close', luainputenc.close, 'luainputenc.close')
- luainputenc.callback_registered = 1
+ function luainputenc.register_callback()
+ if luainputenc.callback_registered == 0 then
+ callback.add('pre_read_file', luainputenc.pre_read_file,
+ 'luainputenc.pre_read_file')
+ callback.add('file_close', luainputenc.close, 'luainputenc.close')
+ luainputenc.callback_registered = 1
+ end
end
+
end
% \end{macrocode}
%
-% Finally we provide some functions to activate or disactivate the catcodes of the non-ASCII characters.
+% Finally we provide some functions to activate or disactivate the catcodes
+% of the non-ASCII characters.
%
% \begin{macrocode}
+
luainputenc.activated_characters = {}
luainputenc.characters_are_activated = false