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

View File

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

View File

@ -171,4 +171,4 @@ lyx2lyx/export/latex/.*
export/export/latex/.*(lyx..|xhtml)
# 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/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
# * fails also due to #11522, see "lyxbugs" below.
export/export/latex/supported-languages_.*_systemF
@ -332,14 +332,6 @@ export/.*/he/.*_texF
# See comment in unreliableTests
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

View File

@ -143,12 +143,6 @@ export/templates/Articles/American_Astronomical_Society_.*
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
######################
# 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/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
# **********

View File

@ -1366,25 +1366,25 @@ Language thai
FontEncoding LTH
DateFormats "dd MMMM yyyy|d MMM yyyy|dd/MM/yyyy"
LangCode th_TH
# The first workaround requires loading inputenc after babel
# (cf. BufferParams.cpp):
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)
\@tempcnta=161%
\@whilenum\@tempcnta<252\do{%
\catcode\@tempcnta=13
\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
# 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
# not supported by babel

View File

@ -1801,10 +1801,11 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
if (features.mustProvide("pmboxdraw"))
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.
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
if (!features.runparams().includeall && !included_children_.empty()) {
@ -2288,6 +2289,11 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
!lyxrc.language_global_options)) + '\n';
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"))
os << "\\usepackage{bicaption}\n";
if (!listings_params.empty()