Load inputenc after babel with Thai.

"thai.ldf" breaks "inputenc" by changing catcodes.
Loading "inputenc" after "babel" allows a workaround.
This commit is contained in:
Günter Milde 2019-04-27 16:00:29 +02:00
parent c349472d35
commit 7a87599a3e
7 changed files with 39 additions and 51 deletions

View File

@ -6,7 +6,7 @@
\origin unavailable \origin unavailable
\textclass article \textclass article
\begin_preamble \begin_preamble
\AtBeginDocument{\usepackage{fonts-tlwg}}
\end_preamble \end_preamble
\use_default_options true \use_default_options true
\maintain_unincluded_children false \maintain_unincluded_children false
@ -27,7 +27,7 @@
\use_microtype false \use_microtype false
\use_dash_ligatures true \use_dash_ligatures true
\graphics default \graphics default
\default_output_format default \default_output_format pdf2
\output_sync 0 \output_sync 0
\bibtex_command default \bibtex_command default
\index_command default \index_command default
@ -84,7 +84,7 @@
\begin_body \begin_body
\begin_layout Subsection* \begin_layout Subsection*
Thai Test workaround for Thai language
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard

View File

@ -5,18 +5,15 @@
\save_transient_properties true \save_transient_properties true
\origin unavailable \origin unavailable
\textclass article \textclass article
\begin_preamble
\AtBeginDocument{\usepackage{fonts-tlwg}}
\end_preamble
\use_default_options true \use_default_options true
\maintain_unincluded_children false \maintain_unincluded_children false
\language english \language english
\language_package default \language_package default
\inputencoding utf8 \inputencoding utf8
\fontencoding auto \fontencoding auto
\font_roman "lmodern" "FreeSerif" \font_roman "lmodern" "Norasi"
\font_sans "default" "FreeSans" \font_sans "default" "Garuda"
\font_typewriter "default" "FreeMono" \font_typewriter "default" "Tlwg Mono"
\font_math "auto" "auto" \font_math "auto" "auto"
\font_default_family default \font_default_family default
\use_non_tex_fonts false \use_non_tex_fonts false
@ -84,7 +81,7 @@
\begin_body \begin_body
\begin_layout Subsection* \begin_layout Subsection*
Thai Test workaround for Thai language
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
@ -203,7 +200,11 @@ uc/lccode changes prevent up/downcasing of high-bit characters
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
(lösen → (lösen
\begin_inset Formula $→$
\end_inset
\begin_inset ERT \begin_inset ERT
status open status open
@ -227,7 +228,11 @@ status open
\end_inset \end_inset
, LÖSEN → , LÖSEN
\begin_inset Formula $→$
\end_inset
\begin_inset ERT \begin_inset ERT
status open status open

View File

@ -171,4 +171,4 @@ lyx2lyx/export/latex/.*
export/export/latex/.*(lyx..|xhtml) export/export/latex/.*(lyx..|xhtml)
# don't test with non-TeX fonts: # don't test with non-TeX fonts:
export/export/latex/en-th_(LTH|language-default).*systemF #export/export/latex/en-th_(LTH|language-default).*systemF

View File

@ -74,7 +74,7 @@ export/templates/Articles/International_Union_of_Crystallography.*_pdf4_systemF
export/templates/Articles/R_Journal_(dvi3|pdf[45])_systemF export/templates/Articles/R_Journal_(dvi3|pdf[45])_systemF
#export/templates/Articles/Kluwer_.*_systemF #export/templates/Articles/Kluwer_.*_systemF
# Babel and fontenc not fails for some supported languages # Babel and fontenc fails for some supported languages
# * check BabelPremble definitions in lib/languages # * check BabelPremble definitions in lib/languages
# * fails also due to #11522, see "lyxbugs" below. # * fails also due to #11522, see "lyxbugs" below.
export/export/latex/supported-languages_.*_systemF export/export/latex/supported-languages_.*_systemF
@ -332,14 +332,6 @@ export/.*/he/.*_texF
# See comment in unreliableTests # See comment in unreliableTests
export/export/latex/uk-babel-date-missing-chars-with-ascii_pdf5_texF export/export/latex/uk-babel-date-missing-chars-with-ascii_pdf5_texF
# Thai
# babel-thai globally changes catcodes for high-bit chars
# which prevents parsing of utf8 with vanilla inputenc (utf8x works)
# see also unreliable.wrong_output and unreliable.varying_versions
export/export/latex/en-th_utf8_(dvi|pdf[23]?|pdf4_texF)
# luainputenc fails with TL19:
export/export/latex/en-th_language-default_(dvi3|pdf5)_texF
# ================================================ # ================================================
Sublabel: externalissues Sublabel: externalissues

View File

@ -143,12 +143,6 @@ export/templates/Articles/American_Astronomical_Society_.*
export/templates/Articles/Association_for_Computing_Machinery_pdf[45]_texF export/templates/Articles/Association_for_Computing_Machinery_pdf[45]_texF
# Thai
# Babel-thai globally changes catcodes for high-bit chars
# which clashes with vanilla inputenc (utf8x and 8-bit input encodings and
# luainputenc work with TL17 but luainputenc fails with TL19):
export/export/latex/en-th_language-default_(dvi3|pdf5)_texF
Sublabel: wrong_output Sublabel: wrong_output
###################### ######################
# Export does not fail but the resulting document has errors. # Export does not fail but the resulting document has errors.
@ -173,15 +167,6 @@ export/export/latex/es_auto-legacy_texF
export/export/latex/uk-babel-date-missing-chars-with-ascii_.*_texF export/export/latex/uk-babel-date-missing-chars-with-ascii_.*_texF
export/doc/uk/Intro_.*_texF export/doc/uk/Intro_.*_texF
# Thai
# Babel-thai globally changes catcodes for high-bit chars
# which prevents parsing of utf8 with vanilla inputenc (utf8x works).
# see also invertedTests
export/export/latex/en-th_language-default_(dvi|pdf).?
export/export/latex/en-th_utf8_(dvi|pdf).*
#
# only ASCII characters in DVI (LuaTeX) with non-TeX fonts:
export/export/latex/en-th_utf8_dvi3_systemF
# LyX issues # LyX issues
# ********** # **********

View File

@ -1366,25 +1366,25 @@ Language thai
FontEncoding LTH FontEncoding LTH
DateFormats "dd MMMM yyyy|d MMM yyyy|dd/MM/yyyy" DateFormats "dd MMMM yyyy|d MMM yyyy|dd/MM/yyyy"
LangCode th_TH LangCode th_TH
# The first workaround requires loading inputenc after babel
# (cf. BufferParams.cpp):
PostBabelPreamble PostBabelPreamble
% Restore \coyright definition corrupted by lthenc.def
\DeclareRobustCommand{\copyright}{%
\ifmmode{\nfss@text{\textcopyright}}\else\textcopyright\fi}
\DeclareTextSymbol{\textcopyright}{LTH}{8}
% Restore catcodes changed by thai.ldf (active characters required for inputenc) % Restore catcodes changed by thai.ldf (active characters required for inputenc)
\@tempcnta=161% \@tempcnta=161%
\@whilenum\@tempcnta<252\do{% \@whilenum\@tempcnta<252\do{%
\catcode\@tempcnta=13 \catcode\@tempcnta=13
\advance\@tempcnta\@ne \advance\@tempcnta\@ne
}% }%
% Restore \coyright definition corrupted by lthenc.def
\DeclareRobustCommand{\copyright}{%
\ifmmode{\nfss@text{\textcopyright}}\else\textcopyright\fi}
\DeclareTextSymbol{\textcopyright}{LTH}{8}
% set up Thai fonts as substitue for the default families
\usepackage{substitutefont}
\substitutefont{LTH}{\rmdefault}{norasi}
\substitutefont{LTH}{\sfdefault}{garuda}
\substitutefont{LTH}{\ttdefault}{ttypist}
EndPostBabelPreamble EndPostBabelPreamble
# Fixme: load font package?
# +1 support for font attributes in thai emphasizing etc.
# -1 forces ComputerModern as "non-thai" font
# TODO: set norasi as surrogate font for LTH (substitutefont.sty)
# PostBabelPreamble
# \usepackage{fonts-tlwg}
# EndPostBabelPreamble
End End
# not supported by babel # not supported by babel

View File

@ -1801,10 +1801,11 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
if (features.mustProvide("pmboxdraw")) if (features.mustProvide("pmboxdraw"))
os << "\\usepackage{pmboxdraw}\n"; os << "\\usepackage{pmboxdraw}\n";
// FIXME: In any document containing text in Thai language,
// we must load babel before inputenc (see lib/languages).
// handle inputenc etc. // handle inputenc etc.
writeEncodingPreamble(os, features); // (In documents containing text in Thai language,
// we must load inputenc after babel, see lib/languages).
if (!contains(features.getBabelPostsettings(), from_ascii("thai.ldf")))
writeEncodingPreamble(os, features);
// includeonly // includeonly
if (!features.runparams().includeall && !included_children_.empty()) { if (!features.runparams().includeall && !included_children_.empty()) {
@ -2288,6 +2289,11 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
!lyxrc.language_global_options)) + '\n'; !lyxrc.language_global_options)) + '\n';
os << features.getBabelPostsettings(); os << features.getBabelPostsettings();
} }
// In documents containing text in Thai language,
// we must load inputenc after babel (see lib/languages).
if (contains(features.getBabelPostsettings(), from_ascii("thai.ldf")))
writeEncodingPreamble(os, features);
if (features.isRequired("bicaption")) if (features.isRequired("bicaption"))
os << "\\usepackage{bicaption}\n"; os << "\\usepackage{bicaption}\n";
if (!listings_params.empty() if (!listings_params.empty()