[latex3-commits] [git/LaTeX3-latex3-latex2e] master: Southeast Asian scripts - first steps (4d28e4a)
Javier
javier at dante.de
Thu Sep 6 20:56:21 CEST 2018
Repository : https://github.com/latex3/latex2e
On branch : master
Link : https://github.com/latex3/latex2e/commit/4d28e4a920d8423506e96ae6e70bf84e2dec1a66
>---------------------------------------------------------------
commit 4d28e4a920d8423506e96ae6e70bf84e2dec1a66
Author: Javier <javier at localhost>
Date: Thu Sep 6 20:56:05 2018 +0200
Southeast Asian scripts - first steps
>---------------------------------------------------------------
4d28e4a920d8423506e96ae6e70bf84e2dec1a66
required/babel/README.md | 4 +-
required/babel/babel.dtx | 132 +++++++++++++++++++++--------------
required/babel/babel.ins | 2 +-
required/babel/babel.pdf | Bin 652139 -> 653584 bytes
required/babel/bbcompat.dtx | 2 +-
required/babel/samples/lua-thai.pdf | Bin 0 -> 36019 bytes
required/babel/samples/lua-thai.tex | 45 ++++++++++++
7 files changed, 127 insertions(+), 58 deletions(-)
diff --git a/required/babel/README.md b/required/babel/README.md
index b049831..b55f401 100644
--- a/required/babel/README.md
+++ b/required/babel/README.md
@@ -1,4 +1,4 @@
-## Babel 3.23
+## Babel 3.23.1391
This package manages culturally-determined typographical (and other)
rules, and hyphenation patterns for a wide range of languages. Many
@@ -122,5 +122,5 @@ respective authors.
```
Javier Bezos
-2018/09/02
+2018/09/06
diff --git a/required/babel/babel.dtx b/required/babel/babel.dtx
index 24cfe57..d3a374f 100644
--- a/required/babel/babel.dtx
+++ b/required/babel/babel.dtx
@@ -31,7 +31,7 @@
%
% \iffalse
%<*filedriver>
-\ProvidesFile{babel.dtx}[2018/09/02 v3.23 The Babel package]
+\ProvidesFile{babel.dtx}[2018/09/06 v3.23.1391 The Babel package]
\documentclass{ltxdoc}
\GetFileInfo{babel.dtx}
\usepackage{fontspec}
@@ -2859,55 +2859,6 @@ as well as “non-European” digits. Also on the roadmap are R layouts
(lists, footnotes, tables, column order), page and section numbering,
and maybe kashida justification.
-As to Thai line breaking, here is the basic idea of what \luatex{} can
-do for us, with the Thai patterns and a little script (the final
-version will not be so little, of course). It replaces each
-discretionary by the equivalent to ZWJ.
-
-\begingroup
-\catcode`\_=13 \def_{\string_}
-\begin{verbatim}
-\documentclass{article}
-
-\usepackage{babel}
-
-\babelprovide[import, main]{thai}
-
-\babelfont{rm}{FreeSerif}
-
-\directlua{
-local GLYF = node.id'glyph'
-function insertsp (head)
- local size = 0
- for item in node.traverse(head) do
- local i = item.id
- if i == GLYF then
- f = font.getfont(item.font)
- size = f.size
- elseif i == 7 then
- local n = node.new(12, 0)
- node.setglue(n, 0, size * 1) % 1 is a factor
- node.insert_before(head, item, n)
- node.remove(head, item)
- end
- end
-end
-
-luatexbase.add_to_callback('hyphenate',
- function (head, tail)
- lang.hyphenate(head)
- insertsp(head)
- end, 'insertsp')
-}
-
-\begin{document}
-
-(Thai text.)
-
-\end{document}
-\end{verbatim}
-\endgroup
-
Useful additions would be, for example, time, currency, addresses and
personal names.\footnote{See for example POSIX, ISO 14652 and the
Unicode Common Locale Data Repository (CLDR). Those system, however,
@@ -2925,6 +2876,18 @@ chapters), in Hungarian ``from (1)'' is ``(1)-b\H{o}l'', but ``from
\subsection{Tentative and experimental code}
+\textbf{Southeast Asian interword spacing}
+
+There is some rudimentary interword spacing for Thai, Lao and Khemer
+in \luatex{} (provided there are hyphenation patters). It is activated
+automatically if a language with of one of these scripts are loaded
+with |\babelprovide|. They are just the first steps. See the sample on
+the \babel{} repository.
+
+Note you can easily add, modify and remove patterns with
+|\babelpatterns|. Even if there are no pattern for the language, you
+can add at least some typical cases.
+
\medskip
\textbf{Old stuff}
@@ -3865,8 +3828,8 @@ help from Bernd Raichle, for which I am grateful.
% \section{Tools}
%
% \begin{macrocode}
-%<<version=3.23>>
-%<<date=2018/09/02>>
+%<<version=3.23.1391>>
+%<<date=2018/09/06>>
% \end{macrocode}
%
% \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -6744,6 +6707,19 @@ help from Bernd Raichle, for which I am grateful.
% \end{macrocode}
%
% \end{macro}
+%
+% \subsection{Interword spacing in Southeast Asian scripts}
+%
+% \textit{At work}.
+%
+% \begin{macrocode}
+\def\bbl at seascripts{,Thai,Lao,Khmer,} % Malayalam?
+\newcommand\babelinterword[3]{%
+ \def\BabelInterword{#1}%
+ \def\BabelInterwordStretch{#2}%
+ \def\BabelInterwordShrink{#3}}
+\babelinterword{0}{.1}{0}
+% \end{macrocode}
% \subsection{Multiencoding strings}
%
% \changes{babel~3.9a}{2012/09/05}{Added tentative code for string
@@ -8169,7 +8145,9 @@ help from Bernd Raichle, for which I am grateful.
% \end{macrocode}
%
% Language and Script values to be used when defining a font or
-% setting the direction are set with the following macros.
+% setting the direction are set with the following macros. It also
+% activates interword spacing in Southeast Asian scripts if not done
+% before.
%
% \begin{macrocode}
\def\bbl at provide@lsys#1{%
@@ -8182,7 +8160,11 @@ help from Bernd Raichle, for which I am grateful.
\bbl at csarg\bbl at add@list{lsys@#1}{Script=\bbl at cs{sname@#1}}%
\bbl at ifunset{bbl at lname@#1}{}%
{\bbl at csarg\bbl at add@list{lsys@#1}{Language=\bbl at cs{lname@#1}}}%
- \bbl at csarg\bbl at toglobal{lsys@#1}%}%
+ \bbl at csarg\bbl at toglobal{lsys@#1}%
+ \bbl at xin@{\csname bbl at sname@#1\endcsname}{\bbl at seascripts}%
+ \ifin@
+ \@nameuse{bbl at seainterword}%
+ \fi
\bbl at exp{% TODO - should be global, but even local does its job
% I'm still not sure -- must investigate
\<keys_if_exist:nnF>{fontspec-opentype}{Script/\bbl at cs{sname@#1}}%
@@ -11498,6 +11480,48 @@ help from Bernd Raichle, for which I am grateful.
% \end{macrocode}
% \end{macro}
%
+% \section{Southeast Asian scripts}
+%
+% \begin{macrocode}
+\def\bbl at seainterword{
+ \let\bbl at seainterword\relax
+ \directlua{
+ Babel = Babel or {}
+ function Babel.sea_disc_to_space (head)
+ local useinterword = false
+ local size = 10
+ for item in node.traverse(head) do
+ local i = item.id
+ if i == node.id'glyph' then
+ f = font.getfont(item.font)
+ size = f.size %% 10 pt = 655360 = 10 * 65536
+ if (item.char > 0x0E00 and item.char < 0x0E7F) or % Thai
+ (item.char > 0x0E80 and item.char < 0x0EFF) or % Lao
+ (item.char > 0x1780 and item.char < 0x17FF) then % Khemer
+ useinterword = true
+ else
+ useinterword = false
+ end
+ end
+ if i == 7 and item.subtype == 3 and useinterword then
+ local n = node.new(12, 13)
+ node.setglue(n, \BabelInterword * size,
+ \BabelInterwordStretch * size,
+ \BabelInterwordShrink * size)
+ node.insert_before(head, item, n)
+ node.remove(head, item)
+ end
+ end
+ end
+ luatexbase.add_to_callback('hyphenate',
+ function (head, tail)
+ lang.hyphenate(head)
+ Babel.sea_disc_to_space(head)
+ end,
+ 'Babel.sea_disc_to_space')
+}}
+% \end{macrocode}
+%
% Common stuff.
%
% \begin{macrocode}
diff --git a/required/babel/babel.ins b/required/babel/babel.ins
index 3601783..bd1f7ae 100644
--- a/required/babel/babel.ins
+++ b/required/babel/babel.ins
@@ -26,7 +26,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%
-\def\filedate{2018/09/02}
+\def\filedate{2018/09/06}
\def\batchfile{babel.ins}
\input docstrip.tex
diff --git a/required/babel/babel.pdf b/required/babel/babel.pdf
index d473e91..63e9937 100644
Binary files a/required/babel/babel.pdf and b/required/babel/babel.pdf differ
diff --git a/required/babel/bbcompat.dtx b/required/babel/bbcompat.dtx
index ca8cc6c..f62dcba 100644
--- a/required/babel/bbcompat.dtx
+++ b/required/babel/bbcompat.dtx
@@ -30,7 +30,7 @@
%
% \iffalse
%<*dtx>
-\ProvidesFile{bbcompat.dtx}[2018/09/02 v3.23]
+\ProvidesFile{bbcompat.dtx}[2018/09/06 v3.23.1391]
%</dtx>
%
%% File 'bbcompat.dtx'
diff --git a/required/babel/samples/lua-thai.pdf b/required/babel/samples/lua-thai.pdf
new file mode 100644
index 0000000..d9bffc4
Binary files /dev/null and b/required/babel/samples/lua-thai.pdf differ
diff --git a/required/babel/samples/lua-thai.tex b/required/babel/samples/lua-thai.tex
new file mode 100644
index 0000000..58d5115
--- /dev/null
+++ b/required/babel/samples/lua-thai.tex
@@ -0,0 +1,45 @@
+\documentclass[twocolumn]{article}
+
+\usepackage{babel}
+
+\babelprovide[main,import,maparabic]{thai}
+
+\babelfont{rm}{FreeSerif}
+
+\usepackage{microtype}
+\babelinterword{0}{.1}{0}
+
+\begin{document}
+
+\title{กรุงเทพมหานคร}
+\author{From Wikipedia}
+
+\maketitle
+
+\textbf{กรุงเทพมหานคร} เป็นเมืองหลวงและนครที่มีประชากรมากที่สุดของประเทศไทย เป็นศูนย์กลางการปกครอง การศึกษา การคมนาคมขนส่ง การเงินการธนาคาร การพาณิชย์ การสื่อสาร และความเจริญของประเทศ เป็นเมืองที่มีชื่อยาวที่สุดในโลก ตั้งอยู่บนสามเหลี่ยมปากแม่น้ำเจ้าพระยา มีแม่น้ำเจ้าพระยาไหลผ่านและแบ่งเมืองออกเป็น 2 ฝั่ง คือ ฝั่งพระนครและฝั่งธนบุรี กรุงเทพมหานครมีพื้นที่ทั้งหมด 1,568.737 ตร.กม. มีประชากรตามทะเบียนราษฎรกว่า 5 ล้านคน ทำให้กรุงเทพมหานครเป็นเอกนคร (Primate City) จัด มีผู้กล่าวว่า กรุงเทพมหานครเป็น "เอกนครที่สุดในโลก" เพราะมีประชากรมากกว่านครที่มีประชากรมากเป็นอันดับ 2 ถึง 40 เท่า[3]
+
+มหาวิทยาลัยลัฟเบอระ (Loughborough University) จัดกรุงเทพมหานครว่าเป็นนครโลกระดับแอลฟาลบ[4] กรุงเทพมหานครยังเป็นเมืองที่มีตึกระฟ้ามากที่สุดเป็นอันดับที่ 7 ของโลก[5] มีสถานที่ท่องเที่ยวหลายแห่ง เช่น พระบรมมหาราชวัง พระที่นั่งวิมานเมฆ วัดต่าง ๆ นอกจากนี้ยังมีแหล่งจับจ่ายใช้สอยและค้าขายที่สำคัญซึ่งดึงดูดนักท่องเที่ยวต่างชาติมากมาย โดยในปี พ.ศ. 2555 องค์กรการท่องเที่ยวโลก (UNWTO) ได้จัดอันดับกรุงเทพมหานครเป็นเมืองที่มีคนเดินทางเข้าเป็นอันดับที่ 10 ของโลกและเป็นอันดับที่ 2 ของเอเชีย โดยมีคนเดินทางมากกว่า 26.5 ล้านคน[6] นอกจากนี้จากการจัดอันดับการใช้จ่ายผ่านบัตรเครดิตมาสเตอร์การ์ด ประจำปี พ.ศ. 2557 กรุงเทพมหานครมีการใช้จ่ายผ่านบัตรเครดิตของนักท่องเที่ยวถึง 16.42 ล้านดอลลาร์ เป็นอันดับที่ 2 ของโลก รองจากกรุงลอนดอน สหราชอาณาจักร เท่านั้น[7]
+
+กรุงเทพมหานครเป็นเขตปกครองพิเศษของประเทศไทย มิได้มีสถานะเป็นจังหวัด คำว่า "กรุงเทพมหานคร" นั้นยังใช้เรียกองค์กรปกครองส่วนท้องถิ่นของกรุงเทพมหานครอีกด้วย กรุงเทพมหานครมีการเลือกตั้งผู้บริหารท้องถิ่นโดยตรง แต่ปัจจุบันผู้บริหารกรุงเทพมหานครมาจากการแต่งตั้ง
+
+ในสมัยกรุงศรีอยุธยา กรุงเทพมหานครยังเป็นเพียงสถานีการค้าขนาดเล็กอยู่ที่ปากแม่น้ำเจ้าพระยา ต่อมามีขนาดเพิ่มขึ้นและเป็นที่ตั้งของเมืองหลวง 2 แห่งคือ กรุงธนบุรี ในปี พ.ศ. 2311 และกรุงรัตนโกสินทร์ใน พ.ศ. 2325 กรุงเทพมหานครเป็นหัวใจของการทำให้ประเทศสยามทันสมัยและเป็นเวทีกลางของการต่อสู้ทางการเมืองของประเทศตลอดคริสต์ศตวรรษที่ 20 นครเติบโตอย่างรวดเร็วและปัจจุบันมีผลกระทบสำคัญต่อการเมือง เศรษฐกิจ การศึกษา สื่อและสังคมสมัยใหม่ของไทย ในช่วงที่การลงทุนในเอเชียรุ่งเรือง ทำให้บรรษัทข้ามชาติจำนวนมากเข้ามาตั้งสำนักงานใหญ่ภูมิภาคในกรุงเทพมหานคร ทำให้กรุงเทพมหานครเป็นกำลังหลักทางการเงินและธุรกิจในภูมิภาค นอกจากนี้ยังเป็นศูนย์กลางการขนส่งและสาธารณสุขระหว่างประเทศและกำลังเติบโตเป็นศูนย์กลางศิลปะ แฟชัน และการบันเทิงในภูมิภาค อย่างไรก็ดี การเติบโตอย่างรวดเร็วของกรุงเทพมหานครขาดการวางผังเมือง ทำให้ระบบโครงสร้างพื้นฐานไม่เพียงพอ ถนนที่จำกัดและการใช้รถส่วนบุคคลอย่างกว้างขวางส่งผลให้เกิดปัญหาจราจรแออัดเรื้อรัง
+
+\section{ประวัติ}
+
+พื้นที่บริเวณกรุงเทพมหานครในปัจจุบัน เดิมเป็นที่ตั้งของเมืองธนบุรีศรีมหาสมุทร ชาวต่างชาติเรียกกันว่า "บางกอก" มาตั้งแต่สมัยกรุงศรีอยุธยา[8] มีความสำคัญเนื่องจากเป็นเส้นทางออกสู่ทะเลและติดต่อค้าขายกับอาณาจักรต่าง ๆ เป็นเมืองหน้าด่านขนอน คอยดูแลเก็บภาษีกับเรือสินค้าทุกลำที่ผ่านเข้าออก ส่วนบริเวณปากน้ำตรงอ่าวไทย เรียกกันว่า "นิวอัมสเตอร์ดัม" มีชุมชนใหญ่และโกดังของชาวต่างประเทศไว้สำหรับพักสินค้า ปัจจุบันคือพื้นที่บริเวณอำเภอพระประแดง[8]
+
+ที่มาของคำว่า "บางกอก" นั้น มีข้อสันนิษฐานว่าอาจมาจากการที่แม่น้ำเจ้าพระยาคดเคี้ยวไปมา บางแห่งมีสภาพเป็นเกาะเป็นโคก จึงเรียกกันว่า "บางเกาะ" หรือ "บางโคก" หรือไม่ก็เป็นเพราะบริเวณนี้มีต้นมะกอกอยู่มาก จึงเรียกว่า "บางมะกอก" โดยคำว่า "บางมะกอก" มาจากวัดอรุณ ซึ่งเป็นชื่อเดิมของวัดดังกล่าว และต่อมากร่อนคำลงจึงเหลือแต่คำว่าบางกอก[8][9]
+
+ต่อมาเมื่อถึงคราวเสียกรุงศรีอยุธยาใน พ.ศ. 2310 หลังการกอบกู้อิสรภาพจากพม่า สมเด็จพระเจ้ากรุงธนบุรีทรงสถาปนาเมืองธนบุรีศรีมหาสมุทรให้เป็นราชธานีแห่งใหม่ เมื่อวันที่ 3 ตุลาคม พ.ศ. 2313[8] ครั้นสิ้นรัชกาลสมเด็จพระเจ้ากรุงธนบุรี ในวันที่ 6 เมษายน พ.ศ. 2325 สมเด็จเจ้าพระยามหากษัตริย์ศึกได้ขึ้นเสวยราชสมบัติ ทรงพระนามว่าพระบาทสมเด็จพระพุทธยอดฟ้าจุฬาโลกมหาราช ปฐมกษัตริย์แห่งราชวงศ์จักรี มีพระราชดำริว่า ฟากตะวันออกของกรุงธนบุรีมีชัยภูมิดีกว่าตะวันตก เพราะมีลำน้ำเป็นขอบเขตอยู่กว่าครึ่ง หากข้าศึกยกมาติดถึงชานพระนคร ก็จะต่อสู้ป้องกันได้ง่ายกว่าอยู่ข้างตะวันตก จึงโปรดเกล้าฯ ให้สร้างกรุงรัตนโกสินทร์ขึ้นทางฝั่งตะวันออกของแม่น้ำเจ้าพระยาให้เป็นราชธานีแห่งใหม่ โดยสืบทอดศิลปกรรมและสถาปัตยกรรมจากพระราชวังหลวงของกรุงศรีอยุธยา[8]
+
+พระองค์มีพระบรมราชโองการให้พระยาธรรมาธิกรณ์กับพระยาวิจิตรนาวี เป็นแม่กองคุมช่างและไพร่ไปวัดกะที่ดินเพื่อสร้างพระนครใหม่ในวันที่ 8 เมษายน พ.ศ. 2325 ทรงประกอบพิธียกเสาหลักเมือง เมื่อวันอาทิตย์ เดือน 6 ขึ้น 10 ค่ำ ย่ำรุ่งแล้ว 9 บาท (54 นาที) ปีขาล จ.ศ. 1144 จัตวาศก ตรงกับวันที่ 21 เมษายน พ.ศ. 2325 เวลา 6.54 น.[8] และทรงประกอบพระราชพิธีปราบดาภิเษกในวันที่ 13 มิถุนายน พ.ศ. 2325[10]
+
+ต่อมาในรัชสมัยของพระบาทสมเด็จพระจอมเกล้าเจ้าอยู่หัว ทรงเปลี่ยนชื่อพระนครจาก \textbf{บวรรัตนโกสินทร์} เป็น \textbf{อมรรัตนโกสินทร์} และมีฐานะในการปกครองส่วนท้องถิ่นเป็น \textbf{จังหวัดพระนคร}[11]
+
+ในรัชสมัยของพระบาทสมเด็จพระจอมเกล้าเจ้าอยู่หัว โปรดเกล้าฯ ให้ตัดถนนใหม่ขึ้น ทรงดำริให้ตัดถนนเจริญกรุง เป็นถนนเส้นแรกในกรุงเทพมหานคร ก่อสร้างเมื่อวันที่ 5 กุมภาพันธ์ พ.ศ. 2404[12] และเปลี่ยนรูปแบบผังเมืองกรุงเทพมหานครเฉกเช่นอารยประเทศ เนื่องจากในสมัยนั้นสยามประเทศถูกคุกคามจากมหาอำนาจยุโรป และตรงจุดนี้เป็นหนึ่งในข้ออ้างที่มหาอำนาจนำมาใช้เพื่อแทรกแซงและคุกคามสยามประเทศ ภายหลัง ต่างชาติยุโรปเองได้ยอมรับกรุงเทพมหานครว่า เป็นหนึ่งในเมืองที่มีผังเมืองงดงามที่สุดในโลกในสมัยนั้น[13]
+
+\bigskip
+
+Typeset with babel \csname bbl at version\endcsname.
+
+\end{document}
\ No newline at end of file
More information about the latex3-commits
mailing list