texlive[50932] Master/texmf-dist: thuthesis (27apr19)

commits+karl at tug.org commits+karl at tug.org
Fri May 3 00:31:15 CEST 2019


Revision: 50932
          http://tug.org/svn/texlive?view=revision&revision=50932
Author:   karl
Date:     2019-05-03 00:31:15 +0200 (Fri, 03 May 2019)
Log Message:
-----------
thuthesis (27apr19)

Modified Paths:
--------------
    trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-author-year.bst
    trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-numeric.bst
    trunk/Master/texmf-dist/doc/latex/thuthesis/README.md
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix01.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/chap01.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/chap02.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/cover.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/denotation.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/dtx-style.sty
    trunk/Master/texmf-dist/doc/latex/thuthesis/latexmkrc
    trunk/Master/texmf-dist/doc/latex/thuthesis/main.pdf
    trunk/Master/texmf-dist/doc/latex/thuthesis/main.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/ref/refs.bib
    trunk/Master/texmf-dist/doc/latex/thuthesis/shuji.pdf
    trunk/Master/texmf-dist/doc/latex/thuthesis/shuji.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/thuthesis.pdf
    trunk/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx
    trunk/Master/texmf-dist/source/latex/thuthesis/thuthesis.ins
    trunk/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls

Added Paths:
-----------
    trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-bachelor.bst
    trunk/Master/texmf-dist/source/latex/thuthesis/Makefile

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/latex/thuthesis/Makefile
    trunk/Master/texmf-dist/doc/latex/thuthesis/figures/thu-fig-logo.eps
    trunk/Master/texmf-dist/doc/latex/thuthesis/figures/thu-lib-logo.eps
    trunk/Master/texmf-dist/doc/latex/thuthesis/figures/thu-text-logo.eps
    trunk/Master/texmf-dist/doc/latex/thuthesis/figures/thu-whole-logo.eps
    trunk/Master/texmf-dist/doc/latex/thuthesis/tsinghua.eps
    trunk/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cfg

Modified: trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-author-year.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-author-year.bst	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-author-year.bst	2019-05-02 22:31:15 UTC (rev 50932)
@@ -1,26 +1,73 @@
 %%
-%% This is file `gbt7714-plain.bst',
+%% This is file `versions/thu/thuthesis-author-year.bst',
 %% generated with the docstrip utility.
 %%
 %% The original source files were:
 %%
-%% gbt7714.dtx  (with options: `authoryear')
-%% 
-%% Copyright (C) 2016-2018 by Zeping Lee <zepinglee AT gmail.com>
-%% 
+%% gbt7714.dtx  (with options: `thu,2005,authoryear')
+%% -------------------------------------------------------------------
+%% GB/T 7714-2015 BibTeX Style
+%% https://github.com/CTeX-org/gbt7714-bibtex-style
+%% Version: 2019/03/21 v1.1.1
+%% -------------------------------------------------------------------
+%% Copyright (C) 2016-2019 by Zeping Lee <zepinglee AT gmail.com>
+%% -------------------------------------------------------------------
 %% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either
-%% version 1.2 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.2 or later is part of all distributions of
-%% LaTeX version 1999/12/01 or later.
-%% 
-%% This BibTeX style file is derived from `plainnat.bst' by Patrick W Daly,
-%% which was designed for use with the `natbib.sty' package.
-%% 
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%    https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%% -------------------------------------------------------------------
+INTEGERS {
+  uppercase.name
+  max.num.authors
+  period.between.author.year
+  sentence.case.title
+  link.title
+  show.mark
+  slash.for.extraction
+  in.booktitle
+  italic.jounal
+  bold.journal.volume
+  show.missing.address.publisher
+  show.url
+  show.doi
+  show.note
+  lang.zh.order
+  lang.ja.order
+  lang.en.order
+  lang.ru.order
+  lang.other.order
+}
+
+FUNCTION {load.config}
+{
+  #1 'uppercase.name :=
+  #0 'uppercase.name :=
+  #3 'max.num.authors :=
+  #0 'period.between.author.year :=
+  #1 'period.between.author.year :=
+  #1 'sentence.case.title :=
+  #0 'link.title :=
+  #1 'show.mark :=
+  #1 'slash.for.extraction :=
+  #0 'in.booktitle :=
+  #0 'italic.jounal :=
+  #0 'bold.journal.volume :=
+  #1 'show.missing.address.publisher :=
+  #1 'show.url :=
+  #1 'show.doi :=
+  #0 'show.doi :=
+  #0 'show.note :=
+  #1 'lang.zh.order :=
+  #2 'lang.ja.order :=
+  #3 'lang.en.order :=
+  #4 'lang.ru.order :=
+  #5 'lang.other.order :=
+}
+
 ENTRY
   { address
     author
@@ -29,6 +76,7 @@
     doi
     edition
     editor
+    howpublished
     institution
     journal
     key
@@ -35,10 +83,10 @@
     language
     mark
     medium
+    note
     number
     organization
     pages
-    pinyin
     publisher
     school
     series
@@ -49,14 +97,14 @@
     volume
     year
   }
-  { entry.lang }
-  { label extra.label sort.label short.list entry.mark }
+  { entry.lang entry.is.electronic entry.numbered }
+  { label extra.label sort.label short.list entry.mark entry.url }
 
 INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash }
 
 INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other }
 
-INTEGERS { charptr stringlength }
+INTEGERS { charptr len }
 
 FUNCTION {init.state.consts}
 { #0 'before.all :=
@@ -71,34 +119,63 @@
   #0 'lang.other :=
 }
 
-STRINGS { s t }
+FUNCTION {bbl.anonymous}
+{ entry.lang lang.zh =
+    { "佚名" }
+    { "Anon" }
+  if$
+}
 
-FUNCTION {debug}
-{ 's :=
-  duplicate$
-  "DEBUG: " s * " -> `" *
-  swap$ * "'" *
-  top$
+FUNCTION {bbl.space}
+{ entry.lang lang.zh =
+    { "\ " }
+    { " " }
+  if$
 }
 
-FUNCTION {debug.int}
-{ 's :=
-  duplicate$ int.to.str$
-  "DEBUG: " s * " == " *
-  swap$ *
-  top$
+FUNCTION {bbl.et.al}
+{ entry.lang lang.zh =
+    { "等" }
+    { entry.lang lang.ja =
+        { "他" }
+        { entry.lang lang.ru =
+            { "идр" }
+            { "et~al." }
+          if$
+        }
+      if$
+    }
+  if$
 }
 
-FUNCTION {punct.colon}
-{ ": "
+FUNCTION {citation.et.al}
+{ bbl.et.al }
+
+FUNCTION {bbl.colon} { ": " }
+
+FUNCTION {bbl.wide.space} { "\ " }
+
+FUNCTION {bbl.slash} { "//\allowbreak " }
+
+FUNCTION {bbl.sine.loco}
+{ entry.lang lang.zh =
+    { "[出版地不详]" }
+    { "[S.l.]" }
+  if$
 }
 
-FUNCTION {punct.slash}
-{ "//\allowbreak{}"
+FUNCTION {bbl.sine.nomine}
+{ entry.lang lang.zh =
+    { "[出版者不详]" }
+    { "[s.n.]" }
+  if$
 }
 
-FUNCTION {punct.space}
-{ " "
+FUNCTION {bbl.sine.loco.sine.nomine}
+{ entry.lang lang.zh =
+    { "[出版地不详: 出版者不详]" }
+    { "[S.l.: s.n.]" }
+  if$
 }
 
 FUNCTION {not}
@@ -119,6 +196,8 @@
   if$
 }
 
+STRINGS { s t }
+
 FUNCTION {output.nonnull}
 { 's :=
   output.state mid.sentence =
@@ -131,7 +210,9 @@
         { output.state before.all =
             'write$
             { output.state after.slash =
-                { punct.slash * write$ }
+                { bbl.slash * write$
+                  newline$
+                }
                 { add.period$ " " * write$ }
               if$
             }
@@ -166,7 +247,7 @@
             { output.state before.all =
                 'write$
                 { output.state after.slash =
-                    { punct.slash * write$ }
+                    { bbl.slash * write$ }
                     { add.period$ " " * write$ }
                   if$
                 }
@@ -190,13 +271,7 @@
 }
 
 FUNCTION {fin.entry}
-{ type$ "book" =
-  type$ "inbook" = or
-  type$ "incollection" = or
-  type$ "collection" = or
-    'skip$
-    'add.period$
-  if$
+{ add.period$
   write$
   newline$
 }
@@ -230,7 +305,11 @@
 FUNCTION {new.slash}
 { output.state before.all =
     'skip$
-    { after.slash 'output.state := }
+    { slash.for.extraction
+        { after.slash 'output.state := }
+        { after.block 'output.state := }
+      if$
+    }
   if$
 }
 
@@ -273,35 +352,15 @@
   if$
 }
 
-FUNCTION {emphasize}
+FUNCTION {italicize}
 { duplicate$ empty$
     { pop$ "" }
-    { "\emph{" swap$ * "}" * }
+    { "\textit{" swap$ * "}" * }
   if$
 }
 
-INTEGERS { ascii }
+INTEGERS { byte second.byte }
 
-FUNCTION {get.char.lang}
-{ chr.to.int$ 'ascii :=
-  ascii #64 > ascii #91 < and ascii #96 > ascii #123 < and or
-    { lang.en }
-    { ascii #227 > ascii #234 < and
-        { lang.zh }
-        { ascii #227 =
-            { lang.ja }
-            { ascii #207 > ascii #212 < and
-                { lang.ru }
-                { lang.en }
-              if$
-            }
-          if$
-        }
-      if$
-    }
-  if$
-}
-
 INTEGERS { char.lang tmp.lang }
 
 STRINGS { tmp.str }
@@ -309,47 +368,106 @@
 FUNCTION {get.str.lang}
 { 'tmp.str :=
   lang.other 'tmp.lang :=
-  tmp.str empty$
-    { "Empty string!" warning$ }
-    { #1 'charptr :=
-      tmp.str text.length$ #1 + 'stringlength :=
-        { charptr stringlength < }
-        { tmp.str charptr #1 substring$ get.char.lang 'char.lang :=
-          char.lang tmp.lang >
-            { char.lang 'tmp.lang := }
-            'skip$
+  #1 'charptr :=
+  tmp.str text.length$ #1 + 'len :=
+    { charptr len < }
+    { tmp.str charptr #1 substring$ chr.to.int$ 'byte :=
+      byte #128 <
+        { charptr #1 + 'charptr :=
+          byte #64 > byte #91 < and byte #96 > byte #123 < and or
+            { lang.en 'char.lang := }
+            { lang.other 'char.lang := }
           if$
-
-          char.lang lang.zh = char.lang lang.ja = or
-            { charptr #3 + 'charptr := }
-            { char.lang lang.ru =
-                { charptr #2 + 'charptr := }
-                { charptr #1 + 'charptr := }
+        }
+        { tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte :=
+          byte #224 <
+            { charptr #2 + 'charptr :=
+              byte #207 > byte #212 < and
+              byte #212 = second.byte #176 < and or
+                { lang.ru 'char.lang := }
+                { lang.other 'char.lang := }
               if$
             }
+            { byte #240 <
+                { charptr #3 + 'charptr :=
+                  byte #227 > byte #234 < and
+                    { lang.zh 'char.lang := }
+                    { byte #227 =
+                        { second.byte #143 >
+                            { lang.zh 'char.lang := }
+                            { second.byte #128 > second.byte #132 < and
+                                { lang.ja 'char.lang := }
+                                { lang.other 'char.lang := }
+                              if$
+                            }
+                          if$
+                        }
+                        { byte #239 =
+                          second.byte #163 > second.byte #172 < and and
+                            { lang.zh 'char.lang := }
+                            { lang.other 'char.lang := }
+                          if$
+                        }
+                      if$
+                    }
+                  if$
+                }
+                { charptr #4 + 'charptr :=
+                  byte #240 = second.byte #159 > and
+                    { lang.zh 'char.lang := }
+                    { lang.other 'char.lang := }
+                  if$
+                }
+              if$
+            }
           if$
         }
-      while$
+      if$
+      char.lang tmp.lang >
+        { char.lang 'tmp.lang := }
+        'skip$
+      if$
     }
-  if$
+  while$
   tmp.lang
 }
 
-FUNCTION {is.in.chinese}
-{ entry.lang lang.zh =
+FUNCTION {check.entry.lang}
+{ author field.or.null
+  title field.or.null *
+  get.str.lang
 }
 
-FUNCTION {format.et.al}
-{ is.in.chinese
-    { "等"}
-    { "et~al." }
+FUNCTION {set.entry.lang}
+{ language empty$
+    { check.entry.lang }
+    { language "english" = language "american" = or language "british" = or
+        { lang.en }
+        { language "chinese" =
+            { lang.zh }
+            { language "japanese" =
+                { lang.ja }
+                { language "russian" =
+                    { lang.ru }
+                    { check.entry.lang }
+                  if$
+                }
+              if$
+            }
+          if$
+        }
+      if$
+    }
   if$
+  'entry.lang :=
 }
 
-FUNCTION {format.anonymous}
-{ is.in.chinese
-    { "佚名" }
-    { "Anon" }
+FUNCTION {set.entry.numbered}
+{ type$ "patent" =
+  type$ "standard" = or
+  type$ "techreport" = or
+    { #1 'entry.numbered := }
+    { #0 'entry.numbered := }
   if$
 }
 
@@ -362,15 +480,21 @@
   numnames 'namesleft :=
     { namesleft #0 > }
     { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
-      nameptr #4 =
-        { format.et.al
+      nameptr max.num.authors >
+        { bbl.et.al
           #1 'namesleft :=
         }
         { t "others" =
-            { format.et.al }
+            { bbl.et.al }
             { t get.str.lang 'name.lang :=
               name.lang lang.en =
-                { t #1 "{vv~}{ll}{ f{~}}{, jj}" format.name$ }
+                { t #1 "{vv~}{ll}{~f{~}}" format.name$
+                  uppercase.name
+                    { "u" change.case$ }
+                    'skip$
+                  if$
+                  t #1 "{, jj}" format.name$ *
+                }
                 { t #1 "{ll}{ff}" format.name$ }
               if$
             }
@@ -395,9 +519,11 @@
 }
 
 FUNCTION {format.authors}
-{ author empty$
-    { format.anonymous }
+{ author empty$ not
     { author format.names }
+    { "empty author in " cite$ * warning$
+      bbl.anonymous
+    }
   if$
 }
 
@@ -412,7 +538,7 @@
 { translator empty$
     { "" }
     { translator format.names
-      is.in.chinese
+      entry.lang lang.zh =
         { translator num.names$ #3 >
             { "译" * }
             { ", 译" * }
@@ -424,46 +550,6 @@
   if$
 }
 
-FUNCTION {format.url}
-{ url empty$
-    { "" }
-    { new.block "\url{" url * "}" * }
-  if$
-}
-
-FUNCTION {format.doi}
-{ ""
-}
-
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    { title "t" change.case$ }
-  if$
-}
-
-FUNCTION {set.mark}
-{ entry.mark empty$ not
-    'pop$
-    { mark empty$ not
-        { pop$ mark 'entry.mark := }
-        { 'entry.mark := }
-      if$
-      medium empty$ not
-        { entry.mark "/" * medium * 'entry.mark := }
-        { url empty$ not
-            { entry.mark "/OL" * 'entry.mark := }
-            'skip$
-          if$
-        }
-      if$
-    }
-  if$
-}
-
-FUNCTION {format.mark}
-{ "\allowbreak[" entry.mark * "]" * }
-
 FUNCTION {format.full.names}
 {'s :=
   #1 'nameptr :=
@@ -547,7 +633,20 @@
   ")" make.full.names duplicate$ short.list =
      { pop$ }
      { * }
-   if$
+  if$
+  's :=
+  s text.length$ 'charptr :=
+    { charptr #0 > }
+    { s charptr #1 substring$ "]" =
+        { #0 'charptr := }
+        { charptr #1 - 'charptr := }
+      if$
+    }
+  while$
+  charptr #0 >
+    { "{" s * "}" * }
+    { s }
+  if$
   "]{" * write$
   cite$ write$
   "}" write$
@@ -556,122 +655,44 @@
   before.all 'output.state :=
 }
 
-FUNCTION {hyphenate}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-        { "-" *
-            { t #1 #1 substring$ "-" = }
-            { t #2 global.max$ substring$ 't := }
-          while$
-        }
-        { t #1 #1 substring$ *
-          t #2 global.max$ substring$ 't :=
-        }
-      if$
-    }
-  while$
-}
-
-FUNCTION {extract.before.dash}
-{ duplicate$ empty$
-    { pop$ "" }
-    { 's :=
-      #1 'charptr :=
-      s text.length$ #1 + 'stringlength :=
-        { charptr stringlength <
-          s charptr #1 substring$ "-" = not
-          and
-        }
-        { charptr #1 + 'charptr := }
-      while$
-      s #1 charptr #1 - substring$
-    }
+FUNCTION {change.sentence.case}
+{ entry.lang lang.en =
+    { "t" change.case$ }
+    'skip$
   if$
 }
 
-FUNCTION {extract.after.dash}
-{ duplicate$ empty$
-    { pop$ "" }
-    { 's :=
-      #1 'charptr :=
-      s text.length$ #1 + 'stringlength :=
-        { charptr stringlength <
-          s charptr #1 substring$ "-" = not
-          and
-        }
-        { charptr #1 + 'charptr := }
-      while$
-        { charptr stringlength <
-          s charptr #1 substring$ "-" =
-          and
-        }
-        { charptr #1 + 'charptr := }
-      while$
-      s charptr global.max$ substring$
+FUNCTION {add.link}
+{ url empty$ not
+    { "\href{" url * "}{" * swap$ * "}" * }
+    { doi empty$ not
+        { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
+        'skip$
+      if$
     }
   if$
 }
 
-FUNCTION {contains.dash}
-{ duplicate$ empty$
-    { pop$ #0 }
-    { 's :=
-        { s empty$ not
-          s #1 #1 substring$ "-" = not
-          and
-        }
-        { s #2 global.max$ substring$ 's := }
-      while$
-      s empty$ not
-    }
-  if$
-}
-
-FUNCTION {format.year}
-{ year empty$ not
-    { year extract.before.dash }
-    { date empty$ not
-        { date extract.before.dash }
-        { "empty year in " cite$ * warning$
-          ""
-        }
+FUNCTION {format.title}
+{ title empty$
+    { "" }
+    { title
+      sentence.case.title
+        'change.sentence.case
+        'skip$
       if$
+      entry.numbered number empty$ not and
+        { bbl.colon * number * }
+        'skip$
+      if$
+      link.title
+        'add.link
+        'skip$
+      if$
     }
   if$
-  extra.label *
 }
 
-FUNCTION {format.date}
-{ type$ "patent" = type$ "newspaper" = or
-  date empty$ not and
-    { date }
-    { year }
-  if$
-}
-
-FUNCTION {format.editdate}
-{ date empty$ not
-  type$ "newspaper" = not and
-  url empty$ not doi empty$ not or
-  and
-    { "\allowbreak(" date * ")" * }
-    { "" }
-  if$
-}
-
-FUNCTION {format.urldate}
-{ urldate empty$ not
-    { "\allowbreak[" urldate * "]" * }
-    { "" }
-  if$
-}
-
-FUNCTION {format.btitle}
-{ title emphasize
-}
-
 FUNCTION {tie.or.space.connect}
 { duplicate$ text.length$ #3 <
     { "~" }
@@ -720,11 +741,10 @@
 }
 
 FUNCTION {format.volume}
-{ volume empty$
-    { "" }
+{ volume empty$ not
     { volume is.number
-        { is.in.chinese
-            { "第" volume * "卷" * }
+        { entry.lang lang.zh =
+            { "第 " volume * " 卷" * }
             { "volume" volume tie.or.space.connect }
           if$
         }
@@ -731,15 +751,15 @@
         { volume }
       if$
     }
+    { "" }
   if$
 }
 
 FUNCTION {format.number}
-{ number empty$
-    { "" }
+{ number empty$ not
     { number is.number
-        { is.in.chinese
-            { "第" number * "册" * }
+        { entry.lang lang.zh =
+            { "第 " number * " 册" * }
             { "number" number tie.or.space.connect }
           if$
         }
@@ -746,6 +766,7 @@
         { number }
       if$
     }
+    { "" }
   if$
 }
 
@@ -756,45 +777,132 @@
   if$
 }
 
+FUNCTION {format.title.vol.num}
+{ title
+  sentence.case.title
+    'change.sentence.case
+    'skip$
+  if$
+  entry.numbered
+    { number empty$ not
+        { bbl.colon * number * }
+        'skip$
+      if$
+    }
+    { format.volume.number 's :=
+      s empty$ not
+        { bbl.colon * s * }
+        'skip$
+      if$
+    }
+  if$
+}
+
 FUNCTION {format.series.vol.num.title}
 { format.volume.number 's :=
   series empty$ not
-    { series ": " *
-      s empty$ not
-        { s * "\quad " * }
+    { series
+      sentence.case.title
+        'change.sentence.case
         'skip$
       if$
+      entry.numbered
+        { bbl.wide.space * }
+        { bbl.colon *
+          s empty$ not
+            { s * bbl.wide.space * }
+            'skip$
+          if$
+        }
+      if$
       title *
+      sentence.case.title
+        'change.sentence.case
+        'skip$
+      if$
+      entry.numbered number empty$ not and
+        { bbl.colon * number * }
+        'skip$
+      if$
     }
-    { title
+    { format.title.vol.num }
+  if$
+  link.title
+    'add.link
+    'skip$
+  if$
+}
+
+FUNCTION {format.booktitle.vol.num}
+{ booktitle
+  entry.numbered
+    'skip$
+    { format.volume.number 's :=
       s empty$ not
-        { ": " * s * }
+        { bbl.colon * s * }
         'skip$
       if$
     }
   if$
-  "t" change.case$
 }
 
 FUNCTION {format.series.vol.num.booktitle}
 { format.volume.number 's :=
   series empty$ not
-    { series ": " *
-      s empty$ not
-        { s * "\quad " * }
+    { series bbl.colon *
+      entry.numbered not s empty$ not and
+        { s * bbl.wide.space * }
         'skip$
       if$
       booktitle *
     }
-    { booktitle
-      s empty$ not
-        { ": " * s * }
+    { format.booktitle.vol.num }
+  if$
+  in.booktitle
+    { duplicate$ empty$ not entry.lang lang.en = and
+        { "In: " swap$ * }
         'skip$
       if$
     }
+    'skip$
   if$
 }
 
+FUNCTION {format.journal}
+{ journal
+  italic.jounal entry.lang lang.en = and
+    'italicize
+    'skip$
+  if$
+}
+
+FUNCTION {set.entry.mark}
+{ entry.mark empty$ not
+    'pop$
+    { mark empty$ not
+        { pop$ mark 'entry.mark := }
+        { 'entry.mark := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.mark}
+{ show.mark
+    { medium empty$ not
+        { entry.mark "/" * medium * 'entry.mark := }
+        { entry.is.electronic
+            { entry.mark "/OL" * 'entry.mark := }
+            'skip$
+          if$
+        }
+      if$
+      "\allowbreak[" entry.mark * "]" *
+    }
+    { "" }
+  if$
+}
+
 FUNCTION {num.to.ordinal}
 { duplicate$ text.length$ 'charptr :=
   duplicate$ charptr #1 substring$ 's :=
@@ -816,13 +924,13 @@
 { edition empty$
     { "" }
     { edition is.number
-        { is.in.chinese
-            { edition "版" * }
+        { entry.lang lang.zh =
+            { edition " 版" * }
             { edition num.to.ordinal " ed." * }
           if$
         }
         { entry.lang lang.en =
-            { edition "t" change.case$ 's :=
+            { edition change.sentence.case 's :=
               s "Revised" = s "Revised edition" = or
                 { "Rev. ed." }
                 { s " ed." *}
@@ -836,23 +944,6 @@
   if$
 }
 
-FUNCTION {format.sine.loco}
-{ is.in.chinese
-    { "[出版地不详]" }
-    { "[S.l.]" }
-  if$
-}
-
-FUNCTION {format.address}
-{ address }
-
-FUNCTION {format.sine.nomine}
-{ is.in.chinese
-    { "[出版者不详]" }
-    { "[s.n.]" }
-  if$
-}
-
 FUNCTION {format.publisher}
 { publisher empty$ not
     { publisher }
@@ -872,29 +963,22 @@
   if$
 }
 
-FUNCTION {format.sine.loco.sine.nomine}
-{ is.in.chinese
-    { "[出版地不详: 出版者不详]" }
-    { "[S.l.: s.n.]" }
-  if$
-}
-
 FUNCTION {format.address.publisher}
 { address empty$ not
     { address
       format.publisher empty$ not
-        { ": " * format.publisher * }
-        { url empty$ doi empty$ and
-            { ": " * format.sine.nomine * }
+        { bbl.colon * format.publisher * }
+        { entry.is.electronic not show.missing.address.publisher and
+            { bbl.colon * bbl.sine.nomine * }
             'skip$
           if$
         }
       if$
     }
-    { url empty$ doi empty$ and
+    { entry.is.electronic not show.missing.address.publisher and
         { format.publisher empty$ not
-            { format.sine.loco ": " * format.publisher * }
-            { format.sine.loco.sine.nomine }
+            { bbl.sine.loco bbl.colon * format.publisher * }
+            { bbl.sine.loco.sine.nomine }
           if$
         }
         { format.publisher empty$ not
@@ -907,6 +991,118 @@
   if$
 }
 
+FUNCTION {extract.before.dash}
+{ duplicate$ empty$
+    { pop$ "" }
+    { 's :=
+      #1 'charptr :=
+      s text.length$ #1 + 'len :=
+        { charptr len <
+          s charptr #1 substring$ "-" = not
+          and
+        }
+        { charptr #1 + 'charptr := }
+      while$
+      s #1 charptr #1 - substring$
+    }
+  if$
+}
+
+FUNCTION {extract.after.dash}
+{ duplicate$ empty$
+    { pop$ "" }
+    { 's :=
+      #1 'charptr :=
+      s text.length$ #1 + 'len :=
+        { charptr len <
+          s charptr #1 substring$ "-" = not
+          and
+        }
+        { charptr #1 + 'charptr := }
+      while$
+        { charptr len <
+          s charptr #1 substring$ "-" =
+          and
+        }
+        { charptr #1 + 'charptr := }
+      while$
+      s charptr global.max$ substring$
+    }
+  if$
+}
+
+FUNCTION {contains.dash}
+{ duplicate$ empty$
+    { pop$ #0 }
+    { 's :=
+        { s empty$ not
+          s #1 #1 substring$ "-" = not
+          and
+        }
+        { s #2 global.max$ substring$ 's := }
+      while$
+      s empty$ not
+    }
+  if$
+}
+
+FUNCTION {format.year}
+{ year empty$ not
+    { year extract.before.dash }
+    { date empty$ not
+        { date extract.before.dash }
+        { "empty year in " cite$ * warning$
+          urldate empty$ not
+            { "[" urldate extract.before.dash * "]" * }
+            { "" }
+          if$
+        }
+      if$
+    }
+  if$
+  extra.label *
+}
+
+FUNCTION {format.date}
+{ type$ "patent" = type$ "newspaper" = or
+  date empty$ not and
+    { date }
+    { year }
+  if$
+}
+
+FUNCTION {format.editdate}
+{ date empty$ not
+    { "\allowbreak(" date * ")" * }
+    { "" }
+  if$
+}
+
+FUNCTION {format.urldate}
+{ urldate empty$ not entry.is.electronic and
+    { "\allowbreak[" urldate * "]" * }
+    { "" }
+  if$
+}
+
+FUNCTION {hyphenate}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { "-" *
+            { t #1 #1 substring$ "-" = }
+            { t #2 global.max$ substring$ 't := }
+          while$
+        }
+        { t #1 #1 substring$ *
+          t #2 global.max$ substring$ 't :=
+        }
+      if$
+    }
+  while$
+}
+
 FUNCTION {format.pages}
 { pages empty$
     { "" }
@@ -915,7 +1111,15 @@
 }
 
 FUNCTION {format.journal.volume}
-{ volume }
+{ volume empty$ not
+    { bold.journal.volume
+        { "\textbf{" volume * "}" * }
+        { volume }
+      if$
+    }
+    { "" }
+  if$
+}
 
 FUNCTION {format.journal.number}
 { number empty$ not
@@ -924,10 +1128,17 @@
   if$
 }
 
+FUNCTION {format.journal.pages}
+{ pages empty$
+    { "" }
+    { ":\penalty0 " pages hyphenate * }
+  if$
+}
+
 FUNCTION {format.periodical.year.volume.number}
 { year empty$ not
     { year extract.before.dash }
-    { "No year in periodical " cite$ * warning$ }
+    { "empty year in periodical " cite$ * warning$ }
   if$
   volume empty$ not
     { ", " * volume extract.before.dash * }
@@ -962,92 +1173,146 @@
   if$
 }
 
-FUNCTION {format.in.ed.booktitle}
-{ booktitle empty$
-    { "" }
-    { editor empty$
-        { "In " booktitle emphasize * }
-        { "In " format.editors * ", " * booktitle emphasize * }
+FUNCTION {check.url}
+{ url empty$ not
+    { "\url{" url * "}" * 'entry.url :=
+      #1 'entry.is.electronic :=
+    }
+    { howpublished empty$ not
+        { howpublished #1 #5 substring$ "\url{" =
+            { howpublished 'entry.url :=
+              #1 'entry.is.electronic :=
+            }
+            'skip$
+          if$
+        }
+        { note empty$ not
+            { note #1 #5 substring$ "\url{" =
+                { note 'entry.url :=
+                  #1 'entry.is.electronic :=
+                }
+                'skip$
+              if$
+            }
+            'skip$
+          if$
+        }
       if$
     }
   if$
 }
 
-FUNCTION {empty.misc.check}
-{ author empty$ title empty$
-  year empty$
-  and and
-  key empty$ not and
-    { "all relevant fields are empty in " cite$ * warning$ }
+FUNCTION {format.url}
+{ entry.url empty$ not
+    { new.block entry.url }
+    { "" }
+  if$
+}
+
+FUNCTION {check.doi}
+{ doi empty$ not
+    { #1 'entry.is.electronic := }
     'skip$
   if$
 }
 
-FUNCTION {format.article.crossref}
-{ key empty$
-    { journal empty$
-        { "need key or journal for " cite$ * " to crossref " * crossref *
-          warning$
-          ""
+FUNCTION {is.in.url}
+{ 's :=
+  s empty$
+    { #1 }
+    { entry.url empty$
+        { #0 }
+        { s text.length$ 'len :=
+          entry.url text.length$ 'charptr :=
+            { entry.url charptr len substring$ s = not
+              charptr #0 >
+              and
+            }
+            { charptr #1 - 'charptr := }
+          while$
+          charptr
         }
-        { "In \emph{" journal * "}" * }
       if$
     }
-    { "In " }
   if$
-  " \citet{" * crossref * "}" *
 }
 
-FUNCTION {format.book.crossref}
-{ volume empty$
-    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
-      "In "
-    }
-    { "Volume" volume tie.or.space.connect
-      " of " *
-    }
-  if$
-  editor empty$
-  editor field.or.null author field.or.null =
-  or
-    { key empty$
-        { series empty$
-            { "need editor, key, or series for " cite$ * " to crossref " *
-              crossref * warning$
-              "" *
+FUNCTION {format.doi}
+{ ""
+  doi empty$ not show.doi and
+    { "" 's :=
+      doi 't :=
+      #0 'numnames :=
+        { t empty$ not}
+        { t #1 #1 substring$ 'tmp.str :=
+          tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or
+            { t #2 #1 substring$ empty$
+                { s tmp.str * 's := }
+                'skip$
+              if$
+              s empty$ s is.in.url or
+                'skip$
+                { numnames #1 + 'numnames :=
+                  numnames #1 >
+                    { ", " * }
+                    { "DOI: " * }
+                  if$
+                  "\doi{" s * "}" * *
+                }
+              if$
+              "" 's :=
             }
-            { "\emph{" * series * "}" * }
+            { s tmp.str * 's := }
           if$
+          t #2 global.max$ substring$ 't :=
         }
-        'skip$
+      while$
+      's :=
+      s empty$ not
+        { new.block s }
+        { "" }
       if$
     }
     'skip$
   if$
-  " \citet{" * crossref * "}" *
 }
 
-FUNCTION {format.incoll.inproc.crossref}
-{ editor empty$
-  editor field.or.null author field.or.null =
-  or
-    { key empty$
-        { booktitle empty$
-            { "need editor, key, or booktitle for " cite$ * " to crossref " *
-              crossref * warning$
-              ""
-            }
-            { "In \emph{" booktitle * "}" * }
-          if$
-        }
-        { "In " }
+FUNCTION {check.electronic}
+{ "" 'entry.url :=
+  #0 'entry.is.electronic :=
+    'check.doi
+    'skip$
+  if$
+    'check.url
+    'skip$
+  if$
+  medium empty$ not
+    { medium "MT" = medium "DK" = or medium "CD" = or medium "OL" = or
+        { #1 'entry.is.electronic := }
+        'skip$
       if$
     }
-    { "In " }
+    'skip$
   if$
-  " \citet{" * crossref * "}" *
 }
 
+FUNCTION {format.note}
+{ note empty$ not show.note and
+    { note }
+    { "" }
+  if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$
+  year empty$
+  and and
+  key empty$ not and
+    { "all relevant fields are empty in " cite$ * warning$ }
+    'skip$
+  if$
+}
+
 FUNCTION {monograph}
 { output.bibitem
   author empty$ not
@@ -1054,16 +1319,21 @@
     { format.authors }
     { editor empty$ not
         { format.editors }
-        { format.anonymous }
+        { "empty author and editor in " cite$ * warning$
+          bbl.anonymous
+        }
       if$
     }
   if$
   output
-  new.block
+  period.between.author.year
+    'new.sentence
+    'skip$
+  if$
   format.year "year" output.check
   new.block
   format.series.vol.num.title "title" output.check
-  "M" set.mark
+  "M" set.entry.mark
   format.mark "" output.after
   new.block
   format.translators output
@@ -1071,22 +1341,27 @@
   format.edition output
   new.block
   format.address.publisher output
-  format.pages punct.colon output.after
+  format.pages bbl.colon output.after
   format.urldate "" output.after
   format.url output
   format.doi output
+  new.block
+  format.note output
   fin.entry
 }
 
 FUNCTION {incollection}
 { output.bibitem
-  format.authors "author" output.check
+  format.authors output
   author format.key output
-  new.block
+  period.between.author.year
+    'new.sentence
+    'skip$
+  if$
   format.year "year" output.check
   new.block
   format.title "title" output.check
-  "M" set.mark
+  "M" set.entry.mark
   format.mark "" output.after
   new.block
   format.translators output
@@ -1098,22 +1373,27 @@
   format.edition output
   new.block
   format.address.publisher output
-  format.pages punct.colon output.after
+  format.pages bbl.colon output.after
   format.urldate "" output.after
   format.url output
   format.doi output
+  new.block
+  format.note output
   fin.entry
 }
 
 FUNCTION {periodical}
 { output.bibitem
-  format.authors "author" output.check
+  format.authors output
   author format.key output
-  new.block
+  period.between.author.year
+    'new.sentence
+    'skip$
+  if$
   format.year "year" output.check
   new.block
   format.title "title" output.check
-  "J" set.mark
+  "J" set.entry.mark
   format.mark "" output.after
   new.block
   format.periodical.year.volume.number output
@@ -1122,28 +1402,34 @@
   format.urldate "" output.after
   format.url output
   format.doi output
+  new.block
+  format.note output
   fin.entry
 }
 
-FUNCTION {article.in.journal}
+FUNCTION {article}
 { output.bibitem
-  format.authors "author" output.check
+  format.authors output
   author format.key output
-  new.block
+  period.between.author.year
+    'new.sentence
+    'skip$
+  if$
   format.year "year" output.check
   new.block
   format.title "title" output.check
-  "J" set.mark
+  "J" set.entry.mark
   format.mark "" output.after
   new.block
-  journal "journal" output.check
-  volume output
+  format.journal "journal" output.check
+  format.journal.volume output
   format.journal.number "" output.after
-  format.pages punct.colon output.after
-  format.editdate "" output.after
+  format.journal.pages "" output.after
   format.urldate "" output.after
   format.url output
   format.doi output
+  new.block
+  format.note output
   fin.entry
 }
 
@@ -1151,16 +1437,14 @@
 { output.bibitem
   format.authors output
   author format.key output
-  new.block
+  period.between.author.year
+    'new.sentence
+    'skip$
+  if$
   format.year "year" output.check
   new.block
-  format.title
-  number empty$ not
-    { punct.colon * number * }
-    'skip$
-  if$
-  "title" output.check
-  "P" set.mark
+  format.title "title" output.check
+  "P" set.entry.mark
   format.mark "" output.after
   new.block
   format.date "year" output.check
@@ -1167,38 +1451,51 @@
   format.urldate "" output.after
   format.url output
   format.doi output
+  new.block
+  format.note output
   fin.entry
 }
 
-FUNCTION {online}
-{ output.bibitem
+FUNCTION {electronic}
+{ #1 #1 check.electronic
+  #1 'entry.is.electronic :=
+  output.bibitem
   format.authors output
   author format.key output
-  new.block
+  period.between.author.year
+    'new.sentence
+    'skip$
+  if$
   format.year "year" output.check
   new.block
   format.series.vol.num.title "title" output.check
-  "EB" set.mark
+  "EB" set.entry.mark
   format.mark "" output.after
   new.block
   format.address.publisher output
-  format.pages punct.colon output.after
+  format.pages bbl.colon output.after
   format.editdate "" output.after
   format.urldate "" output.after
   format.url output
   format.doi output
+  new.block
+  format.note output
   fin.entry
 }
 
 FUNCTION {misc}
 { journal empty$ not
-    'article.in.journal
+    'article
     { booktitle empty$ not
         'incollection
-        { url empty$ not
-            'online
-            { "Z" set.mark
-              monograph
+        { publisher empty$ not
+            'monograph
+            { entry.is.electronic
+                'electronic
+                { "Z" set.entry.mark
+                  monograph
+                }
+              if$
             }
           if$
         }
@@ -1209,33 +1506,33 @@
 }
 
 FUNCTION {archive}
-{ "A" set.mark
+{ "A" set.entry.mark
   misc
 }
 
-FUNCTION {article} { misc }
-
 FUNCTION {book} { monograph }
 
+FUNCTION {booklet} { book }
+
 FUNCTION {collection}
-{ "G" set.mark
+{ "G" set.entry.mark
   monograph
 }
 
 FUNCTION {database}
-{ "DB" set.mark
-  misc
+{ "DB" set.entry.mark
+  electronic
 }
 
 FUNCTION {dataset}
-{ "DS" set.mark
-  misc
+{ "DS" set.entry.mark
+  electronic
 }
 
 FUNCTION {inbook} { book }
 
 FUNCTION {inproceedings}
-{ "C" set.mark
+{ "C" set.entry.mark
   incollection
 }
 
@@ -1242,53 +1539,65 @@
 FUNCTION {conference} { inproceedings }
 
 FUNCTION {map}
-{ "CM" set.mark
+{ "CM" set.entry.mark
   misc
 }
 
+FUNCTION {manual} { monograph }
+
 FUNCTION {mastersthesis}
-{ is.in.chinese
-    { "\thumasterbib{}" }
+{ lang.zh entry.lang =
+    { "硕士学位论文" }
     { "D" }
   if$
- set.mark
+  set.entry.mark
   monograph
 }
 
 FUNCTION {newspaper}
-{ "N" set.mark
-  article.in.journal
+{ "N" set.entry.mark
+  article
 }
 
+FUNCTION {online}
+{ "EB" set.entry.mark
+  electronic
+}
+
 FUNCTION {phdthesis}
-{ is.in.chinese
-    { "\thuphdbib{}" }
+{ lang.zh entry.lang =
+    { "博士学位论文" }
     { "D" }
   if$
- set.mark
+  set.entry.mark
   monograph
 }
 
 FUNCTION {proceedings}
-{ "C" set.mark
+{ "C" set.entry.mark
   monograph
 }
 
 FUNCTION {software}
-{ "CP" set.mark
-  misc
+{ "CP" set.entry.mark
+  electronic
 }
 
 FUNCTION {standard}
-{ "S" set.mark
+{ "S" set.entry.mark
   misc
 }
 
 FUNCTION {techreport}
-{ "R" set.mark
+{ "R" set.entry.mark
   misc
 }
 
+FUNCTION {unpublished}
+{ "Z" set.entry.mark
+  misc
+}
+
 FUNCTION {default.type} { misc }
 
 MACRO {jan} {"January"}
@@ -1356,41 +1665,11 @@
 
 MACRO {tcs} {"Theoretical Computer Science"}
 
-READ
-
-EXECUTE {init.state.consts}
-
-FUNCTION {set.entry.lang}
-{ language empty$
-    { author field.or.null title field.or.null * get.str.lang }
-    { language "english" = language "american" = or language "british" = or
-        { lang.en }
-        { language "chinese" =
-            { lang.zh }
-            { language "japanese" =
-                { lang.ja }
-                { language "russian" =
-                    { lang.ru }
-                    { lang.other }
-                  if$
-                }
-              if$
-            }
-          if$
-        }
-      if$
-    }
-  if$
-  'entry.lang :=
-}
-
 FUNCTION {sortify}
 { purify$
   "l" change.case$
 }
 
-INTEGERS { len }
-
 FUNCTION {chop.word}
 { 's :=
   'len :=
@@ -1409,7 +1688,7 @@
     { t #1 "{ll}{ff}" format.name$}
   if$
   s num.names$ #1 >
-    { "\ " * format.et.al * }
+    { bbl.space * citation.et.al * }
     'skip$
   if$
 }
@@ -1506,14 +1785,14 @@
 
 FUNCTION {sort.language.label}
 { entry.lang lang.zh =
-    { "a zh " }
+    { lang.zh.order }
     { entry.lang lang.ja =
-        { "b ja " }
+        { lang.ja.order }
         { entry.lang lang.en =
-            { "c en " }
+            { lang.en.order }
             { entry.lang lang.ru =
-                { "d ru " }
-                { "e other " }
+                { lang.ru.order }
+                { lang.other.order }
               if$
             }
           if$
@@ -1521,6 +1800,7 @@
       if$
     }
   if$
+  int.to.chr$
 }
 
 FUNCTION {sort.format.names}
@@ -1564,38 +1844,36 @@
   #1 global.max$ substring$
 }
 
-FUNCTION {key.or.pinyin}
-{ key empty$
-    { pinyin empty$
-        { "" }
-        { pinyin }
-      if$
-    }
-    { key }
-  if$
-}
-
 FUNCTION {anonymous.sort}
-{ is.in.chinese
+{ entry.lang lang.zh =
     { "yi4 ming2" }
     { "anon" }
   if$
 }
 
+FUNCTION {warn.empty.key}
+{ entry.lang lang.zh =
+    { "empty key in " cite$ * warning$ }
+    'skip$
+  if$
+}
+
 FUNCTION {author.sort}
-{ key.or.pinyin empty$
-    { author empty$
+{ key empty$
+    { warn.empty.key
+      author empty$
         { anonymous.sort }
         { author sort.format.names }
       if$
     }
-    { key.or.pinyin sortify }
+    { key sortify }
   if$
 }
 
 FUNCTION {author.editor.sort}
-{ key.or.pinyin empty$
-    { author empty$
+{ key empty$
+    { warn.empty.key
+      author empty$
         { editor empty$
             { anonymous.sort }
             { editor sort.format.names }
@@ -1604,13 +1882,14 @@
         { author sort.format.names }
       if$
     }
-    { key.or.pinyin sortify }
+    { key sortify }
   if$
 }
 
 FUNCTION {author.organization.sort}
-{ key.or.pinyin empty$
-    { author empty$
+{ key empty$
+    { warn.empty.key
+      author empty$
         { organization empty$
             { anonymous.sort }
             { "The " #4 organization chop.word sortify }
@@ -1619,13 +1898,14 @@
         { author sort.format.names }
       if$
     }
-    { key.or.pinyin sortify }
+    { key sortify }
   if$
 }
 
 FUNCTION {editor.organization.sort}
-{ key.or.pinyin empty$
-    { editor empty$
+{ key empty$
+    { warn.empty.key
+      editor empty$
         { organization empty$
             { anonymous.sort }
             { "The " #4 organization chop.word sortify }
@@ -1634,12 +1914,14 @@
         { editor sort.format.names }
       if$
     }
-    { key.or.pinyin sortify }
+    { key sortify }
   if$
 }
 
 FUNCTION {presort}
 { set.entry.lang
+  set.entry.numbered
+  show.url show.doi check.electronic
   calc.label
   label sortify
   "    "
@@ -1673,10 +1955,6 @@
   'sort.key$ :=
 }
 
-ITERATE {presort}
-
-SORT
-
 STRINGS { longest.label last.label next.extra }
 
 INTEGERS { longest.label.width last.extra.num number.label }
@@ -1718,20 +1996,10 @@
   label extra.label * 'label :=
 }
 
-EXECUTE {initialize.longest.label}
-
-ITERATE {forward.pass}
-
-REVERSE {reverse.pass}
-
 FUNCTION {bib.sort.order}
 { sort.label  'sort.key$ :=
 }
 
-ITERATE {bib.sort.order}
-
-SORT
-
 FUNCTION {begin.bib}
 {   preamble$ empty$
     'skip$
@@ -1743,23 +2011,47 @@
   write$ newline$
   "\providecommand{\url}[1]{#1}"
   write$ newline$
-  "\providecommand{\href}[2]{\url{#2}}"
-  write$ newline$
-  "\providecommand{\doi}[1]{DOI: \href{https://doi.org/#1}{#1}}"
-  write$ newline$
   "\expandafter\ifx\csname urlstyle\endcsname\relax\relax\else"
   write$ newline$
   "  \urlstyle{same}\fi"
   write$ newline$
+  show.doi
+    { "\providecommand{\href}[2]{\url{#2}}"
+      write$ newline$
+      "\providecommand{\doi}[1]{\href{https://doi.org/#1}{#1}}"
+      write$ newline$
+    }
+    'skip$
+  if$
 }
 
-EXECUTE {begin.bib}
-
-ITERATE {call.type$}
-
 FUNCTION {end.bib}
 { newline$
   "\end{thebibliography}" write$ newline$
 }
 
+READ
+
+EXECUTE {init.state.consts}
+
+EXECUTE {load.config}
+
+ITERATE {presort}
+
+SORT
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+EXECUTE {begin.bib}
+
+ITERATE {call.type$}
+
 EXECUTE {end.bib}

Added: trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-bachelor.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-bachelor.bst	                        (rev 0)
+++ trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-bachelor.bst	2019-05-02 22:31:15 UTC (rev 50932)
@@ -0,0 +1,1866 @@
+%%
+%% This is file `versions/thu/thuthesis-bachelor.bst',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% gbt7714.dtx  (with options: `2015,numerical')
+%% -------------------------------------------------------------------
+%% GB/T 7714-2015 BibTeX Style
+%% https://github.com/CTeX-org/gbt7714-bibtex-style
+%% Version: 2019/03/21 v1.1.1
+%% -------------------------------------------------------------------
+%% Copyright (C) 2016-2019 by Zeping Lee <zepinglee AT gmail.com>
+%% -------------------------------------------------------------------
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%    https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%% -------------------------------------------------------------------
+INTEGERS {
+  uppercase.name
+  max.num.authors
+  period.between.author.year
+  sentence.case.title
+  link.title
+  show.mark
+  slash.for.extraction
+  in.booktitle
+  italic.jounal
+  bold.journal.volume
+  show.missing.address.publisher
+  show.url
+  show.doi
+  show.note
+}
+
+FUNCTION {load.config}
+{
+  #1 'uppercase.name :=
+  #3 'max.num.authors :=
+  #1 'sentence.case.title :=
+  #0 'link.title :=
+  #1 'show.mark :=
+  #1 'slash.for.extraction :=
+  #0 'in.booktitle :=
+  #0 'italic.jounal :=
+  #0 'bold.journal.volume :=
+  #1 'show.missing.address.publisher :=
+  #1 'show.url :=
+  #1 'show.doi :=
+  #0 'show.note :=
+}
+
+ENTRY
+  { address
+    author
+    booktitle
+    date
+    doi
+    edition
+    editor
+    howpublished
+    institution
+    journal
+    key
+    language
+    mark
+    medium
+    note
+    number
+    organization
+    pages
+    publisher
+    school
+    series
+    title
+    translator
+    url
+    urldate
+    volume
+    year
+  }
+  { entry.lang entry.is.electronic entry.numbered }
+  { label extra.label sort.label short.list entry.mark entry.url }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash }
+
+INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other }
+
+INTEGERS { charptr len }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+  #1 'mid.sentence :=
+  #2 'after.sentence :=
+  #3 'after.block :=
+  #4 'after.slash :=
+  #3 'lang.zh :=
+  #4 'lang.ja :=
+  #1 'lang.en :=
+  #2 'lang.ru :=
+  #0 'lang.other :=
+}
+
+FUNCTION {bbl.anonymous}
+{ entry.lang lang.zh =
+    { "佚名" }
+    { "Anon" }
+  if$
+}
+
+FUNCTION {bbl.space}
+{ entry.lang lang.zh =
+    { "\ " }
+    { " " }
+  if$
+}
+
+FUNCTION {bbl.et.al}
+{ entry.lang lang.zh =
+    { "等" }
+    { entry.lang lang.ja =
+        { "他" }
+        { entry.lang lang.ru =
+            { "идр" }
+            { "et~al." }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {citation.et.al}
+{ bbl.et.al }
+
+FUNCTION {bbl.colon} { ": " }
+
+FUNCTION {bbl.wide.space} { "\quad " }
+
+FUNCTION {bbl.slash} { "//\allowbreak " }
+
+FUNCTION {bbl.sine.loco}
+{ entry.lang lang.zh =
+    { "[出版地不详]" }
+    { "[S.l.]" }
+  if$
+}
+
+FUNCTION {bbl.sine.nomine}
+{ entry.lang lang.zh =
+    { "[出版者不详]" }
+    { "[s.n.]" }
+  if$
+}
+
+FUNCTION {bbl.sine.loco.sine.nomine}
+{ entry.lang lang.zh =
+    { "[出版地不详: 出版者不详]" }
+    { "[S.l.: s.n.]" }
+  if$
+}
+
+FUNCTION {not}
+{   { #0 }
+    { #1 }
+  if$
+}
+
+FUNCTION {and}
+{   'skip$
+    { pop$ #0 }
+  if$
+}
+
+FUNCTION {or}
+{   { pop$ #1 }
+    'skip$
+  if$
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+  output.state mid.sentence =
+    { ", " * write$ }
+    { output.state after.block =
+        { add.period$ write$
+          newline$
+          "\newblock " write$
+        }
+        { output.state before.all =
+            'write$
+            { output.state after.slash =
+                { bbl.slash * write$
+                  newline$
+                }
+                { add.period$ " " * write$ }
+              if$
+            }
+          if$
+        }
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull
+  if$
+}
+
+FUNCTION {output.after}
+{ 't :=
+  duplicate$ empty$
+    'pop$
+    { 's :=
+      output.state mid.sentence =
+        { t * write$ }
+        { output.state after.block =
+            { add.period$ write$
+              newline$
+              "\newblock " write$
+            }
+            { output.state before.all =
+                'write$
+                { output.state after.slash =
+                    { bbl.slash * write$ }
+                    { add.period$ " " * write$ }
+                  if$
+                }
+              if$
+            }
+          if$
+          mid.sentence 'output.state :=
+        }
+      if$
+      s
+    }
+  if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+  duplicate$ empty$
+    { pop$ "empty " t * " in " * cite$ * warning$ }
+    'output.nonnull
+  if$
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+  write$
+  newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+    'skip$
+    { output.state after.slash =
+        'skip$
+        { after.block 'output.state := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+    'skip$
+    { output.state before.all =
+        'skip$
+        { output.state after.slash =
+            'skip$
+            { after.sentence 'output.state := }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {new.slash}
+{ output.state before.all =
+    'skip$
+    { slash.for.extraction
+        { after.slash 'output.state := }
+        { after.block 'output.state := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+    'skip$
+    'new.sentence
+  if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.sentence
+  if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+    { pop$ "" }
+    'skip$
+  if$
+}
+
+FUNCTION {italicize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "\textit{" swap$ * "}" * }
+  if$
+}
+
+INTEGERS { byte second.byte }
+
+INTEGERS { char.lang tmp.lang }
+
+STRINGS { tmp.str }
+
+FUNCTION {get.str.lang}
+{ 'tmp.str :=
+  lang.other 'tmp.lang :=
+  #1 'charptr :=
+  tmp.str text.length$ #1 + 'len :=
+    { charptr len < }
+    { tmp.str charptr #1 substring$ chr.to.int$ 'byte :=
+      byte #128 <
+        { charptr #1 + 'charptr :=
+          byte #64 > byte #91 < and byte #96 > byte #123 < and or
+            { lang.en 'char.lang := }
+            { lang.other 'char.lang := }
+          if$
+        }
+        { tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte :=
+          byte #224 <
+            { charptr #2 + 'charptr :=
+              byte #207 > byte #212 < and
+              byte #212 = second.byte #176 < and or
+                { lang.ru 'char.lang := }
+                { lang.other 'char.lang := }
+              if$
+            }
+            { byte #240 <
+                { charptr #3 + 'charptr :=
+                  byte #227 > byte #234 < and
+                    { lang.zh 'char.lang := }
+                    { byte #227 =
+                        { second.byte #143 >
+                            { lang.zh 'char.lang := }
+                            { second.byte #128 > second.byte #132 < and
+                                { lang.ja 'char.lang := }
+                                { lang.other 'char.lang := }
+                              if$
+                            }
+                          if$
+                        }
+                        { byte #239 =
+                          second.byte #163 > second.byte #172 < and and
+                            { lang.zh 'char.lang := }
+                            { lang.other 'char.lang := }
+                          if$
+                        }
+                      if$
+                    }
+                  if$
+                }
+                { charptr #4 + 'charptr :=
+                  byte #240 = second.byte #159 > and
+                    { lang.zh 'char.lang := }
+                    { lang.other 'char.lang := }
+                  if$
+                }
+              if$
+            }
+          if$
+        }
+      if$
+      char.lang tmp.lang >
+        { char.lang 'tmp.lang := }
+        'skip$
+      if$
+    }
+  while$
+  tmp.lang
+}
+
+FUNCTION {check.entry.lang}
+{ author field.or.null
+  title field.or.null *
+  get.str.lang
+}
+
+FUNCTION {set.entry.lang}
+{ language empty$
+    { check.entry.lang }
+    { language "english" = language "american" = or language "british" = or
+        { lang.en }
+        { language "chinese" =
+            { lang.zh }
+            { language "japanese" =
+                { lang.ja }
+                { language "russian" =
+                    { lang.ru }
+                    { check.entry.lang }
+                  if$
+                }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+  'entry.lang :=
+}
+
+FUNCTION {set.entry.numbered}
+{ type$ "patent" =
+  type$ "standard" = or
+  type$ "techreport" = or
+    { #1 'entry.numbered := }
+    { #0 'entry.numbered := }
+  if$
+}
+
+INTEGERS { nameptr namesleft numnames name.lang }
+
+FUNCTION {format.names}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
+      nameptr max.num.authors >
+        { bbl.et.al
+          #1 'namesleft :=
+        }
+        { t "others" =
+            { bbl.et.al }
+            { t get.str.lang 'name.lang :=
+              name.lang lang.en =
+                { t #1 "{vv~}{ll}{~f{~}}" format.name$
+                  uppercase.name
+                    { "u" change.case$ }
+                    'skip$
+                  if$
+                  t #1 "{, jj}" format.name$ *
+                }
+                { t #1 "{ll}{ff}" format.name$ }
+              if$
+            }
+          if$
+        }
+      if$
+      nameptr #1 >
+        { ", " swap$ * * }
+        'skip$
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {format.key}
+{ empty$
+    { key field.or.null }
+    { "" }
+  if$
+}
+
+FUNCTION {format.authors}
+{ author empty$ not
+    { author format.names }
+    { "empty author in " cite$ * warning$
+      ""
+    }
+  if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+    { "" }
+    { editor format.names }
+  if$
+}
+
+FUNCTION {format.translators}
+{ translator empty$
+    { "" }
+    { translator format.names
+      entry.lang lang.zh =
+        { translator num.names$ #3 >
+            { "译" * }
+            { ", 译" * }
+          if$
+        }
+        'skip$
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.full.names}
+{'s :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
+      t get.str.lang 'name.lang :=
+      name.lang lang.en =
+        { t #1 "{vv~}{ll}" format.name$ 't := }
+        { t #1 "{ll}{ff}" format.name$ 't := }
+      if$
+      nameptr #1 >
+        {
+          namesleft #1 >
+            { ", " * t * }
+            {
+              numnames #2 >
+                { "," * }
+                'skip$
+              if$
+              t "others" =
+                { " et~al." * }
+                { " and " * t * }
+              if$
+            }
+          if$
+        }
+        't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {author.editor.full}
+{ author empty$
+    { editor empty$
+        { "" }
+        { editor format.full.names }
+      if$
+    }
+    { author format.full.names }
+  if$
+}
+
+FUNCTION {author.full}
+{ author empty$
+    { "" }
+    { author format.full.names }
+  if$
+}
+
+FUNCTION {editor.full}
+{ editor empty$
+    { "" }
+    { editor format.full.names }
+  if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+  type$ "inbook" =
+  or
+    'author.editor.full
+    { type$ "collection" =
+      type$ "proceedings" =
+      or
+        'editor.full
+        'author.full
+      if$
+    }
+  if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+  "\bibitem[" write$
+  label write$
+  ")" make.full.names duplicate$ short.list =
+     { pop$ }
+     { * }
+  if$
+  's :=
+  s text.length$ 'charptr :=
+    { charptr #0 > }
+    { s charptr #1 substring$ "]" =
+        { #0 'charptr := }
+        { charptr #1 - 'charptr := }
+      if$
+    }
+  while$
+  charptr #0 >
+    { "{" s * "}" * }
+    { s }
+  if$
+  "]{" * write$
+  cite$ write$
+  "}" write$
+  newline$
+  ""
+  before.all 'output.state :=
+}
+
+FUNCTION {change.sentence.case}
+{ entry.lang lang.en =
+    { "t" change.case$ }
+    'skip$
+  if$
+}
+
+FUNCTION {add.link}
+{ url empty$ not
+    { "\href{" url * "}{" * swap$ * "}" * }
+    { doi empty$ not
+        { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
+        'skip$
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+    { "" }
+    { title
+      sentence.case.title
+        'change.sentence.case
+        'skip$
+      if$
+      entry.numbered number empty$ not and
+        { bbl.colon * number * }
+        'skip$
+      if$
+      link.title
+        'add.link
+        'skip$
+      if$
+    }
+  if$
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {is.digit}
+{ duplicate$ empty$
+    { pop$ #0 }
+    { chr.to.int$
+      duplicate$ "0" chr.to.int$ <
+      { pop$ #0 }
+      { "9" chr.to.int$ >
+          { #0 }
+          { #1 }
+        if$
+      }
+    if$
+    }
+  if$
+}
+
+FUNCTION {is.number}
+{ 's :=
+  s empty$
+    { #0 }
+    { s text.length$ 'charptr :=
+        { charptr #0 >
+          s charptr #1 substring$ is.digit
+          and
+        }
+        { charptr #1 - 'charptr := }
+      while$
+      charptr not
+    }
+  if$
+}
+
+FUNCTION {format.volume}
+{ volume empty$ not
+    { volume is.number
+        { entry.lang lang.zh =
+            { "第 " volume * " 卷" * }
+            { "volume" volume tie.or.space.connect }
+          if$
+        }
+        { volume }
+      if$
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {format.number}
+{ number empty$ not
+    { number is.number
+        { entry.lang lang.zh =
+            { "第 " number * " 册" * }
+            { "number" number tie.or.space.connect }
+          if$
+        }
+        { number }
+      if$
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {format.volume.number}
+{ volume empty$ not
+    { format.volume }
+    { format.number }
+  if$
+}
+
+FUNCTION {format.title.vol.num}
+{ title
+  sentence.case.title
+    'change.sentence.case
+    'skip$
+  if$
+  entry.numbered
+    { number empty$ not
+        { bbl.colon * number * }
+        'skip$
+      if$
+    }
+    { format.volume.number 's :=
+      s empty$ not
+        { bbl.colon * s * }
+        'skip$
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.series.vol.num.title}
+{ format.volume.number 's :=
+  series empty$ not
+    { series
+      sentence.case.title
+        'change.sentence.case
+        'skip$
+      if$
+      entry.numbered
+        { bbl.wide.space * }
+        { bbl.colon *
+          s empty$ not
+            { s * bbl.wide.space * }
+            'skip$
+          if$
+        }
+      if$
+      title *
+      sentence.case.title
+        'change.sentence.case
+        'skip$
+      if$
+      entry.numbered number empty$ not and
+        { bbl.colon * number * }
+        'skip$
+      if$
+    }
+    { format.title.vol.num }
+  if$
+  link.title
+    'add.link
+    'skip$
+  if$
+}
+
+FUNCTION {format.booktitle.vol.num}
+{ booktitle
+  entry.numbered
+    'skip$
+    { format.volume.number 's :=
+      s empty$ not
+        { bbl.colon * s * }
+        'skip$
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.series.vol.num.booktitle}
+{ format.volume.number 's :=
+  series empty$ not
+    { series bbl.colon *
+      entry.numbered not s empty$ not and
+        { s * bbl.wide.space * }
+        'skip$
+      if$
+      booktitle *
+    }
+    { format.booktitle.vol.num }
+  if$
+  in.booktitle
+    { duplicate$ empty$ not entry.lang lang.en = and
+        { "In: " swap$ * }
+        'skip$
+      if$
+    }
+    'skip$
+  if$
+}
+
+FUNCTION {format.journal}
+{ journal
+  italic.jounal entry.lang lang.en = and
+    'italicize
+    'skip$
+  if$
+}
+
+FUNCTION {set.entry.mark}
+{ entry.mark empty$ not
+    'pop$
+    { mark empty$ not
+        { pop$ mark 'entry.mark := }
+        { 'entry.mark := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.mark}
+{ show.mark
+    { medium empty$ not
+        { entry.mark "/" * medium * 'entry.mark := }
+        { entry.is.electronic
+            { entry.mark "/OL" * 'entry.mark := }
+            'skip$
+          if$
+        }
+      if$
+      "\allowbreak[" entry.mark * "]" *
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {num.to.ordinal}
+{ duplicate$ text.length$ 'charptr :=
+  duplicate$ charptr #1 substring$ 's :=
+  s "1" =
+    { "st" * }
+    { s "2" =
+        { "nd" * }
+        { s "3" =
+            { "rd" * }
+            { "th" * }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+    { "" }
+    { edition is.number
+        { entry.lang lang.zh =
+            { edition " 版" * }
+            { edition num.to.ordinal " ed." * }
+          if$
+        }
+        { entry.lang lang.en =
+            { edition change.sentence.case 's :=
+              s "Revised" = s "Revised edition" = or
+                { "Rev. ed." }
+                { s " ed." *}
+              if$
+            }
+            { edition }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.publisher}
+{ publisher empty$ not
+    { publisher }
+    { school empty$ not
+        { school }
+        { organization empty$ not
+            { organization }
+            { institution empty$ not
+                { institution }
+                { "" }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.address.publisher}
+{ address empty$ not
+    { address
+      format.publisher empty$ not
+        { bbl.colon * format.publisher * }
+        { entry.is.electronic not show.missing.address.publisher and
+            { bbl.colon * bbl.sine.nomine * }
+            'skip$
+          if$
+        }
+      if$
+    }
+    { entry.is.electronic not show.missing.address.publisher and
+        { format.publisher empty$ not
+            { bbl.sine.loco bbl.colon * format.publisher * }
+            { bbl.sine.loco.sine.nomine }
+          if$
+        }
+        { format.publisher empty$ not
+            { format.publisher }
+            { "" }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {extract.before.dash}
+{ duplicate$ empty$
+    { pop$ "" }
+    { 's :=
+      #1 'charptr :=
+      s text.length$ #1 + 'len :=
+        { charptr len <
+          s charptr #1 substring$ "-" = not
+          and
+        }
+        { charptr #1 + 'charptr := }
+      while$
+      s #1 charptr #1 - substring$
+    }
+  if$
+}
+
+FUNCTION {extract.after.dash}
+{ duplicate$ empty$
+    { pop$ "" }
+    { 's :=
+      #1 'charptr :=
+      s text.length$ #1 + 'len :=
+        { charptr len <
+          s charptr #1 substring$ "-" = not
+          and
+        }
+        { charptr #1 + 'charptr := }
+      while$
+        { charptr len <
+          s charptr #1 substring$ "-" =
+          and
+        }
+        { charptr #1 + 'charptr := }
+      while$
+      s charptr global.max$ substring$
+    }
+  if$
+}
+
+FUNCTION {contains.dash}
+{ duplicate$ empty$
+    { pop$ #0 }
+    { 's :=
+        { s empty$ not
+          s #1 #1 substring$ "-" = not
+          and
+        }
+        { s #2 global.max$ substring$ 's := }
+      while$
+      s empty$ not
+    }
+  if$
+}
+
+FUNCTION {format.year}
+{ year empty$ not
+    { year extract.before.dash }
+    { date empty$ not
+        { date extract.before.dash }
+        { "empty year in " cite$ * warning$
+          urldate empty$ not
+            { "[" urldate extract.before.dash * "]" * }
+            { "" }
+          if$
+        }
+      if$
+    }
+  if$
+  extra.label *
+}
+
+FUNCTION {format.date}
+{ type$ "patent" = type$ "newspaper" = or
+  date empty$ not and
+    { date }
+    { year }
+  if$
+}
+
+FUNCTION {format.editdate}
+{ date empty$ not
+    { "\allowbreak(" date * ")" * }
+    { "" }
+  if$
+}
+
+FUNCTION {format.urldate}
+{ urldate empty$ not entry.is.electronic and
+    { "\allowbreak[" urldate * "]" * }
+    { "" }
+  if$
+}
+
+FUNCTION {hyphenate}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { "-" *
+            { t #1 #1 substring$ "-" = }
+            { t #2 global.max$ substring$ 't := }
+          while$
+        }
+        { t #1 #1 substring$ *
+          t #2 global.max$ substring$ 't :=
+        }
+      if$
+    }
+  while$
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+    { "" }
+    { pages hyphenate }
+  if$
+}
+
+FUNCTION {format.journal.volume}
+{ volume empty$ not
+    { bold.journal.volume
+        { "\textbf{" volume * "}" * }
+        { volume }
+      if$
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {format.journal.number}
+{ number empty$ not
+    { "\penalty0 (" number * ")" * }
+    { "" }
+  if$
+}
+
+FUNCTION {format.journal.pages}
+{ pages empty$
+    { "" }
+    { ":\penalty0 " pages hyphenate * }
+  if$
+}
+
+FUNCTION {format.periodical.year.volume.number}
+{ year empty$ not
+    { year extract.before.dash }
+    { "empty year in periodical " cite$ * warning$ }
+  if$
+  volume empty$ not
+    { ", " * volume extract.before.dash * }
+    'skip$
+  if$
+  number empty$ not
+    { "\penalty0 (" * number extract.before.dash * ")" * }
+    'skip$
+  if$
+  year contains.dash
+    { "--" *
+      year extract.after.dash empty$
+      volume extract.after.dash empty$ and
+      number extract.after.dash empty$ and not
+        { year extract.after.dash empty$ not
+            { year extract.after.dash * }
+            { year extract.before.dash * }
+          if$
+          volume empty$ not
+            { ", " * volume extract.after.dash * }
+            'skip$
+          if$
+          number empty$ not
+            { "\penalty0 (" * number extract.after.dash * ")" * }
+            'skip$
+          if$
+        }
+        'skip$
+      if$
+    }
+    'skip$
+  if$
+}
+
+FUNCTION {check.url}
+{ url empty$ not
+    { "\url{" url * "}" * 'entry.url :=
+      #1 'entry.is.electronic :=
+    }
+    { howpublished empty$ not
+        { howpublished #1 #5 substring$ "\url{" =
+            { howpublished 'entry.url :=
+              #1 'entry.is.electronic :=
+            }
+            'skip$
+          if$
+        }
+        { note empty$ not
+            { note #1 #5 substring$ "\url{" =
+                { note 'entry.url :=
+                  #1 'entry.is.electronic :=
+                }
+                'skip$
+              if$
+            }
+            'skip$
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.url}
+{ entry.url empty$ not
+    { new.block entry.url }
+    { "" }
+  if$
+}
+
+FUNCTION {check.doi}
+{ doi empty$ not
+    { #1 'entry.is.electronic := }
+    'skip$
+  if$
+}
+
+FUNCTION {is.in.url}
+{ 's :=
+  s empty$
+    { #1 }
+    { entry.url empty$
+        { #0 }
+        { s text.length$ 'len :=
+          entry.url text.length$ 'charptr :=
+            { entry.url charptr len substring$ s = not
+              charptr #0 >
+              and
+            }
+            { charptr #1 - 'charptr := }
+          while$
+          charptr
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.doi}
+{ ""
+  doi empty$ not show.doi and
+    { "" 's :=
+      doi 't :=
+      #0 'numnames :=
+        { t empty$ not}
+        { t #1 #1 substring$ 'tmp.str :=
+          tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or
+            { t #2 #1 substring$ empty$
+                { s tmp.str * 's := }
+                'skip$
+              if$
+              s empty$ s is.in.url or
+                'skip$
+                { numnames #1 + 'numnames :=
+                  numnames #1 >
+                    { ", " * }
+                    { "DOI: " * }
+                  if$
+                  "\doi{" s * "}" * *
+                }
+              if$
+              "" 's :=
+            }
+            { s tmp.str * 's := }
+          if$
+          t #2 global.max$ substring$ 't :=
+        }
+      while$
+      's :=
+      s empty$ not
+        { new.block s }
+        { "" }
+      if$
+    }
+    'skip$
+  if$
+}
+
+FUNCTION {check.electronic}
+{ "" 'entry.url :=
+  #0 'entry.is.electronic :=
+    'check.doi
+    'skip$
+  if$
+    'check.url
+    'skip$
+  if$
+  medium empty$ not
+    { medium "MT" = medium "DK" = or medium "CD" = or medium "OL" = or
+        { #1 'entry.is.electronic := }
+        'skip$
+      if$
+    }
+    'skip$
+  if$
+}
+
+FUNCTION {format.note}
+{ note empty$ not show.note and
+    { note }
+    { "" }
+  if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$
+  year empty$
+  and and
+  key empty$ not and
+    { "all relevant fields are empty in " cite$ * warning$ }
+    'skip$
+  if$
+}
+
+FUNCTION {monograph}
+{ output.bibitem
+  author empty$ not
+    { format.authors }
+    { editor empty$ not
+        { format.editors }
+        { "empty author and editor in " cite$ * warning$
+          ""
+        }
+      if$
+    }
+  if$
+  output
+  new.block
+  format.series.vol.num.title "title" output.check
+  "M" set.entry.mark
+  format.mark "" output.after
+  new.block
+  format.translators output
+  new.sentence
+  format.edition output
+  new.block
+  format.address.publisher output
+  format.year "year" output.check
+  format.pages bbl.colon output.after
+  format.urldate "" output.after
+  format.url output
+  format.doi output
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+  format.authors output
+  author format.key output
+  new.block
+  format.title "title" output.check
+  "M" set.entry.mark
+  format.mark "" output.after
+  new.block
+  format.translators output
+  new.slash
+  format.editors output
+  new.block
+  format.series.vol.num.booktitle "booktitle" output.check
+  new.block
+  format.edition output
+  new.block
+  format.address.publisher output
+  format.year "year" output.check
+  format.pages bbl.colon output.after
+  format.urldate "" output.after
+  format.url output
+  format.doi output
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {periodical}
+{ output.bibitem
+  format.authors output
+  author format.key output
+  new.block
+  format.title "title" output.check
+  "J" set.entry.mark
+  format.mark "" output.after
+  new.block
+  format.periodical.year.volume.number output
+  new.block
+  format.address.publisher output
+  format.date "year" output.check
+  format.urldate "" output.after
+  format.url output
+  format.doi output
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {article}
+{ output.bibitem
+  format.authors output
+  author format.key output
+  new.block
+  format.title "title" output.check
+  "J" set.entry.mark
+  format.mark "" output.after
+  new.block
+  format.journal "journal" output.check
+  format.date "year" output.check
+  format.journal.volume output
+  format.journal.number "" output.after
+  format.journal.pages "" output.after
+  format.urldate "" output.after
+  format.url output
+  format.doi output
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {patent}
+{ output.bibitem
+  format.authors output
+  author format.key output
+  new.block
+  format.title "title" output.check
+  "P" set.entry.mark
+  format.mark "" output.after
+  new.block
+  format.date "year" output.check
+  format.urldate "" output.after
+  format.url output
+  format.doi output
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {electronic}
+{ #1 #1 check.electronic
+  #1 'entry.is.electronic :=
+  output.bibitem
+  format.authors output
+  author format.key output
+  new.block
+  format.series.vol.num.title "title" output.check
+  "EB" set.entry.mark
+  format.mark "" output.after
+  new.block
+  format.address.publisher output
+  date empty$
+    { format.date output }
+    'skip$
+  if$
+  format.pages bbl.colon output.after
+  format.editdate "" output.after
+  format.urldate "" output.after
+  format.url output
+  format.doi output
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {misc}
+{ journal empty$ not
+    'article
+    { booktitle empty$ not
+        'incollection
+        { publisher empty$ not
+            'monograph
+            { entry.is.electronic
+                'electronic
+                { "Z" set.entry.mark
+                  monograph
+                }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+  empty.misc.check
+}
+
+FUNCTION {archive}
+{ "A" set.entry.mark
+  misc
+}
+
+FUNCTION {book} { monograph }
+
+FUNCTION {booklet} { book }
+
+FUNCTION {collection}
+{ "G" set.entry.mark
+  monograph
+}
+
+FUNCTION {database}
+{ "DB" set.entry.mark
+  electronic
+}
+
+FUNCTION {dataset}
+{ "DS" set.entry.mark
+  electronic
+}
+
+FUNCTION {inbook} { book }
+
+FUNCTION {inproceedings}
+{ "C" set.entry.mark
+  incollection
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {map}
+{ "CM" set.entry.mark
+  misc
+}
+
+FUNCTION {manual} { monograph }
+
+FUNCTION {mastersthesis}
+{ "D" set.entry.mark
+  monograph
+}
+
+FUNCTION {newspaper}
+{ "N" set.entry.mark
+  article
+}
+
+FUNCTION {online}
+{ "EB" set.entry.mark
+  electronic
+}
+
+FUNCTION {phdthesis} { mastersthesis }
+
+FUNCTION {proceedings}
+{ "C" set.entry.mark
+  monograph
+}
+
+FUNCTION {software}
+{ "CP" set.entry.mark
+  electronic
+}
+
+FUNCTION {standard}
+{ "S" set.entry.mark
+  misc
+}
+
+FUNCTION {techreport}
+{ "R" set.entry.mark
+  misc
+}
+
+FUNCTION {unpublished}
+{ "Z" set.entry.mark
+  misc
+}
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+FUNCTION {sortify}
+{ purify$
+  "l" change.case$
+}
+
+FUNCTION {chop.word}
+{ 's :=
+  'len :=
+  s #1 len substring$ =
+    { s len #1 + global.max$ substring$ }
+    's
+  if$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+  s #1 "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
+  t get.str.lang 'name.lang :=
+  name.lang lang.en =
+    { t #1 "{vv~}{ll}" format.name$}
+    { t #1 "{ll}{ff}" format.name$}
+  if$
+  s num.names$ #1 >
+    { bbl.space * citation.et.al * }
+    'skip$
+  if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+    { key empty$
+        { cite$ #1 #3 substring$ }
+        'key
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+    { editor empty$
+        { key empty$
+            { cite$ #1 #3 substring$ }
+            'key
+          if$
+        }
+        { editor format.lab.names }
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+    { key empty$
+        { organization empty$
+            { cite$ #1 #3 substring$ }
+            { "The " #4 organization chop.word #3 text.prefix$ }
+          if$
+        }
+        'key
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+    { key empty$
+        { organization empty$
+            { cite$ #1 #3 substring$ }
+            { "The " #4 organization chop.word #3 text.prefix$ }
+          if$
+        }
+        'key
+      if$
+    }
+    { editor format.lab.names }
+  if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+  type$ "inbook" =
+  or
+    'author.editor.key.label
+    { type$ "collection" =
+      type$ "proceedings" =
+      or
+        { editor empty$ not
+            'editor.key.organization.label
+            'author.key.organization.label
+          if$
+        }
+        'author.key.label
+      if$
+    }
+  if$
+  'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+  short.list
+  "("
+  *
+  format.year duplicate$ empty$
+  short.list key field.or.null = or
+     { pop$ "" }
+     'skip$
+  if$
+  *
+  'label :=
+}
+
+INTEGERS { seq.num }
+
+FUNCTION {init.seq}
+{ #0 'seq.num :=}
+
+FUNCTION {int.to.fix}
+{ "000000000" swap$ int.to.str$ *
+  #-1 #10 substring$
+}
+
+FUNCTION {presort}
+{ set.entry.lang
+  set.entry.numbered
+  show.url show.doi check.electronic
+  calc.label
+  label sortify
+  "    "
+  *
+  seq.num #1 + 'seq.num :=
+  seq.num  int.to.fix
+  'sort.label :=
+  sort.label *
+  #1 entry.max$ substring$
+  'sort.key$ :=
+}
+
+STRINGS { longest.label last.label next.extra }
+
+INTEGERS { longest.label.width last.extra.num number.label }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+  #0 int.to.chr$ 'last.label :=
+  "" 'next.extra :=
+  #0 'longest.label.width :=
+  #0 'last.extra.num :=
+  #0 'number.label :=
+}
+
+FUNCTION {forward.pass}
+{ last.label label =
+    { last.extra.num #1 + 'last.extra.num :=
+      last.extra.num int.to.chr$ 'extra.label :=
+    }
+    { "a" chr.to.int$ 'last.extra.num :=
+      "" 'extra.label :=
+      label 'last.label :=
+    }
+  if$
+  number.label #1 + 'number.label :=
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+    { "a" 'extra.label := }
+    'skip$
+  if$
+  extra.label 'next.extra :=
+  extra.label
+  duplicate$ empty$
+    'skip$
+    { "{\natexlab{" swap$ * "}}" * }
+  if$
+  'extra.label :=
+  label extra.label * 'label :=
+}
+
+FUNCTION {bib.sort.order}
+{ sort.label  'sort.key$ :=
+}
+
+FUNCTION {begin.bib}
+{   preamble$ empty$
+    'skip$
+    { preamble$ write$ newline$ }
+  if$
+  "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+  write$ newline$
+  "\providecommand{\natexlab}[1]{#1}"
+  write$ newline$
+  "\providecommand{\url}[1]{#1}"
+  write$ newline$
+  "\expandafter\ifx\csname urlstyle\endcsname\relax\relax\else"
+  write$ newline$
+  "  \urlstyle{same}\fi"
+  write$ newline$
+  show.doi
+    { "\providecommand{\href}[2]{\url{#2}}"
+      write$ newline$
+      "\providecommand{\doi}[1]{\href{https://doi.org/#1}{#1}}"
+      write$ newline$
+    }
+    'skip$
+  if$
+}
+
+FUNCTION {end.bib}
+{ newline$
+  "\end{thebibliography}" write$ newline$
+}
+
+READ
+
+EXECUTE {init.state.consts}
+
+EXECUTE {load.config}
+
+EXECUTE {init.seq}
+
+ITERATE {presort}
+
+SORT
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+EXECUTE {begin.bib}
+
+ITERATE {call.type$}
+
+EXECUTE {end.bib}


Property changes on: trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-bachelor.bst
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-numeric.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-numeric.bst	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-numeric.bst	2019-05-02 22:31:15 UTC (rev 50932)
@@ -1,26 +1,61 @@
 %%
-%% This is file `gbt7714-unsrt.bst',
+%% This is file `versions/thu/thuthesis-numeric.bst',
 %% generated with the docstrip utility.
 %%
 %% The original source files were:
 %%
-%% gbt7714.dtx  (with options: `numerical')
-%% 
-%% Copyright (C) 2016-2018 by Zeping Lee <zepinglee AT gmail.com>
-%% 
+%% gbt7714.dtx  (with options: `thu,2005,numerical')
+%% -------------------------------------------------------------------
+%% GB/T 7714-2015 BibTeX Style
+%% https://github.com/CTeX-org/gbt7714-bibtex-style
+%% Version: 2019/03/21 v1.1.1
+%% -------------------------------------------------------------------
+%% Copyright (C) 2016-2019 by Zeping Lee <zepinglee AT gmail.com>
+%% -------------------------------------------------------------------
 %% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either
-%% version 1.2 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.2 or later is part of all distributions of
-%% LaTeX version 1999/12/01 or later.
-%% 
-%% This BibTeX style file is derived from `plainnat.bst' by Patrick W Daly,
-%% which was designed for use with the `natbib.sty' package.
-%% 
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%    https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%% -------------------------------------------------------------------
+INTEGERS {
+  uppercase.name
+  max.num.authors
+  period.between.author.year
+  sentence.case.title
+  link.title
+  show.mark
+  slash.for.extraction
+  in.booktitle
+  italic.jounal
+  bold.journal.volume
+  show.missing.address.publisher
+  show.url
+  show.doi
+  show.note
+}
+
+FUNCTION {load.config}
+{
+  #1 'uppercase.name :=
+  #0 'uppercase.name :=
+  #3 'max.num.authors :=
+  #1 'sentence.case.title :=
+  #0 'link.title :=
+  #1 'show.mark :=
+  #1 'slash.for.extraction :=
+  #0 'in.booktitle :=
+  #0 'italic.jounal :=
+  #0 'bold.journal.volume :=
+  #1 'show.missing.address.publisher :=
+  #1 'show.url :=
+  #1 'show.doi :=
+  #0 'show.doi :=
+  #0 'show.note :=
+}
+
 ENTRY
   { address
     author
@@ -29,6 +64,7 @@
     doi
     edition
     editor
+    howpublished
     institution
     journal
     key
@@ -35,10 +71,10 @@
     language
     mark
     medium
+    note
     number
     organization
     pages
-    pinyin
     publisher
     school
     series
@@ -49,14 +85,14 @@
     volume
     year
   }
-  { entry.lang }
-  { label extra.label sort.label short.list entry.mark }
+  { entry.lang entry.is.electronic entry.numbered }
+  { label extra.label sort.label short.list entry.mark entry.url }
 
 INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash }
 
 INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other }
 
-INTEGERS { charptr stringlength }
+INTEGERS { charptr len }
 
 FUNCTION {init.state.consts}
 { #0 'before.all :=
@@ -71,34 +107,63 @@
   #0 'lang.other :=
 }
 
-STRINGS { s t }
+FUNCTION {bbl.anonymous}
+{ entry.lang lang.zh =
+    { "佚名" }
+    { "Anon" }
+  if$
+}
 
-FUNCTION {debug}
-{ 's :=
-  duplicate$
-  "DEBUG: " s * " -> `" *
-  swap$ * "'" *
-  top$
+FUNCTION {bbl.space}
+{ entry.lang lang.zh =
+    { "\ " }
+    { " " }
+  if$
 }
 
-FUNCTION {debug.int}
-{ 's :=
-  duplicate$ int.to.str$
-  "DEBUG: " s * " == " *
-  swap$ *
-  top$
+FUNCTION {bbl.et.al}
+{ entry.lang lang.zh =
+    { "等" }
+    { entry.lang lang.ja =
+        { "他" }
+        { entry.lang lang.ru =
+            { "идр" }
+            { "et~al." }
+          if$
+        }
+      if$
+    }
+  if$
 }
 
-FUNCTION {punct.colon}
-{ ": "
+FUNCTION {citation.et.al}
+{ bbl.et.al }
+
+FUNCTION {bbl.colon} { ": " }
+
+FUNCTION {bbl.wide.space} { "\ " }
+
+FUNCTION {bbl.slash} { "//\allowbreak " }
+
+FUNCTION {bbl.sine.loco}
+{ entry.lang lang.zh =
+    { "[出版地不详]" }
+    { "[S.l.]" }
+  if$
 }
 
-FUNCTION {punct.slash}
-{ "//\allowbreak{}"
+FUNCTION {bbl.sine.nomine}
+{ entry.lang lang.zh =
+    { "[出版者不详]" }
+    { "[s.n.]" }
+  if$
 }
 
-FUNCTION {punct.space}
-{ " "
+FUNCTION {bbl.sine.loco.sine.nomine}
+{ entry.lang lang.zh =
+    { "[出版地不详: 出版者不详]" }
+    { "[S.l.: s.n.]" }
+  if$
 }
 
 FUNCTION {not}
@@ -119,6 +184,8 @@
   if$
 }
 
+STRINGS { s t }
+
 FUNCTION {output.nonnull}
 { 's :=
   output.state mid.sentence =
@@ -131,7 +198,9 @@
         { output.state before.all =
             'write$
             { output.state after.slash =
-                { punct.slash * write$ }
+                { bbl.slash * write$
+                  newline$
+                }
                 { add.period$ " " * write$ }
               if$
             }
@@ -166,7 +235,7 @@
             { output.state before.all =
                 'write$
                 { output.state after.slash =
-                    { punct.slash * write$ }
+                    { bbl.slash * write$ }
                     { add.period$ " " * write$ }
                   if$
                 }
@@ -190,13 +259,7 @@
 }
 
 FUNCTION {fin.entry}
-{ type$ "book" =
-  type$ "inbook" = or
-  type$ "incollection" = or
-  type$ "collection" = or
-    'skip$
-    'add.period$
-  if$
+{ add.period$
   write$
   newline$
 }
@@ -230,7 +293,11 @@
 FUNCTION {new.slash}
 { output.state before.all =
     'skip$
-    { after.slash 'output.state := }
+    { slash.for.extraction
+        { after.slash 'output.state := }
+        { after.block 'output.state := }
+      if$
+    }
   if$
 }
 
@@ -273,35 +340,15 @@
   if$
 }
 
-FUNCTION {emphasize}
+FUNCTION {italicize}
 { duplicate$ empty$
     { pop$ "" }
-    { "\emph{" swap$ * "}" * }
+    { "\textit{" swap$ * "}" * }
   if$
 }
 
-INTEGERS { ascii }
+INTEGERS { byte second.byte }
 
-FUNCTION {get.char.lang}
-{ chr.to.int$ 'ascii :=
-  ascii #64 > ascii #91 < and ascii #96 > ascii #123 < and or
-    { lang.en }
-    { ascii #227 > ascii #234 < and
-        { lang.zh }
-        { ascii #227 =
-            { lang.ja }
-            { ascii #207 > ascii #212 < and
-                { lang.ru }
-                { lang.en }
-              if$
-            }
-          if$
-        }
-      if$
-    }
-  if$
-}
-
 INTEGERS { char.lang tmp.lang }
 
 STRINGS { tmp.str }
@@ -309,47 +356,106 @@
 FUNCTION {get.str.lang}
 { 'tmp.str :=
   lang.other 'tmp.lang :=
-  tmp.str empty$
-    { "Empty string!" warning$ }
-    { #1 'charptr :=
-      tmp.str text.length$ #1 + 'stringlength :=
-        { charptr stringlength < }
-        { tmp.str charptr #1 substring$ get.char.lang 'char.lang :=
-          char.lang tmp.lang >
-            { char.lang 'tmp.lang := }
-            'skip$
+  #1 'charptr :=
+  tmp.str text.length$ #1 + 'len :=
+    { charptr len < }
+    { tmp.str charptr #1 substring$ chr.to.int$ 'byte :=
+      byte #128 <
+        { charptr #1 + 'charptr :=
+          byte #64 > byte #91 < and byte #96 > byte #123 < and or
+            { lang.en 'char.lang := }
+            { lang.other 'char.lang := }
           if$
-
-          char.lang lang.zh = char.lang lang.ja = or
-            { charptr #3 + 'charptr := }
-            { char.lang lang.ru =
-                { charptr #2 + 'charptr := }
-                { charptr #1 + 'charptr := }
+        }
+        { tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte :=
+          byte #224 <
+            { charptr #2 + 'charptr :=
+              byte #207 > byte #212 < and
+              byte #212 = second.byte #176 < and or
+                { lang.ru 'char.lang := }
+                { lang.other 'char.lang := }
               if$
             }
+            { byte #240 <
+                { charptr #3 + 'charptr :=
+                  byte #227 > byte #234 < and
+                    { lang.zh 'char.lang := }
+                    { byte #227 =
+                        { second.byte #143 >
+                            { lang.zh 'char.lang := }
+                            { second.byte #128 > second.byte #132 < and
+                                { lang.ja 'char.lang := }
+                                { lang.other 'char.lang := }
+                              if$
+                            }
+                          if$
+                        }
+                        { byte #239 =
+                          second.byte #163 > second.byte #172 < and and
+                            { lang.zh 'char.lang := }
+                            { lang.other 'char.lang := }
+                          if$
+                        }
+                      if$
+                    }
+                  if$
+                }
+                { charptr #4 + 'charptr :=
+                  byte #240 = second.byte #159 > and
+                    { lang.zh 'char.lang := }
+                    { lang.other 'char.lang := }
+                  if$
+                }
+              if$
+            }
           if$
         }
-      while$
+      if$
+      char.lang tmp.lang >
+        { char.lang 'tmp.lang := }
+        'skip$
+      if$
     }
-  if$
+  while$
   tmp.lang
 }
 
-FUNCTION {is.in.chinese}
-{ entry.lang lang.zh =
+FUNCTION {check.entry.lang}
+{ author field.or.null
+  title field.or.null *
+  get.str.lang
 }
 
-FUNCTION {format.et.al}
-{ is.in.chinese
-    { "等"}
-    { "et~al." }
+FUNCTION {set.entry.lang}
+{ language empty$
+    { check.entry.lang }
+    { language "english" = language "american" = or language "british" = or
+        { lang.en }
+        { language "chinese" =
+            { lang.zh }
+            { language "japanese" =
+                { lang.ja }
+                { language "russian" =
+                    { lang.ru }
+                    { check.entry.lang }
+                  if$
+                }
+              if$
+            }
+          if$
+        }
+      if$
+    }
   if$
+  'entry.lang :=
 }
 
-FUNCTION {format.anonymous}
-{ is.in.chinese
-    { "佚名" }
-    { "Anon" }
+FUNCTION {set.entry.numbered}
+{ type$ "patent" =
+  type$ "standard" = or
+  type$ "techreport" = or
+    { #1 'entry.numbered := }
+    { #0 'entry.numbered := }
   if$
 }
 
@@ -362,15 +468,21 @@
   numnames 'namesleft :=
     { namesleft #0 > }
     { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
-      nameptr #4 =
-        { format.et.al
+      nameptr max.num.authors >
+        { bbl.et.al
           #1 'namesleft :=
         }
         { t "others" =
-            { format.et.al }
+            { bbl.et.al }
             { t get.str.lang 'name.lang :=
               name.lang lang.en =
-                { t #1 "{vv~}{ll}{ f{~}}{, jj}" format.name$ }
+                { t #1 "{vv~}{ll}{~f{~}}" format.name$
+                  uppercase.name
+                    { "u" change.case$ }
+                    'skip$
+                  if$
+                  t #1 "{, jj}" format.name$ *
+                }
                 { t #1 "{ll}{ff}" format.name$ }
               if$
             }
@@ -395,9 +507,11 @@
 }
 
 FUNCTION {format.authors}
-{ author empty$
-    { "" }
+{ author empty$ not
     { author format.names }
+    { "empty author in " cite$ * warning$
+      ""
+    }
   if$
 }
 
@@ -412,7 +526,7 @@
 { translator empty$
     { "" }
     { translator format.names
-      is.in.chinese
+      entry.lang lang.zh =
         { translator num.names$ #3 >
             { "译" * }
             { ", 译" * }
@@ -424,46 +538,6 @@
   if$
 }
 
-FUNCTION {format.url}
-{ url empty$
-    { "" }
-    { new.block "\url{" url * "}" * }
-  if$
-}
-
-FUNCTION {format.doi}
-{ ""
-}
-
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    { title "t" change.case$ }
-  if$
-}
-
-FUNCTION {set.mark}
-{ entry.mark empty$ not
-    'pop$
-    { mark empty$ not
-        { pop$ mark 'entry.mark := }
-        { 'entry.mark := }
-      if$
-      medium empty$ not
-        { entry.mark "/" * medium * 'entry.mark := }
-        { url empty$ not
-            { entry.mark "/OL" * 'entry.mark := }
-            'skip$
-          if$
-        }
-      if$
-    }
-  if$
-}
-
-FUNCTION {format.mark}
-{ "\allowbreak[" entry.mark * "]" * }
-
 FUNCTION {format.full.names}
 {'s :=
   #1 'nameptr :=
@@ -547,7 +621,20 @@
   ")" make.full.names duplicate$ short.list =
      { pop$ }
      { * }
-   if$
+  if$
+  's :=
+  s text.length$ 'charptr :=
+    { charptr #0 > }
+    { s charptr #1 substring$ "]" =
+        { #0 'charptr := }
+        { charptr #1 - 'charptr := }
+      if$
+    }
+  while$
+  charptr #0 >
+    { "{" s * "}" * }
+    { s }
+  if$
   "]{" * write$
   cite$ write$
   "}" write$
@@ -556,122 +643,44 @@
   before.all 'output.state :=
 }
 
-FUNCTION {hyphenate}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-        { "-" *
-            { t #1 #1 substring$ "-" = }
-            { t #2 global.max$ substring$ 't := }
-          while$
-        }
-        { t #1 #1 substring$ *
-          t #2 global.max$ substring$ 't :=
-        }
-      if$
-    }
-  while$
-}
-
-FUNCTION {extract.before.dash}
-{ duplicate$ empty$
-    { pop$ "" }
-    { 's :=
-      #1 'charptr :=
-      s text.length$ #1 + 'stringlength :=
-        { charptr stringlength <
-          s charptr #1 substring$ "-" = not
-          and
-        }
-        { charptr #1 + 'charptr := }
-      while$
-      s #1 charptr #1 - substring$
-    }
+FUNCTION {change.sentence.case}
+{ entry.lang lang.en =
+    { "t" change.case$ }
+    'skip$
   if$
 }
 
-FUNCTION {extract.after.dash}
-{ duplicate$ empty$
-    { pop$ "" }
-    { 's :=
-      #1 'charptr :=
-      s text.length$ #1 + 'stringlength :=
-        { charptr stringlength <
-          s charptr #1 substring$ "-" = not
-          and
-        }
-        { charptr #1 + 'charptr := }
-      while$
-        { charptr stringlength <
-          s charptr #1 substring$ "-" =
-          and
-        }
-        { charptr #1 + 'charptr := }
-      while$
-      s charptr global.max$ substring$
+FUNCTION {add.link}
+{ url empty$ not
+    { "\href{" url * "}{" * swap$ * "}" * }
+    { doi empty$ not
+        { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
+        'skip$
+      if$
     }
   if$
 }
 
-FUNCTION {contains.dash}
-{ duplicate$ empty$
-    { pop$ #0 }
-    { 's :=
-        { s empty$ not
-          s #1 #1 substring$ "-" = not
-          and
-        }
-        { s #2 global.max$ substring$ 's := }
-      while$
-      s empty$ not
-    }
-  if$
-}
-
-FUNCTION {format.year}
-{ year empty$ not
-    { year extract.before.dash }
-    { date empty$ not
-        { date extract.before.dash }
-        { "empty year in " cite$ * warning$
-          ""
-        }
+FUNCTION {format.title}
+{ title empty$
+    { "" }
+    { title
+      sentence.case.title
+        'change.sentence.case
+        'skip$
       if$
+      entry.numbered number empty$ not and
+        { bbl.colon * number * }
+        'skip$
+      if$
+      link.title
+        'add.link
+        'skip$
+      if$
     }
   if$
-  extra.label *
 }
 
-FUNCTION {format.date}
-{ type$ "patent" = type$ "newspaper" = or
-  date empty$ not and
-    { date }
-    { year }
-  if$
-}
-
-FUNCTION {format.editdate}
-{ date empty$ not
-  type$ "newspaper" = not and
-  url empty$ not doi empty$ not or
-  and
-    { "\allowbreak(" date * ")" * }
-    { "" }
-  if$
-}
-
-FUNCTION {format.urldate}
-{ urldate empty$ not
-    { "\allowbreak[" urldate * "]" * }
-    { "" }
-  if$
-}
-
-FUNCTION {format.btitle}
-{ title emphasize
-}
-
 FUNCTION {tie.or.space.connect}
 { duplicate$ text.length$ #3 <
     { "~" }
@@ -720,11 +729,10 @@
 }
 
 FUNCTION {format.volume}
-{ volume empty$
-    { "" }
+{ volume empty$ not
     { volume is.number
-        { is.in.chinese
-            { "第" volume * "卷" * }
+        { entry.lang lang.zh =
+            { "第 " volume * " 卷" * }
             { "volume" volume tie.or.space.connect }
           if$
         }
@@ -731,15 +739,15 @@
         { volume }
       if$
     }
+    { "" }
   if$
 }
 
 FUNCTION {format.number}
-{ number empty$
-    { "" }
+{ number empty$ not
     { number is.number
-        { is.in.chinese
-            { "第" number * "册" * }
+        { entry.lang lang.zh =
+            { "第 " number * " 册" * }
             { "number" number tie.or.space.connect }
           if$
         }
@@ -746,6 +754,7 @@
         { number }
       if$
     }
+    { "" }
   if$
 }
 
@@ -756,45 +765,132 @@
   if$
 }
 
+FUNCTION {format.title.vol.num}
+{ title
+  sentence.case.title
+    'change.sentence.case
+    'skip$
+  if$
+  entry.numbered
+    { number empty$ not
+        { bbl.colon * number * }
+        'skip$
+      if$
+    }
+    { format.volume.number 's :=
+      s empty$ not
+        { bbl.colon * s * }
+        'skip$
+      if$
+    }
+  if$
+}
+
 FUNCTION {format.series.vol.num.title}
 { format.volume.number 's :=
   series empty$ not
-    { series ": " *
-      s empty$ not
-        { s * "\quad " * }
+    { series
+      sentence.case.title
+        'change.sentence.case
         'skip$
       if$
+      entry.numbered
+        { bbl.wide.space * }
+        { bbl.colon *
+          s empty$ not
+            { s * bbl.wide.space * }
+            'skip$
+          if$
+        }
+      if$
       title *
+      sentence.case.title
+        'change.sentence.case
+        'skip$
+      if$
+      entry.numbered number empty$ not and
+        { bbl.colon * number * }
+        'skip$
+      if$
     }
-    { title
+    { format.title.vol.num }
+  if$
+  link.title
+    'add.link
+    'skip$
+  if$
+}
+
+FUNCTION {format.booktitle.vol.num}
+{ booktitle
+  entry.numbered
+    'skip$
+    { format.volume.number 's :=
       s empty$ not
-        { ": " * s * }
+        { bbl.colon * s * }
         'skip$
       if$
     }
   if$
-  "t" change.case$
 }
 
 FUNCTION {format.series.vol.num.booktitle}
 { format.volume.number 's :=
   series empty$ not
-    { series ": " *
-      s empty$ not
-        { s * "\quad " * }
+    { series bbl.colon *
+      entry.numbered not s empty$ not and
+        { s * bbl.wide.space * }
         'skip$
       if$
       booktitle *
     }
-    { booktitle
-      s empty$ not
-        { ": " * s * }
+    { format.booktitle.vol.num }
+  if$
+  in.booktitle
+    { duplicate$ empty$ not entry.lang lang.en = and
+        { "In: " swap$ * }
         'skip$
       if$
     }
+    'skip$
   if$
 }
 
+FUNCTION {format.journal}
+{ journal
+  italic.jounal entry.lang lang.en = and
+    'italicize
+    'skip$
+  if$
+}
+
+FUNCTION {set.entry.mark}
+{ entry.mark empty$ not
+    'pop$
+    { mark empty$ not
+        { pop$ mark 'entry.mark := }
+        { 'entry.mark := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.mark}
+{ show.mark
+    { medium empty$ not
+        { entry.mark "/" * medium * 'entry.mark := }
+        { entry.is.electronic
+            { entry.mark "/OL" * 'entry.mark := }
+            'skip$
+          if$
+        }
+      if$
+      "\allowbreak[" entry.mark * "]" *
+    }
+    { "" }
+  if$
+}
+
 FUNCTION {num.to.ordinal}
 { duplicate$ text.length$ 'charptr :=
   duplicate$ charptr #1 substring$ 's :=
@@ -816,13 +912,13 @@
 { edition empty$
     { "" }
     { edition is.number
-        { is.in.chinese
-            { edition "版" * }
+        { entry.lang lang.zh =
+            { edition " 版" * }
             { edition num.to.ordinal " ed." * }
           if$
         }
         { entry.lang lang.en =
-            { edition "t" change.case$ 's :=
+            { edition change.sentence.case 's :=
               s "Revised" = s "Revised edition" = or
                 { "Rev. ed." }
                 { s " ed." *}
@@ -836,23 +932,6 @@
   if$
 }
 
-FUNCTION {format.sine.loco}
-{ is.in.chinese
-    { "[出版地不详]" }
-    { "[S.l.]" }
-  if$
-}
-
-FUNCTION {format.address}
-{ address }
-
-FUNCTION {format.sine.nomine}
-{ is.in.chinese
-    { "[出版者不详]" }
-    { "[s.n.]" }
-  if$
-}
-
 FUNCTION {format.publisher}
 { publisher empty$ not
     { publisher }
@@ -872,29 +951,22 @@
   if$
 }
 
-FUNCTION {format.sine.loco.sine.nomine}
-{ is.in.chinese
-    { "[出版地不详: 出版者不详]" }
-    { "[S.l.: s.n.]" }
-  if$
-}
-
 FUNCTION {format.address.publisher}
 { address empty$ not
     { address
       format.publisher empty$ not
-        { ": " * format.publisher * }
-        { url empty$ doi empty$ and
-            { ": " * format.sine.nomine * }
+        { bbl.colon * format.publisher * }
+        { entry.is.electronic not show.missing.address.publisher and
+            { bbl.colon * bbl.sine.nomine * }
             'skip$
           if$
         }
       if$
     }
-    { url empty$ doi empty$ and
+    { entry.is.electronic not show.missing.address.publisher and
         { format.publisher empty$ not
-            { format.sine.loco ": " * format.publisher * }
-            { format.sine.loco.sine.nomine }
+            { bbl.sine.loco bbl.colon * format.publisher * }
+            { bbl.sine.loco.sine.nomine }
           if$
         }
         { format.publisher empty$ not
@@ -907,6 +979,118 @@
   if$
 }
 
+FUNCTION {extract.before.dash}
+{ duplicate$ empty$
+    { pop$ "" }
+    { 's :=
+      #1 'charptr :=
+      s text.length$ #1 + 'len :=
+        { charptr len <
+          s charptr #1 substring$ "-" = not
+          and
+        }
+        { charptr #1 + 'charptr := }
+      while$
+      s #1 charptr #1 - substring$
+    }
+  if$
+}
+
+FUNCTION {extract.after.dash}
+{ duplicate$ empty$
+    { pop$ "" }
+    { 's :=
+      #1 'charptr :=
+      s text.length$ #1 + 'len :=
+        { charptr len <
+          s charptr #1 substring$ "-" = not
+          and
+        }
+        { charptr #1 + 'charptr := }
+      while$
+        { charptr len <
+          s charptr #1 substring$ "-" =
+          and
+        }
+        { charptr #1 + 'charptr := }
+      while$
+      s charptr global.max$ substring$
+    }
+  if$
+}
+
+FUNCTION {contains.dash}
+{ duplicate$ empty$
+    { pop$ #0 }
+    { 's :=
+        { s empty$ not
+          s #1 #1 substring$ "-" = not
+          and
+        }
+        { s #2 global.max$ substring$ 's := }
+      while$
+      s empty$ not
+    }
+  if$
+}
+
+FUNCTION {format.year}
+{ year empty$ not
+    { year extract.before.dash }
+    { date empty$ not
+        { date extract.before.dash }
+        { "empty year in " cite$ * warning$
+          urldate empty$ not
+            { "[" urldate extract.before.dash * "]" * }
+            { "" }
+          if$
+        }
+      if$
+    }
+  if$
+  extra.label *
+}
+
+FUNCTION {format.date}
+{ type$ "patent" = type$ "newspaper" = or
+  date empty$ not and
+    { date }
+    { year }
+  if$
+}
+
+FUNCTION {format.editdate}
+{ date empty$ not
+    { "\allowbreak(" date * ")" * }
+    { "" }
+  if$
+}
+
+FUNCTION {format.urldate}
+{ urldate empty$ not entry.is.electronic and
+    { "\allowbreak[" urldate * "]" * }
+    { "" }
+  if$
+}
+
+FUNCTION {hyphenate}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { "-" *
+            { t #1 #1 substring$ "-" = }
+            { t #2 global.max$ substring$ 't := }
+          while$
+        }
+        { t #1 #1 substring$ *
+          t #2 global.max$ substring$ 't :=
+        }
+      if$
+    }
+  while$
+}
+
 FUNCTION {format.pages}
 { pages empty$
     { "" }
@@ -915,7 +1099,15 @@
 }
 
 FUNCTION {format.journal.volume}
-{ volume }
+{ volume empty$ not
+    { bold.journal.volume
+        { "\textbf{" volume * "}" * }
+        { volume }
+      if$
+    }
+    { "" }
+  if$
+}
 
 FUNCTION {format.journal.number}
 { number empty$ not
@@ -924,10 +1116,17 @@
   if$
 }
 
+FUNCTION {format.journal.pages}
+{ pages empty$
+    { "" }
+    { ":\penalty0 " pages hyphenate * }
+  if$
+}
+
 FUNCTION {format.periodical.year.volume.number}
 { year empty$ not
     { year extract.before.dash }
-    { "No year in periodical " cite$ * warning$ }
+    { "empty year in periodical " cite$ * warning$ }
   if$
   volume empty$ not
     { ", " * volume extract.before.dash * }
@@ -962,92 +1161,146 @@
   if$
 }
 
-FUNCTION {format.in.ed.booktitle}
-{ booktitle empty$
-    { "" }
-    { editor empty$
-        { "In " booktitle emphasize * }
-        { "In " format.editors * ", " * booktitle emphasize * }
+FUNCTION {check.url}
+{ url empty$ not
+    { "\url{" url * "}" * 'entry.url :=
+      #1 'entry.is.electronic :=
+    }
+    { howpublished empty$ not
+        { howpublished #1 #5 substring$ "\url{" =
+            { howpublished 'entry.url :=
+              #1 'entry.is.electronic :=
+            }
+            'skip$
+          if$
+        }
+        { note empty$ not
+            { note #1 #5 substring$ "\url{" =
+                { note 'entry.url :=
+                  #1 'entry.is.electronic :=
+                }
+                'skip$
+              if$
+            }
+            'skip$
+          if$
+        }
       if$
     }
   if$
 }
 
-FUNCTION {empty.misc.check}
-{ author empty$ title empty$
-  year empty$
-  and and
-  key empty$ not and
-    { "all relevant fields are empty in " cite$ * warning$ }
+FUNCTION {format.url}
+{ entry.url empty$ not
+    { new.block entry.url }
+    { "" }
+  if$
+}
+
+FUNCTION {check.doi}
+{ doi empty$ not
+    { #1 'entry.is.electronic := }
     'skip$
   if$
 }
 
-FUNCTION {format.article.crossref}
-{ key empty$
-    { journal empty$
-        { "need key or journal for " cite$ * " to crossref " * crossref *
-          warning$
-          ""
+FUNCTION {is.in.url}
+{ 's :=
+  s empty$
+    { #1 }
+    { entry.url empty$
+        { #0 }
+        { s text.length$ 'len :=
+          entry.url text.length$ 'charptr :=
+            { entry.url charptr len substring$ s = not
+              charptr #0 >
+              and
+            }
+            { charptr #1 - 'charptr := }
+          while$
+          charptr
         }
-        { "In \emph{" journal * "}" * }
       if$
     }
-    { "In " }
   if$
-  " \citet{" * crossref * "}" *
 }
 
-FUNCTION {format.book.crossref}
-{ volume empty$
-    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
-      "In "
-    }
-    { "Volume" volume tie.or.space.connect
-      " of " *
-    }
-  if$
-  editor empty$
-  editor field.or.null author field.or.null =
-  or
-    { key empty$
-        { series empty$
-            { "need editor, key, or series for " cite$ * " to crossref " *
-              crossref * warning$
-              "" *
+FUNCTION {format.doi}
+{ ""
+  doi empty$ not show.doi and
+    { "" 's :=
+      doi 't :=
+      #0 'numnames :=
+        { t empty$ not}
+        { t #1 #1 substring$ 'tmp.str :=
+          tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or
+            { t #2 #1 substring$ empty$
+                { s tmp.str * 's := }
+                'skip$
+              if$
+              s empty$ s is.in.url or
+                'skip$
+                { numnames #1 + 'numnames :=
+                  numnames #1 >
+                    { ", " * }
+                    { "DOI: " * }
+                  if$
+                  "\doi{" s * "}" * *
+                }
+              if$
+              "" 's :=
             }
-            { "\emph{" * series * "}" * }
+            { s tmp.str * 's := }
           if$
+          t #2 global.max$ substring$ 't :=
         }
-        'skip$
+      while$
+      's :=
+      s empty$ not
+        { new.block s }
+        { "" }
       if$
     }
     'skip$
   if$
-  " \citet{" * crossref * "}" *
 }
 
-FUNCTION {format.incoll.inproc.crossref}
-{ editor empty$
-  editor field.or.null author field.or.null =
-  or
-    { key empty$
-        { booktitle empty$
-            { "need editor, key, or booktitle for " cite$ * " to crossref " *
-              crossref * warning$
-              ""
-            }
-            { "In \emph{" booktitle * "}" * }
-          if$
-        }
-        { "In " }
+FUNCTION {check.electronic}
+{ "" 'entry.url :=
+  #0 'entry.is.electronic :=
+    'check.doi
+    'skip$
+  if$
+    'check.url
+    'skip$
+  if$
+  medium empty$ not
+    { medium "MT" = medium "DK" = or medium "CD" = or medium "OL" = or
+        { #1 'entry.is.electronic := }
+        'skip$
       if$
     }
-    { "In " }
+    'skip$
   if$
-  " \citet{" * crossref * "}" *
 }
 
+FUNCTION {format.note}
+{ note empty$ not show.note and
+    { note }
+    { "" }
+  if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$
+  year empty$
+  and and
+  key empty$ not and
+    { "all relevant fields are empty in " cite$ * warning$ }
+    'skip$
+  if$
+}
+
 FUNCTION {monograph}
 { output.bibitem
   author empty$ not
@@ -1054,7 +1307,9 @@
     { format.authors }
     { editor empty$ not
         { format.editors }
-        { "" }
+        { "empty author and editor in " cite$ * warning$
+          ""
+        }
       if$
     }
   if$
@@ -1061,7 +1316,7 @@
   output
   new.block
   format.series.vol.num.title "title" output.check
-  "M" set.mark
+  "M" set.entry.mark
   format.mark "" output.after
   new.block
   format.translators output
@@ -1070,20 +1325,22 @@
   new.block
   format.address.publisher output
   format.year "year" output.check
-  format.pages punct.colon output.after
+  format.pages bbl.colon output.after
   format.urldate "" output.after
   format.url output
   format.doi output
+  new.block
+  format.note output
   fin.entry
 }
 
 FUNCTION {incollection}
 { output.bibitem
-  format.authors "author" output.check
+  format.authors output
   author format.key output
   new.block
   format.title "title" output.check
-  "M" set.mark
+  "M" set.entry.mark
   format.mark "" output.after
   new.block
   format.translators output
@@ -1096,20 +1353,22 @@
   new.block
   format.address.publisher output
   format.year "year" output.check
-  format.pages punct.colon output.after
+  format.pages bbl.colon output.after
   format.urldate "" output.after
   format.url output
   format.doi output
+  new.block
+  format.note output
   fin.entry
 }
 
 FUNCTION {periodical}
 { output.bibitem
-  format.authors "author" output.check
+  format.authors output
   author format.key output
   new.block
   format.title "title" output.check
-  "J" set.mark
+  "J" set.entry.mark
   format.mark "" output.after
   new.block
   format.periodical.year.volume.number output
@@ -1119,27 +1378,30 @@
   format.urldate "" output.after
   format.url output
   format.doi output
+  new.block
+  format.note output
   fin.entry
 }
 
-FUNCTION {article.in.journal}
+FUNCTION {article}
 { output.bibitem
-  format.authors "author" output.check
+  format.authors output
   author format.key output
   new.block
   format.title "title" output.check
-  "J" set.mark
+  "J" set.entry.mark
   format.mark "" output.after
   new.block
-  journal "journal" output.check
+  format.journal "journal" output.check
   format.date "year" output.check
-  volume output
+  format.journal.volume output
   format.journal.number "" output.after
-  format.pages punct.colon output.after
-  format.editdate "" output.after
+  format.journal.pages "" output.after
   format.urldate "" output.after
   format.url output
   format.doi output
+  new.block
+  format.note output
   fin.entry
 }
 
@@ -1148,13 +1410,8 @@
   format.authors output
   author format.key output
   new.block
-  format.title
-  number empty$ not
-    { punct.colon * number * }
-    'skip$
-  if$
-  "title" output.check
-  "P" set.mark
+  format.title "title" output.check
+  "P" set.entry.mark
   format.mark "" output.after
   new.block
   format.date "year" output.check
@@ -1161,16 +1418,20 @@
   format.urldate "" output.after
   format.url output
   format.doi output
+  new.block
+  format.note output
   fin.entry
 }
 
-FUNCTION {online}
-{ output.bibitem
+FUNCTION {electronic}
+{ #1 #1 check.electronic
+  #1 'entry.is.electronic :=
+  output.bibitem
   format.authors output
   author format.key output
   new.block
   format.series.vol.num.title "title" output.check
-  "EB" set.mark
+  "EB" set.entry.mark
   format.mark "" output.after
   new.block
   format.address.publisher output
@@ -1178,23 +1439,29 @@
     { format.date output }
     'skip$
   if$
-  format.pages punct.colon output.after
+  format.pages bbl.colon output.after
   format.editdate "" output.after
   format.urldate "" output.after
   format.url output
   format.doi output
+  new.block
+  format.note output
   fin.entry
 }
 
 FUNCTION {misc}
 { journal empty$ not
-    'article.in.journal
+    'article
     { booktitle empty$ not
         'incollection
-        { url empty$ not
-            'online
-            { "Z" set.mark
-              monograph
+        { publisher empty$ not
+            'monograph
+            { entry.is.electronic
+                'electronic
+                { "Z" set.entry.mark
+                  monograph
+                }
+              if$
             }
           if$
         }
@@ -1205,33 +1472,33 @@
 }
 
 FUNCTION {archive}
-{ "A" set.mark
+{ "A" set.entry.mark
   misc
 }
 
-FUNCTION {article} { misc }
-
 FUNCTION {book} { monograph }
 
+FUNCTION {booklet} { book }
+
 FUNCTION {collection}
-{ "G" set.mark
+{ "G" set.entry.mark
   monograph
 }
 
 FUNCTION {database}
-{ "DB" set.mark
-  misc
+{ "DB" set.entry.mark
+  electronic
 }
 
 FUNCTION {dataset}
-{ "DS" set.mark
-  misc
+{ "DS" set.entry.mark
+  electronic
 }
 
 FUNCTION {inbook} { book }
 
 FUNCTION {inproceedings}
-{ "C" set.mark
+{ "C" set.entry.mark
   incollection
 }
 
@@ -1238,53 +1505,65 @@
 FUNCTION {conference} { inproceedings }
 
 FUNCTION {map}
-{ "CM" set.mark
+{ "CM" set.entry.mark
   misc
 }
 
+FUNCTION {manual} { monograph }
+
 FUNCTION {mastersthesis}
-{ is.in.chinese
-    { "\thumasterbib{}" }
+{ lang.zh entry.lang =
+    { "硕士学位论文" }
     { "D" }
   if$
- set.mark
+  set.entry.mark
   monograph
 }
 
 FUNCTION {newspaper}
-{ "N" set.mark
-  article.in.journal
+{ "N" set.entry.mark
+  article
 }
 
+FUNCTION {online}
+{ "EB" set.entry.mark
+  electronic
+}
+
 FUNCTION {phdthesis}
-{ is.in.chinese
-    { "\thuphdbib{}" }
+{ lang.zh entry.lang =
+    { "博士学位论文" }
     { "D" }
   if$
- set.mark
+  set.entry.mark
   monograph
 }
 
 FUNCTION {proceedings}
-{ "C" set.mark
+{ "C" set.entry.mark
   monograph
 }
 
 FUNCTION {software}
-{ "CP" set.mark
-  misc
+{ "CP" set.entry.mark
+  electronic
 }
 
 FUNCTION {standard}
-{ "S" set.mark
+{ "S" set.entry.mark
   misc
 }
 
 FUNCTION {techreport}
-{ "R" set.mark
+{ "R" set.entry.mark
   misc
 }
 
+FUNCTION {unpublished}
+{ "Z" set.entry.mark
+  misc
+}
+
 FUNCTION {default.type} { misc }
 
 MACRO {jan} {"January"}
@@ -1352,41 +1631,11 @@
 
 MACRO {tcs} {"Theoretical Computer Science"}
 
-READ
-
-EXECUTE {init.state.consts}
-
-FUNCTION {set.entry.lang}
-{ language empty$
-    { author field.or.null title field.or.null * get.str.lang }
-    { language "english" = language "american" = or language "british" = or
-        { lang.en }
-        { language "chinese" =
-            { lang.zh }
-            { language "japanese" =
-                { lang.ja }
-                { language "russian" =
-                    { lang.ru }
-                    { lang.other }
-                  if$
-                }
-              if$
-            }
-          if$
-        }
-      if$
-    }
-  if$
-  'entry.lang :=
-}
-
 FUNCTION {sortify}
 { purify$
   "l" change.case$
 }
 
-INTEGERS { len }
-
 FUNCTION {chop.word}
 { 's :=
   'len :=
@@ -1405,7 +1654,7 @@
     { t #1 "{ll}{ff}" format.name$}
   if$
   s num.names$ #1 >
-    { "\ " * format.et.al * }
+    { bbl.space * citation.et.al * }
     'skip$
   if$
 }
@@ -1505,8 +1754,6 @@
 FUNCTION {init.seq}
 { #0 'seq.num :=}
 
-EXECUTE {init.seq}
-
 FUNCTION {int.to.fix}
 { "000000000" swap$ int.to.str$ *
   #-1 #10 substring$
@@ -1514,6 +1761,8 @@
 
 FUNCTION {presort}
 { set.entry.lang
+  set.entry.numbered
+  show.url show.doi check.electronic
   calc.label
   label sortify
   "    "
@@ -1526,10 +1775,6 @@
   'sort.key$ :=
 }
 
-ITERATE {presort}
-
-SORT
-
 STRINGS { longest.label last.label next.extra }
 
 INTEGERS { longest.label.width last.extra.num number.label }
@@ -1571,20 +1816,10 @@
   label extra.label * 'label :=
 }
 
-EXECUTE {initialize.longest.label}
-
-ITERATE {forward.pass}
-
-REVERSE {reverse.pass}
-
 FUNCTION {bib.sort.order}
 { sort.label  'sort.key$ :=
 }
 
-ITERATE {bib.sort.order}
-
-SORT
-
 FUNCTION {begin.bib}
 {   preamble$ empty$
     'skip$
@@ -1596,23 +1831,49 @@
   write$ newline$
   "\providecommand{\url}[1]{#1}"
   write$ newline$
-  "\providecommand{\href}[2]{\url{#2}}"
-  write$ newline$
-  "\providecommand{\doi}[1]{DOI: \href{https://doi.org/#1}{#1}}"
-  write$ newline$
   "\expandafter\ifx\csname urlstyle\endcsname\relax\relax\else"
   write$ newline$
   "  \urlstyle{same}\fi"
   write$ newline$
+  show.doi
+    { "\providecommand{\href}[2]{\url{#2}}"
+      write$ newline$
+      "\providecommand{\doi}[1]{\href{https://doi.org/#1}{#1}}"
+      write$ newline$
+    }
+    'skip$
+  if$
 }
 
-EXECUTE {begin.bib}
-
-ITERATE {call.type$}
-
 FUNCTION {end.bib}
 { newline$
   "\end{thebibliography}" write$ newline$
 }
 
+READ
+
+EXECUTE {init.state.consts}
+
+EXECUTE {load.config}
+
+EXECUTE {init.seq}
+
+ITERATE {presort}
+
+SORT
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+EXECUTE {begin.bib}
+
+ITERATE {call.type$}
+
 EXECUTE {end.bib}

Deleted: trunk/Master/texmf-dist/doc/latex/thuthesis/Makefile
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/Makefile	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/Makefile	2019-05-02 22:31:15 UTC (rev 50932)
@@ -1,111 +0,0 @@
-# Makefile for ThuThesis
-
-# Compiling method: latexmk/xelatex/pdflatex
-METHOD = latexmk
-# Set opts for latexmk if you use it
-LATEXMKOPTS = -xelatex -file-line-error -halt-on-error -interaction=nonstopmode
-# Basename of thesis
-THESISMAIN = main
-# Basename of shuji
-SHUJIMAIN = shuji
-
-PACKAGE=thuthesis
-SOURCES=$(PACKAGE).ins $(PACKAGE).dtx
-THESISCONTENTS=$(THESISMAIN).tex data/*.tex $(FIGURES)
-# NOTE: update this to reflect your local file types.
-FIGURES=$(wildcard figures/*.eps figures/*.pdf)
-BIBFILE=ref/*.bib
-BSTFILE=*.bst
-SHUJICONTENTS=$(SHUJIMAIN).tex
-CLSFILES=dtx-style.sty $(PACKAGE).cls $(PACKAGE).cfg
-
-# make deletion work on Windows
-ifdef SystemRoot
-	RM = del /Q
-	OPEN = start
-else
-	RM = rm -f
-	OPEN = open
-endif
-
-.PHONY: all clean distclean dist thesis viewthesis shuji viewshuji doc viewdoc cls check FORCE_MAKE
-
-all: doc thesis shuji
-
-cls: $(CLSFILES)
-
-$(CLSFILES): $(SOURCES)
-	latex $(PACKAGE).ins
-
-viewdoc: doc
-	$(OPEN) $(PACKAGE).pdf
-
-doc: $(PACKAGE).pdf
-
-viewthesis: thesis
-	$(OPEN) $(THESISMAIN).pdf
-
-thesis: $(THESISMAIN).pdf
-
-viewshuji: shuji
-	$(OPEN) $(SHUJIMAIN).pdf
-
-shuji: $(SHUJIMAIN).pdf
-
-ifeq ($(METHOD),latexmk)
-
-$(PACKAGE).pdf: $(CLSFILES) $(THESISMAIN).tex FORCE_MAKE
-	$(METHOD) $(LATEXMKOPTS) $(PACKAGE).dtx
-
-$(THESISMAIN).pdf: $(CLSFILES) $(BSTFILE) FORCE_MAKE
-	$(METHOD) $(LATEXMKOPTS) $(THESISMAIN)
-
-$(SHUJIMAIN).pdf: $(CLSFILES) FORCE_MAKE
-	$(METHOD) $(LATEXMKOPTS) $(SHUJIMAIN)
-
-else ifneq (,$(filter $(METHOD),xelatex pdflatex))
-
-$(PACKAGE).pdf: $(CLSFILES) $(THESISMAIN).tex
-	$(METHOD) $(PACKAGE).dtx
-	makeindex -s gind.ist -o $(PACKAGE).ind $(PACKAGE).idx
-	makeindex -s gglo.ist -o $(PACKAGE).gls $(PACKAGE).glo
-	$(METHOD) $(PACKAGE).dtx
-	$(METHOD) $(PACKAGE).dtx
-
-$(THESISMAIN).pdf: $(CLSFILES) $(THESISCONTENTS) $(THESISMAIN).bbl
-	$(METHOD) $(THESISMAIN)
-	$(METHOD) $(THESISMAIN)
-
-$(THESISMAIN).bbl: $(BIBFILE) $(BSTFILE)
-	$(METHOD) $(THESISMAIN)
-	-bibtex $(THESISMAIN)
-	$(RM) $(THESISMAIN).pdf
-
-$(SHUJIMAIN).pdf: $(CLSFILES) $(SHUJICONTENTS)
-	$(METHOD) $(SHUJIMAIN)
-
-else
-$(error Unknown METHOD: $(METHOD))
-
-endif
-
-clean:
-	latexmk -c $(PACKAGE).dtx $(THESISMAIN) $(SHUJIMAIN)
-	-@$(RM) *~
-
-cleanall: clean
-	-@$(RM) $(PACKAGE).pdf $(THESISMAIN).pdf $(SHUJIMAIN).pdf
-
-distclean: cleanall
-	-@$(RM) $(CLSFILES)
-	-@$(RM) -r dist
-
-check: FORCE_MAKE
-	@ag 'Tsinghua University Thesis Template|\\def\\version|"version":' thuthesis.dtx package.json
-
-dist: all
-	@if [ -z "$(version)" ]; then \
-		echo "Usage: make dist version=[x.y.z | ctan]"; \
-	else \
-		npm run build -- --version=$(version); \
-	fi

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/README.md	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/README.md	2019-05-02 22:31:15 UTC (rev 50932)
@@ -1,4 +1,8 @@
-[![Build Status](https://travis-ci.org/xueruini/thuthesis.svg?branch=master)](https://travis-ci.org/xueruini/thuthesis) [![Join the chat at https://gitter.im/thuthesis/Lobby](https://badges.gitter.im/thuthesis/Lobby.svg)](https://gitter.im/thuthesis/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+[![Build Status](https://travis-ci.org/xueruini/thuthesis.svg?branch=master)](https://travis-ci.org/xueruini/thuthesis)
+[![Join the chat at https://gitter.im/thuthesis/Lobby](https://badges.gitter.im/thuthesis/Lobby.svg)](https://gitter.im/thuthesis/Lobby)
+[![Github downloads](https://img.shields.io/github/downloads/xueruini/thuthesis/total.svg)](https://github.com/xueruini/thuthesis/releases)
+[![GitHub release](https://img.shields.io/github/release/xueruini/thuthesis/all.svg)](https://github.com/xueruini/thuthesis/releases/latest)
+[![GitHub commits](https://img.shields.io/github/commits-since/xueruini/thuthesis/latest.svg)](https://github.com/xueruini/thuthesis/commits/master)
 
 # What's ThuThesis?
 ThuThesis is an abbreviation of <b>T</b>sing<b>h</b>ua <b>U</b>niversity <b>Thesis</b> LaTeX Template.
@@ -22,14 +26,14 @@
 
 # 升级
 ## 自动更新
-通过TeX发行版工具自动从[CTAN](http://www.ctan.org/pkg/thuthesis)更新。
+通过 TeX 发行版工具自动从 [CTAN](http://www.ctan.org/pkg/thuthesis) 更新。
 
 ## 手动更新
-从 [GitHub](https://github.com/xueruini/thuthesis)下载放入论文目录,执行命令(Windows 用户在文件夹空白处按`Shift+鼠标右键`,点击“在此处打开命令行窗口”):
+从 [GitHub](https://github.com/xueruini/thuthesis) 下载放入论文目录,执行命令(Windows 用户在文件夹空白处按`Shift+鼠标右键`,点击“在此处打开命令行窗口”):
 
-    latex thuthesis.ins
+    xetex thuthesis.ins
 
-即可得到 `thuthesis.cls` 和 `thuthesis.cfg` 等模板文件。
+即可得到 `thuthesis.cls` 等模板文件。
 
 # 提问
 按推荐顺序排序:
@@ -42,8 +46,7 @@
 # Makefile的用法
 
 ```shell
-make [{all|thesis|shuji|doc|clean|cleanall|distclean}] \
-     [METHOD={latexmk|xelatex|pdflatex}]
+make [{all|thesis|shuji|doc|clean|cleanall|distclean}]
 ```
 
 ## 目标
@@ -56,12 +59,6 @@
 * `make cleanall`  删除示例文件的中间文件和 main.pdf;
 * `make distclean` 删除示例文件和模板的所有中间文件和 PDF。
 
-## 参数
-* **METHOD**:指定生成 pdf 的方式,缺省采用 latexmk。
-  * METHOD=latexmk  表示使用 latexmk 的方式生成 pdf(使用 xelatex)。
-  * METHOD=xelatex  表示使用 xelatex 引擎编译生成 pdf;
-  * METHOD=pdflatex 表示使用 pdflatex 引擎编译生成 pdf。
-
 # Documentation
 Download and unzip the template. Specific usage documentation and examples can be found in the files below. At present, these documents are <b>only available in Chinese</b>:
 * Template usage (thuthesis.pdf)
@@ -78,9 +75,9 @@
 ## Manual
 Download the package from [GitHub](https://github.com/xueruini/thuthesis) to the root directory of your thesis, then execute the command (Windows users `Shift + right click` white area in the file window and click "Open command line window here from the popup menu"):
 
-    latex thuthesis.ins
+    xetex thuthesis.ins
 
-You'll get `thuthesis.cls` and `thuthesis.cfg` along with other template files.
+You'll get `thuthesis.cls` along with other template files.
 
 # Reporting Issues
 Please follow the procedure below:
@@ -93,8 +90,7 @@
 # Makefile Usage
 
 ```shell
-make [{all|thesis|shuji|doc|clean|cleanall|distclean}] \
-     [METHOD={latexmk|xelatex|pdflatex}]
+make [{all|thesis|shuji|doc|clean|cleanall|distclean}]
 ```
 
 ## Targets
@@ -106,9 +102,3 @@
 * `make clean`     delete all examples' files (excluding main.pdf);
 * `make cleanall`  delete all examples' files and main.pdf;
 * `make distclean` delete all examples' and templates' files and PDFs.
-
-## Parameters
-* **METHOD**:define the method used to generate the pdfs, the default is `latexmk`.
-*  `METHOD=latexmk` use latexmk to generate pdfs (uses xelatex).
-* `METHOD=xelatex` use xelatex engine to compile and build pdfs;
-* `METHOD=pdflatex` use pdflatex engine to compile and build pdfs.

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix01.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix01.tex	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix01.tex	2019-05-02 22:31:15 UTC (rev 50932)
@@ -20,25 +20,26 @@
 \section{Single-Objective Programming}
 The general form of single-objective programming (SOP) is written
 as follows,
-\begin{equation}\tag*{(123)} % 如果附录中的公式不想让它出现在公式索引中,那就请
-                             % 用 \tag*{xxxx}
+\begin{equation*} % 如果附录中的公式不想让它出现在公式索引中,那就请
+                             % 用 equation*
 \left\{\begin{array}{l}
 \max \,\,f(x)\\[0.1 cm]
 \mbox{subject to:} \\ [0.1 cm]
 \qquad g_j(x)\le 0,\quad j=1,2,\cdots,p
 \end{array}\right.
-\end{equation}
+\end{equation*}
 which maximizes a real-valued function $f$ of
 $x=(x_1,x_2,\cdots,x_n)$ subject to a set of constraints.
 
+\newcommand\Real{\mathbf{R}}
 \newtheorem{mpdef}{Definition}[chapter]
 \begin{mpdef}
 In SOP, we call $x$ a decision vector, and
 $x_1,x_2,\cdots,x_n$ decision variables. The function
 $f$ is called the objective function. The set
-\begin{equation}\tag*{(456)} % 这里同理,其它不再一一指定。
-S=\left\{x\in\Re^n\bigm|g_j(x)\le 0,\,j=1,2,\cdots,p\right\}
-\end{equation}
+\begin{equation*}
+S=\left\{x\in\Real^n\bigm|g_j(x)\le 0,\,j=1,2,\cdots,p\right\}
+\end{equation*}
 is called the feasible set. An element $x$ in $S$ is called a
 feasible solution.
 \end{mpdef}
@@ -127,7 +128,7 @@
 concerned with analyzing the structure of problems.
 \begin{figure}[h]
   \centering
-  \includegraphics{thu-lib-logo}
+  \includegraphics{thu-lib-logo.pdf}
   \caption*{Figure~1\quad This is an example for manually numbered figure,
     which would not appear in the list of figures}
   \label{tab:badfigure2}
@@ -134,8 +135,8 @@
 \end{figure}
 
 Now we consider a nonlinear programming which is confronted solely with
-maximizing a real-valued function with domain $\Re^n$.  Whether derivatives are
-available or not, the usual strategy is first to select a point in $\Re^n$ which
+maximizing a real-valued function with domain $\Real^n$.  Whether derivatives are
+available or not, the usual strategy is first to select a point in $\Real^n$ which
 is thought to be the most likely place where the maximum exists. If there is no
 information available on which to base such a selection, a point is chosen at
 random. From this first point an attempt is made to construct a sequence of
@@ -238,7 +239,7 @@
 跖,为天下害,而弗能教也,丘窃为先生羞之。丘请为先生往说之。”
 \begin{figure}[h]
   \centering
-  \includegraphics{thu-whole-logo}
+  \includegraphics{thu-whole-logo.pdf}
   \caption*{图~1\hskip1em 这是手动编号但不出现索引中的图片的例子}
   \label{tab:badfigure3}
 \end{figure}

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/data/chap01.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/chap01.tex	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/chap01.tex	2019-05-02 22:31:15 UTC (rev 50932)
@@ -2,7 +2,7 @@
 \label{cha:intro}
 
 这是 \thuthesis\cite{thuthesis} 的示例文档,基本上覆盖了模板中所有格式的设置。建
-议大家在使用模板之前,除了阅读《\thuthesis{}用户手册》,这个示例文档也最好能看一
+议大家在使用模板之前,除了阅读《\thuthesis{} 用户手册》,这个示例文档也最好能看一
 看。
 
 小老鼠偷吃热凉粉;短长虫环绕矮高粱\footnote{韩愈(768-824),字退之,河南河阳(
@@ -13,7 +13,7 @@
 
 
 \section{封面相关}
-封面的例子请参看 \texttt{cover.tex}。主要符号表参看 \texttt{denation.tex},附录和
+封面的例子请参看 \texttt{cover.tex}。主要符号表参看 \texttt{denotation.tex},附录和
 个人简历分别参看 \texttt{appendix01.tex} 和 \texttt{resume.tex}。里面的命令都很直
 观,一看即会\footnote{你说还是看不懂?怎么会呢?}。
 
@@ -63,7 +63,7 @@
   离;离者丽也。}
 
 \section{表格样本}
-\label{chap1:sample:table} 
+\label{chap1:sample:table}
 
 \subsection{基本表格}
 \label{sec:basictable}
@@ -82,12 +82,11 @@
     \begin{tabularx}{\linewidth}{lX}
       \toprule[1.5pt]
       {\heiti 文件名} & {\heiti 描述} \\\midrule[1pt]
-      thuthesis.ins & \LaTeX{} 安装文件,\textsc{DocStrip}\footnote{表格中的脚注} \\
+      thuthesis.ins & \LaTeX{} 安装文件,DocStrip\footnote{表格中的脚注} \\
       thuthesis.dtx & 所有的一切都在这里面\footnote{再来一个}。\\
       thuthesis.cls & 模板类文件。\\
-      thuthesis.cfg & 模板配置文。cls 和 cfg 由前两个文件生成。\\
-      thuthesis-numeric.bst    & 参考文献 BIB\TeX\ 样式文件。\\
-      thuthesis-author-year.bst    & 参考文献 BIB\TeX\ 样式文件。\\
+      thuthesis-numeric.bst    & 参考文献 Bib\TeX\ 样式文件。\\
+      thuthesis-author-year.bst    & 参考文献 Bib\TeX\ 样式文件。\\
       thuthesis.sty   & 常用的包和命令写在这里,减轻主文件的负担。\\
       \bottomrule[1.5pt]
     \end{tabularx}
@@ -108,7 +107,7 @@
   \centering
   \caption{复杂表格示例 1。这个引用 \cite{tex} 不会导致编号混乱。}
   \label{tab:tabexamp1}
-  \begin{minipage}[t]{0.8\textwidth} 
+  \begin{minipage}[t]{0.8\textwidth}
     \begin{tabularx}{\linewidth}{|l|X|X|X|X|}
       \hline
       \multirow{2}*{\diagbox[width=5em]{x}{y}} & \multicolumn{2}{c|}{First Half} & \multicolumn{2}{c|}{Second Half}\\\cline{2-5}
@@ -214,12 +213,12 @@
   \caption{复杂表格示例 2}
   \label{tab:tabexamp2}
   \begin{tabular}[c]{|m{1.5cm}|c|c|c|c|c|c|}\hline
-    \multicolumn{2}{|c|}{Network Topology} & \# of nodes & 
+    \multicolumn{2}{|c|}{Network Topology} & \# of nodes &
     \multicolumn{3}{c|}{\# of clients} & Server \\\hline
     GT-ITM & Waxman Transit-Stub & 600 &
-    \multirow{2}{1em}{2\%}&
-    \multirow{2}{1.5em}{10\%}&
-    \multirow{2}{1.5em}{50\%}&
+    \multirow{2}{1.5em}{2\%}&
+    \multirow{2}{2em}{10\%}&
+    \multirow{2}{2em}{50\%}&
     \multirow{2}{1.2in}{Max. Connectivity}\\\cline{1-3}
     \multicolumn{2}{|c|}{Inet-2.1} & 6000 & & & &\\\hline
     \multirow{2}{1.5cm}{Xue} & Rui  & Ni &\multicolumn{4}{c|}{\multirow{2}*{\thuthesis}}\\\cline{2-3}
@@ -239,14 +238,6 @@
 抗行周雅,长揖楚辞。诗家者流,时论归美。克成编录,叹息良深。殷璠谓维诗词秀调雅,
 意新理惬。在泉成珠,著壁成绘。苏轼亦云:“维诗中有画,画中有诗也。”今编诗四卷。
 
-要想用好论文模板还是得提前学习一些 \TeX/\LaTeX{}的相关知识,具备一些基本能力,掌
-握一些常见技巧,否则一旦遇到问题还真是比较麻烦。我们见过很多这样的同学,一直以来
-都是使用 Word 等字处理工具,以为 \LaTeX{}模板的用法也应该类似,所以就沿袭同样的思
-路来对待这种所见非所得的排版工具,结果被折腾的焦头烂额,疲惫不堪。
-
-如果您要排版的表格长度超过一页,那么推荐使用 \pkg{longtable} 或者 \pkg{supertabular}
-宏包,模板对 \pkg{longtable} 进行了相应的设置,所以用起来可能简单一些。
-表~\ref{tab:performance} 就是 \pkg{longtable} 的简单示例。
 \begin{longtable}[c]{c*{6}{r}}
 \caption{实验数据}\label{tab:performance}\\
 \toprule[1.5pt]
@@ -295,6 +286,15 @@
 \bottomrule[1.5pt]
 \end{longtable}
 
+要想用好论文模板还是得提前学习一些 \TeX/\LaTeX{}的相关知识,具备一些基本能力,掌
+握一些常见技巧,否则一旦遇到问题还真是比较麻烦。我们见过很多这样的同学,一直以来
+都是使用 Word 等字处理工具,以为 \LaTeX{}模板的用法也应该类似,所以就沿袭同样的思
+路来对待这种所见非所得的排版工具,结果被折腾的焦头烂额,疲惫不堪。
+
+如果您要排版的表格长度超过一页,那么推荐使用 \pkg{longtable} 或者 \pkg{supertabular}
+宏包,模板对 \pkg{longtable} 进行了相应的设置,所以用起来可能简单一些。
+表~\ref{tab:performance} 就是 \pkg{longtable} 的示例。
+
 \subsection{其它}
 \label{sec:tableother}
 如果不想让某个表格或者图片出现在索引里面,请使用命令 \cs{caption*}。
@@ -344,11 +344,11 @@
 
 \begin{assumption}
 待月西厢下,迎风户半开;隔墙花影动,疑是玉人来。
-\begin{eqnarray}
+\begin{align}
   \label{eq:eqnxmp}
-  c & = & a^2 - b^2\\
-    & = & (a+b)(a-b)
-\end{eqnarray}
+  c & = a^2 - b^2 \\
+    & = (a+b)(a-b)
+\end{align}
 \end{assumption}
 
 千辛万苦,历尽艰难,得有今日。然相从数千里,未曾哀戚。今将渡江,方图百年欢笑,如
@@ -375,7 +375,7 @@
 \begin{remark}
 天不言自高,水不言自流。
 \begin{gather*}
-\begin{split} 
+\begin{split}
 \varphi(x,z)
 &=z-\gamma_{10}x-\gamma_{mn}x^mz^n\\
 &=z-Mr^{-1}x-Mr^{-(m+n)}x^mz^n
@@ -394,7 +394,7 @@
 业。易简,而天下矣之理矣;天下之理得,而成位乎其中矣。
 
 \begin{axiom}
-两点间直线段距离最短。  
+两点间直线段距离最短。
 \begin{align}
 x&\equiv y+1\pmod{m^2}\\
 x&\equiv y+1\mod{m^2}\\
@@ -409,13 +409,14 @@
 乾,反复道也。或跃在渊,进无咎也。飞龙在天,大人造也。亢龙有悔,盈不可久也。用九,
 天德不可为首也。   
 
+\newcommand\dif{\mathop{}\!\mathrm{d}}
 \begin{lemma}
 《猫和老鼠》是我最爱看的动画片。
 \begin{multline*}%\tag*{[a]} % 这个不出现在索引中
 \int_a^b\biggl\{\int_a^b[f(x)^2g(y)^2+f(y)^2g(x)^2]
- -2f(x)g(x)f(y)g(y)\,dx\biggr\}\,dy \\
+ -2f(x)g(x)f(y)g(y)\dif x\biggr\}\dif y \\
  =\int_a^b\biggl\{g(y)^2\int_a^bf^2+f(y)^2
-  \int_a^b g^2-2f(y)g(y)\int_a^b fg\biggr\}\,dy
+  \int_a^b g^2-2f(y)g(y)\int_a^b fg\biggr\}\dif y
 \end{multline*}
 \end{lemma}
 
@@ -469,12 +470,13 @@
 \begin{example}
   大家来看这个例子。
 \begin{equation}
-\label{ktc}
-\left\{\begin{array}{l}
-\nabla f({\mbox{\boldmath $x$}}^*)-\sum\limits_{j=1}^p\lambda_j\nabla g_j({\mbox{\boldmath $x$}}^*)=0\\[0.3cm]
-\lambda_jg_j({\mbox{\boldmath $x$}}^*)=0,\quad j=1,2,\cdots,p\\[0.2cm]
-\lambda_j\ge 0,\quad j=1,2,\cdots,p.
-\end{array}\right.
+  \label{ktc}
+  \begin{cases}
+    \nabla f(\bm{x}^*) - \sum_{j=1}^p \lambda_j \nabla g_j(\bm{x}^*)
+      = 0 \\[0.3cm]
+    \lambda_j g_j(\bm{x}^*) = 0, \quad j = 1, 2, \dots, p \\[0.2cm]
+    \lambda_j \ge 0, \quad j = 1, 2, \dots, p.
+  \end{cases}
 \end{equation}
 \end{example}
 
@@ -488,7 +490,7 @@
 \end{conjecture}
 
 \begin{problem}
- 回答还是不回答,是个问题。 
+ 回答还是不回答,是个问题。
 \end{problem}
 
 如何引用定理~\ref{the:theorem1} 呢?加上 \cs{label} 使用 \cs{ref} 即可。妾发
@@ -509,10 +511,10 @@
 的~\cite{ELIDRISSI94, MELLINGER96, SHELL02},硕士论文~\cite{zhubajie,
   metamori2004},博士论文~\cite{shaheshang, FistSystem01},标准文
 件~\cite{IEEE-1363},会议论文~\cite{DPMG,kocher99},技术报告~\cite{NPB2},电子文
-献~\cite{chuban2001,oclc2000}。中文参考文献~\cite{cnarticle}应增
-加 \texttt{language=``chinese''} 字段,以便进行相应处理。另外,本模板对中文文
-献~\cite{cnproceed}的支持并不是十全十美,如果有不如意的地方,请手动修
-改 \texttt{bbl} 文件。
+献~\cite{chuban2001,oclc2000}。
+若使用著者-出版年制,中文参考文献~\cite{cnarticle}应增加
+\texttt{key=\{pinyin\}} 字段,以便正确进行排序~\cite{cnproceed}。
+另外,如果对参考文献有不如意的地方,请手动修改 \texttt{bbl} 文件。
 
 有时候不想要上标,那么可以这样~\inlinecite{shaheshang},这个非常重要。
 
@@ -530,43 +532,48 @@
 
 \section{公式}
 \label{sec:equation}
-贝叶斯公式如式~(\ref{equ:chap1:bayes}),其中 $p(y|\mathbf{x})$ 为后验;
-$p(\mathbf{x})$ 为先验;分母 $p(\mathbf{x})$ 为归一化因子。
+\renewcommand\vec{\symbf}
+\newcommand\mat{\symbf}
+贝叶斯公式如式~(\ref{equ:chap1:bayes}),其中 $p(y|\vec{x})$ 为后验;
+$p(\vec{x})$ 为先验;分母 $p(\vec{x})$ 为归一化因子。
 \begin{equation}
 \label{equ:chap1:bayes}
-p(y|\mathbf{x}) = \frac{p(\mathbf{x},y)}{p(\mathbf{x})}=
-\frac{p(\mathbf{x}|y)p(y)}{p(\mathbf{x})} 
+p(y|\vec{x}) = \frac{p(\vec{x},y)}{p(\vec{x})}=
+\frac{p(\vec{x}|y)p(y)}{p(\vec{x})}
 \end{equation}
 
 论文里面公式越多,\TeX{} 就越 happy。再看一个 \pkg{amsmath} 的例子:
-\newcommand{\envert}[1]{\left\lvert#1\right\rvert} 
+\newcommand{\envert}[1]{\left\lvert#1\right\rvert}
 \begin{equation}\label{detK2}
-\det\mathbf{K}(t=1,t_1,\dots,t_n)=\sum_{I\in\mathbf{n}}(-1)^{\envert{I}}
-\prod_{i\in I}t_i\prod_{j\in I}(D_j+\lambda_jt_j)\det\mathbf{A}
+\det\mat{K}(t=1,t_1,\dots,t_n)=\sum_{I\in\vec{n}}(-1)^{\envert{I}}
+\prod_{i\in I}t_i\prod_{j\in I}(D_j+\lambda_jt_j)\det\vec{A}
 ^{(\lambda)}(\overline{I}|\overline{I})=0.
-\end{equation} 
+\end{equation}
 
 前面定理示例部分列举了很多公式环境,可以说把常见的情况都覆盖了,大家在写公式的时
 候一定要好好看 \pkg{amsmath} 的文档,并参考模板中的用法:
 \begin{multline*}%\tag{[b]} % 这个出现在索引中的
 \int_a^b\biggl\{\int_a^b[f(x)^2g(y)^2+f(y)^2g(x)^2]
- -2f(x)g(x)f(y)g(y)\,dx\biggr\}\,dy \\
+ -2f(x)g(x)f(y)g(y)\dif x\biggr\}\dif y \\
  =\int_a^b\biggl\{g(y)^2\int_a^bf^2+f(y)^2
-  \int_a^b g^2-2f(y)g(y)\int_a^b fg\biggr\}\,dy
+  \int_a^b g^2-2f(y)g(y)\int_a^b fg\biggr\}\dif y
 \end{multline*}
 
 其实还可以看看这个多级规划:
-\begin{equation}\label{bilevel}
-\left\{\begin{array}{l}
-\max\limits_{{\mbox{\footnotesize\boldmath $x$}}} F(x,y_1^*,y_2^*,\cdots,y_m^*)\\[0.2cm]
-\mbox{subject to:}\\[0.1cm]
-\qquad G(x)\le 0\\[0.1cm]
-\qquad(y_1^*,y_2^*,\cdots,y_m^*)\mbox{ solves problems }(i=1,2,\cdots,m)\\[0.1cm]
-\qquad\left\{\begin{array}{l}
-    \max\limits_{{\mbox{\footnotesize\boldmath $y_i$}}}f_i(x,y_1,y_2,\cdots,y_m)\\[0.2cm]
-    \mbox{subject to:}\\[0.1cm]
-    \qquad g_i(x,y_1,y_2,\cdots,y_m)\le 0.
-    \end{array}\right.
-\end{array}\right.
+\begin{equation}
+  \label{bilevel}
+  \begin{cases}
+    \max_{\bm{x}} F(\bm{x}, y_1^*, y_2^*, \dots, y_m^*) \\
+      \text{subject to:} \\
+      \qquad G(\bm{x}) \le 0 \\
+      \qquad (y_1^*, y_2^*, \dots, y_m^*) \text{ solves problems }
+        (i = 1, 2, \dots, m) \\
+      \qquad
+        \begin{cases}
+          \max_{\bm{x}} f_i(\bm{x}, y_1, y_2, \dots, y_m) \\
+          \text{subject to:} \\
+          \qquad g_i(\bm{x}, y_1, y_2, \dots, y_m) \le 0.
+        \end{cases}
+  \end{cases}
 \end{equation}
 这些跟规划相关的公式都来自于刘宝碇老师《不确定规划》的课件。

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/data/chap02.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/chap02.tex	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/chap02.tex	2019-05-02 22:31:15 UTC (rev 50932)
@@ -8,8 +8,8 @@
 习一下:
 \begin{equation}
 \label{equ:chap2:bayes}
-p(y|\mathbf{x}) = \frac{p(\mathbf{x},y)}{p(\mathbf{x})}=
-\frac{p(\mathbf{x}|y)p(y)}{p(\mathbf{x})}
+p(y|\vec{x}) = \frac{p(\vec{x},y)}{p(\vec{x})}=
+\frac{p(\vec{x}|y)p(y)}{p(\vec{x})}
 \end{equation}
 
 \subsection{绘图}
@@ -33,7 +33,7 @@
 它提供了 \texttt{[H]} 参数,比如图~\ref{fig:xfig1}。
 \begin{figure}[H] % use float package if you want it here
   \centering
-  \includegraphics{thu-whole-logo}
+  \includegraphics{thu-whole-logo.pdf}
   \caption{利用 Xfig 制图}
   \label{fig:xfig1}
 \end{figure}
@@ -64,10 +64,10 @@
 \begin{figure}[h]
   \centering%
   \subcaptionbox{第一个小图形\label{fig:subfig1}}[3cm] %标题的长度,超过则会换行,如下一个小图。
-    {\includegraphics[height=3cm]{thu-fig-logo}}%
+    {\includegraphics[height=3cm]{thu-fig-logo.pdf}}%
   \hspace{4em}%
   \subcaptionbox{第二个小图形,注意这个图略矮些。如果标题很长的话,它会自动换行\label{fig:subfig2}}
-      {\includegraphics[height=2cm]{thu-text-logo}}
+      {\includegraphics[height=2cm]{thu-text-logo.pdf}}
   \caption{包含子图形的大图形(subcaptionbox示例)}
   \label{fig:big1-subcaptionbox}
 \end{figure}
@@ -74,12 +74,12 @@
 \begin{figure}[h]
   \centering%
   \begin{subfigure}{3cm}
-    \includegraphics[height=3cm]{thu-fig-logo}
+    \includegraphics[height=3cm]{thu-fig-logo.pdf}
     \caption{第一个小图形}
   \end{subfigure}%
   \hspace{4em}%
   \begin{subfigure}{0.5\textwidth}
-    \includegraphics[height=2cm]{thu-text-logo}
+    \includegraphics[height=2cm]{thu-text-logo.pdf}
     \caption{第二个小图形,注意这个图略矮些。subfigure中同一行的子图在顶端对齐。}
   \end{subfigure}
   \caption{包含子图形的大图形(subfigure示例)}
@@ -106,13 +106,13 @@
 \begin{figure}
 \begin{minipage}{0.48\textwidth}
   \centering
-  \includegraphics[height=2cm]{thu-whole-logo}
+  \includegraphics[height=2cm]{thu-whole-logo.pdf}
   \caption{并排第一个图}
   \label{fig:parallel1}
 \end{minipage}\hfill
 \begin{minipage}{0.48\textwidth}
   \centering
-  \includegraphics[height=2cm]{thu-whole-logo}
+  \includegraphics[height=2cm]{thu-whole-logo.pdf}
   \caption{并排第二个图}
   \label{fig:parallel2}
 \end{minipage}

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/data/cover.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/cover.tex	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/cover.tex	2019-05-02 22:31:15 UTC (rev 50932)
@@ -26,12 +26,14 @@
   % cdate={超新星纪元},
   %
   % 博士后专有部分
-  cfirstdiscipline={计算机科学与技术},
-  cseconddiscipline={系统结构},
-  postdoctordate={2009年7月——2011年7月},
-  id={编号}, % 可以留空: id={},
-  udc={UDC}, % 可以留空
-  catalognumber={分类号}, % 可以留空
+  catalognumber     = {分类号},  % 可以留空
+  udc               = {UDC},  % 可以留空
+  id                = {编号},  % 可以留空: id={},
+  cfirstdiscipline  = {计算机科学与技术},  % 流动站(一级学科)名称
+  cseconddiscipline = {系统结构},  % 专 业(二级学科)名称
+  postdoctordate    = {2009 年 7 月——2011 年 7 月},  % 工作完成日期
+  postdocstartdate  = {2009 年 7 月 1 日},  % 研究工作起始时间
+  postdocenddate    = {2011 年 7 月 1 日},  % 研究工作期满时间
   %
   %=========
   % 英文信息
@@ -61,8 +63,8 @@
   % edate={December, 2005}
   %
   % 关键词用“英文逗号”分割
-  ckeywords={\TeX, \LaTeX, CJK, 模板, 论文},
-  ekeywords={\TeX, \LaTeX, CJK, template, thesis}
+  ckeywords={TeX, LaTeX, CJK, 模板, 论文},
+  ekeywords={TeX, LaTeX, CJK, template, thesis}
 }
 
 % 定义中英文摘要和关键字

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/data/denotation.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/denotation.tex	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/denotation.tex	2019-05-02 22:31:15 UTC (rev 50932)
@@ -29,3 +29,29 @@
   之利,筋骨之强,上食埃土,下饮黄泉,用心一也。蟹六跪而二螯,非蛇鳝之穴无可寄托
   者,用心躁也。—— 荀况
 \end{denotation}
+
+
+
+% % 也可以使用 nomencl 宏包:
+
+% \printnomenclature[3cm]
+
+% \nomenclature{HPC}{高性能计算 (High Performance Computing)}
+% \nomenclature{cluster}{集群}
+% \nomenclature{Itanium}{安腾}
+% \nomenclature{SMP}{对称多处理}
+% \nomenclature{API}{应用程序编程接口}
+% \nomenclature{PI}{聚酰亚胺}
+% \nomenclature{MPI}{聚酰亚胺模型化合物,N-苯基邻苯酰亚胺}
+% \nomenclature{PBI}{聚苯并咪唑}
+% \nomenclature{MPBI}{聚苯并咪唑模型化合物,N-苯基苯并咪唑}
+% \nomenclature{PY}{聚吡咙}
+% \nomenclature{PMDA-BDA}{均苯四酸二酐与联苯四胺合成的聚吡咙薄膜}
+% \nomenclature{$\Delta G$}{活化自由能 (Activation Free Energy)}
+% \nomenclature{$\chi$}{传输系数 (Transmission Coefficient)}
+% \nomenclature{$E$}{能量}
+% \nomenclature{$m$}{质量}
+% \nomenclature{$c$}{光速}
+% \nomenclature{$P$}{概率}
+% \nomenclature{$T$}{时间}
+% \nomenclature{$v$}{速度}

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/dtx-style.sty
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/dtx-style.sty	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/dtx-style.sty	2019-05-02 22:31:15 UTC (rev 50932)
@@ -8,7 +8,7 @@
 %% 
 %% This is a generated file.
 %% 
-%% Copyright (C) 2005-2018 by Ruini Xue <xueruini at gmail.com>
+%% Copyright (C) 2005-2019 by Ruini Xue <xueruini at gmail.com>
 %% 
 %% This work may be distributed and/or modified under the
 %% conditions of the LaTeX Project Public License, either version 1.3
@@ -21,9 +21,14 @@
 %% To produce the documentation run the original source files ending with `.dtx'
 %% through LaTeX.
 %% 
-
+\RequirePackage{ifxetex}
+\ifxetex\else
+  \ClassError{thuthesis}{You should use XeLaTeX}{}
+  \end{document}
+\fi
 \ProvidesPackage{dtx-style}
 \RequirePackage{hypdoc}
+\RequirePackage{ifthen}
 \RequirePackage[UTF8,scheme=chinese]{ctex}
 \RequirePackage{newpxtext}
 \RequirePackage{newpxmath}
@@ -39,6 +44,10 @@
 \RequirePackage{etoolbox}
 \RequirePackage{metalogo}
 
+\ifthenelse{\equal{\@nameuse{g__ctex_fontset_tl}}{mac}}{%
+  \xeCJKsetwidth{‘’“”}{1em}
+}{}
+
 \colorlet{thu at macro}{blue!60!black}
 \colorlet{thu at env}{blue!70!black}
 \colorlet{thu at option}{purple}

Deleted: trunk/Master/texmf-dist/doc/latex/thuthesis/figures/thu-fig-logo.eps
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/latex/thuthesis/figures/thu-lib-logo.eps
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/latex/thuthesis/figures/thu-text-logo.eps
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/latex/thuthesis/figures/thu-whole-logo.eps
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/latexmkrc
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/latexmkrc	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/latexmkrc	2019-05-02 22:31:15 UTC (rev 50932)
@@ -1,8 +1,14 @@
 # vim: set ft=perl:
-$xdvipdfmx="xdvipdfmx -E -o %D %O %S";
-$clean_ext = 'thm glo gls bbl hd loe synctex.gz xdv';
+$xdvipdfmx="xdvipdfmx -q -E -o %D %O %S";
+$clean_ext = 'thm bbl hd loe synctex.gz xdv';
 $makeindex = 'makeindex -s gind.ist %O -o %D %S';
 add_cus_dep('glo', 'gls', 0, 'makeglo2gls');
 sub makeglo2gls {
     system("makeindex -s gglo.ist -o \"$_[0].gls\" \"$_[0].glo\"");
 }
+push @generated_exts, "glo", "gls";
+add_cus_dep('nlo', 'nls', 0, 'nlo2nls');
+sub nlo2nls {
+    system("makeindex -s nomencl.ist -o \"$_[0].nls\" \"$_[0].nlo\"");
+}
+push @generated_exts, "nlo", "nls";

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/main.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/main.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/main.tex	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/main.tex	2019-05-02 22:31:15 UTC (rev 50932)
@@ -1,11 +1,11 @@
-\documentclass[degree=master, tocarialchapter]{thuthesis}
+\documentclass[degree=master,tocarialchapter]{thuthesis}
 % 选项
 %   degree=[bachelor|master|doctor|postdoctor], % 必选,学位类型
+%   language=[chinese|english], % 可选(默认:chinese),论文的主要语言
 %   secret,                % 可选(默认:关闭),是否有密级
 %   tocarialchapter,       % 可选(默认:关闭),章目录中使用黑体(这项表示同时打开下面两项)
 %   tocarialchapterentry,  % 可选(默认:关闭),单独控制章标题在目录中使用黑体
 %   tocarialchapterpage,   % 可选(默认:关闭),单独控制章页码在目录中使用黑体
-%   pifootnote,            % 可选(默认:关闭),页脚编号采用 pifont 字体符号,建议打开
 
 % 所有其它可能用到的包都统一放到这里了,可以根据自己的实际添加或者删除。
 \usepackage{thuthesis}
@@ -34,8 +34,8 @@
 
 %%% 正文部分
 \mainmatter
-\include{data/chap01}
-\include{data/chap02}
+\input{data/chap01}
+\input{data/chap02}
 
 
 %%% 其它部分
@@ -53,15 +53,14 @@
 %% 参考文献
 % 注意:至少需要引用一篇参考文献,否则下面两行可能引起编译错误。
 % 如果不需要参考文献,请将下面两行删除或注释掉。
-% 数字式引用
-\bibliographystyle{thuthesis-numeric}
-% 作者-年份式引用
-% \bibliographystyle{thuthesis-author-year}
+\bibliographystyle{thuthesis-numeric}      % 顺序编码制
+% \bibliographystyle{thuthesis-author-year}  % 著者-出版年制
+% \bibliographystyle{thuthesis-bachelor}     % 本科生参考文献的著录格式
 \bibliography{ref/refs}
 
 
 %% 致谢
-\include{data/ack}
+\input{data/ack}
 
 %% 附录
 \begin{appendix}
@@ -69,7 +68,7 @@
 \end{appendix}
 
 %% 个人简历
-\include{data/resume}
+\input{data/resume}
 
 %% 本科生进行格式审查是需要下面这个表格,答辩可能不需要。选择性留下。
 % 综合论文训练记录表

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/ref/refs.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/ref/refs.bib	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/ref/refs.bib	2019-05-02 22:31:15 UTC (rev 50932)
@@ -15,6 +15,7 @@
   volume =       1666,
   pages =        {388-397},
   publisher =    {Springer-Verlag},
+  address   =    {Germany},
   month =        {August},
   year =         1999
 }
@@ -43,7 +44,6 @@
   volume =       2,
   series =       {新古文观止丛书},
   address =      {武汉},
-  language =     "chinese",
 }
 
 @inbook{clzs,
@@ -52,8 +52,8 @@
   chapter =      {大人物还是讲人情的},
   pages =        {185-207},
   publisher =    {人民文学出版社},
+  address =      {北京},
   year =         2001,
-  language =     "chinese",
 }
 
 @book{tex,
@@ -126,6 +126,8 @@
   title =        {Design and {I}mplementation of {D}ynamic {P}rocess
                   {M}anagement for {G}rid-enabled {MPICH}},
   booktitle =    {the 10th European PVM/MPI Users' Group Conference},
+  editor =       {Jack Dongarra and Domenico Laforenza and Salvatore Orlando},
+  publisher =    {Springer-Verlag},
   year =         2003,
   address =      {Venice, Italy},
   month =        sep,
@@ -133,12 +135,12 @@
 
 @inproceedings{cnproceed,
   author =       {王重阳 and 黄药师 and 欧阳峰 and 洪七公 and 段皇帝},
+  publisher =    {金大庸},
   title =        {武林高手从入门到精通},
   booktitle =    {第~$N$~次华山论剑},
   year =         2006,
   address =      {西安, 中国},
   month =        sep,
-  language =     "chinese",
 }
 
 @article{cnarticle,
@@ -148,7 +150,6 @@
   pages =        "260--266",
   volume =       224,
   year =         1800,
-  language =     "chinese",
 }
 
 @mastersthesis{zhubajie,
@@ -157,7 +158,6 @@
   school =       {广寒宫大学},
   year =         2005,
   address =      {北京},
-  language =     "chinese",
 }
 
 @phdthesis{shaheshang,
@@ -166,7 +166,6 @@
   school =       {清华大学},
   year =         2005,
   address =      {北京},
-  language =     "chinese",
 }
 
 @mastersthesis{metamori2004,
@@ -195,21 +194,22 @@
   publisher =    {American Scientific Publishers},
   year =         2004,
   volume =       1,
+  address =      {USA},
 }
 
 @online{chuban2001,
   author =      {萧钰},
   title =       {出版业信息化迈入快车道},
-  modifydate =  {2001-12-19},
-  citedate =    {2002-04-15},
+  date  =       {2001-12-19},
+  urldate =     {2002-04-15},
   url =         {http://www.creader.com/news/200112190019.htm},
-  language =    "chinese",
 }
 
 @online{oclc2000,
   author =      {{Online Computer Library Center, Inc.}},
   title =       {History of {OCLC}},
-  citedate =    {2000-01-08},
+  year =        2000,
+  urldate =     {2000-01-08},
   url =         {http://www.oclc.org/about/history/default.htm},
 }
 
@@ -216,9 +216,8 @@
 
 @online{thuthesis,
   author =      {薛瑞尼},
-  title =       {\thuthesis: 清华大学学位论文模板},
-  citedate =    {2017-12-02},
+  title =       {ThuThesis: 清华大学学位论文模板},
+  urldate =     {2019-04-27},
   url =         {https://github.com/xueruini/thuthesis},
-  language =    "chinese",
   year =        2017,
 }

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/shuji.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/shuji.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/shuji.tex	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/shuji.tex	2019-05-02 22:31:15 UTC (rev 50932)
@@ -1,9 +1,5 @@
 \documentclass[degree=master]{thuthesis}
 
-\ifxetex\relax\else % for latex/pdflatex
-  \usepackage{CJKvert}
-\fi
-
 \begin{document}
 \thusetup{
   cauthor={薛瑞尼},

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/thuthesis.pdf
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/latex/thuthesis/tsinghua.eps
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/tsinghua.eps	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/tsinghua.eps	2019-05-02 22:31:15 UTC (rev 50932)
@@ -1,8411 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%BoundingBox: 0 0 131 20
-%%HiResBoundingBox: 0.000000 0.500000 131.000000 20.000000
-%%Creator: GPL Ghostscript 916 (ps2write)
-%%LanguageLevel: 2
-%%CreationDate: D:20160320172012+08'00'
-%%EndComments
-% EPSF created by ps2eps 1.68
-%%BeginProlog
-save
-countdictstack
-mark
-newpath
-/showpage {} def
-/setpagedevice {pop} def
-%%EndProlog
-%%Page 1 1
-%%BeginProlog
-/DSC_OPDFREAD true def
-/SetPageSize true def
-/EPS2Write false def
-currentdict/DSC_OPDFREAD known{
-currentdict/DSC_OPDFREAD get
-}{
-false
-}ifelse
-10 dict begin
-/DSC_OPDFREAD exch def
-/this currentdict def
-/y 720 def
-/ebuf 200 string def
-/prnt{
-36//this/y get moveto//ebuf cvs show
-//this/y 2 copy get 12 sub put
-}bind def
-/newline{
-36//this/y get moveto
-//this/y 2 copy get 12 sub put
-}bind def
-errordict/handleerror
-{systemdict begin
-$error begin
-newerror
-{(%%[ Error handled by opdfread.ps : )print errorname//ebuf cvs print(; OffendingCommand: )
-print/command load//ebuf cvs print( ]%%)= flush
-/newerror false store vmstatus pop pop 0 ne
-{grestoreall
-}if
-errorname(VMerror)ne
-{showpage
-}if
-initgraphics
-0 720 moveto
-errorname(VMerror)eq
-{//this/ehsave known
-{clear//this/ehsave get restore 2 vmreclaim
-}if
-vmstatus exch pop exch pop
-}
-/Courier 12 selectfont
-{
-(ERROR: )//prnt exec errorname//prnt exec
-(OFFENDING COMMAND: )//prnt exec
-/command load//prnt exec
-$error/ostack known{
-(%%[STACK:)=
-(STACK:)//prnt exec
-$error/ostack get aload length{
-//newline exec
-dup mark eq{
-(-mark-)dup = show
-}{
-dup type/nametype eq{
-dup xcheck not{
-(/)show
-(/)print
-}if
-}if
-dup =//ebuf cvs show
-}ifelse
-}repeat
-}if
-}ifelse
-(%%]%)=
-//systemdict/showpage get exec
-quit
-}if
-end
-end
-}bind readonly put
-end
-50 dict begin
-/DefaultSwitch
-{
-dup where{
-pop pop
-}{
-false def
-}ifelse
-}bind def
-/=string 256 string def
-/=only{
-//=string cvs print
-}bind def
-/HexDigits(0123456789ABCDEF)readonly def
-/PrintHex
-{8{
-dup -28 bitshift 15 and//HexDigits exch 1 getinterval//=only exec
-4 bitshift
-}repeat
-pop
-}bind def
-/PDFR_DEBUG DefaultSwitch
-/PDFR_DUMP DefaultSwitch
-/PDFR_STREAM DefaultSwitch
-/TTFDEBUG DefaultSwitch
-/RotatePages DefaultSwitch
-/FitPages DefaultSwitch
-/CenterPages DefaultSwitch
-/SetPageSize DefaultSwitch
-/error
-{
-counttomark 1 sub -1 0{
-index dup type/arraytype eq{==}{=only}ifelse
-}for
-()=
-cleartomark
-....Undefined
-}bind def
-//SetPageSize{
-//RotatePages//FitPages or//CenterPages or{
-mark(/RotatePages, /FitPages and CenterPages are not allowed with /SetPageSize)//error exec
-}if
-}
-{
-//FitPages//CenterPages and{
-mark(CenterPages is not allowed with /FitPages)//error exec
-}if
-}
-ifelse
-/knownget
-{
-2 copy known{
-get true
-}{
-pop pop false
-}ifelse
-}bind def
-/IsUpper
-{dup(A)0 get ge exch(Z)0 get le and
-}bind def
-/cpa2g{
-dup length array
-0 1 2 index length 1 sub{
-dup 3 index exch get cp2g
-3 copy put pop pop
-}for
-exch pop
-}bind def
-/cpd2g{
-dup length dict exch{
-cp2g 2 index 3 1 roll put
-}forall
-}bind def
-/cps2g{
-dup length string copy
-}bind def
-/cp2gprocs
-<</arraytype//cpa2g/dicttype//cpd2g/packedarraytype//cpa2g/stringtype//cps2g >>
-def
-/cp2g{
-dup gcheck not{
-dup//cp2gprocs 1 index type
-2 copy known{
-get currentglobal 3 1 roll true setglobal exec exch setglobal
-1 index wcheck not{readonly}if
-1 index xcheck{cvx}if
-exch pop
-}{
-pop pop
-}ifelse
-}if
-}bind def
-/BlockBuffer 65535 string def
-/PDFReader currentdict def
-/ObjectRegistryMaxLength 50000 def
-/ObjectRegistry 10 dict def
-ObjectRegistry
-begin 0 ObjectRegistryMaxLength dict def end
-/CurrentObject null def
-/DoneDocumentStructure false def
-/GraphicState 20 dict begin
-/InitialTextMatrix matrix def
-/InitialMatrix matrix currentmatrix def
-currentdict end def
-/TempMatrix matrix def
-/GraphicStateStack 20 array def
-/GraphicStateStackPointer 0 def
-/InitialTextMatrixStack 20 array def
-/InitialTextMatrixStackPointer 0 def
-/PDFColorSpaces 50 dict def
-/InstalledFonts 50 dict def
-/MacRomanEncodingInverse null def
-currentglobal false setglobal
-userdict/PDFR_InitialGS gstate put
-userdict/PDFR_Patterns 50 dict put
-userdict/FuncDataReader 10 dict put
-setglobal
-/InitialExtGState 20 dict begin
-/BG2 currentblackgeneration cp2g def
-/UCR2 currentundercolorremoval cp2g def
-/TR2 currentglobal false setglobal[currentcolortransfer]exch setglobal cp2g def
-/HT currenthalftone cp2g def
-currentdict end readonly def
-/InitialGraphicState 20 dict begin
-/FontSize 0 def
-/CharacterSpacing 0 def
-/TextLeading 0 def
-/TextRenderingMode 0 def
-/WordSpacing 0 def
-currentdict end readonly def
-/SimpleColorSpaceNames 15 dict begin
-/DeviceGray true def
-/DeviceRGB true def
-/DeviceCMYK true def
-currentdict end readonly def
-/1_24_bitshift_1_sub 1 24 bitshift 1 sub def
-/ReadFontProcs 10 dict def
-/GetObject{
-dup ObjectRegistryMaxLength idiv
-//PDFReader /ObjectRegistry get exch knownget
-{exch knownget}{pop false}ifelse
-}bind def
-/PutObject
-{1 index ObjectRegistryMaxLength idiv
-//PDFReader /ObjectRegistry get 1 index knownget{
-exch pop 3 1 roll put}{
-//PDFReader /ObjectRegistry get dup begin
-1 index ObjectRegistryMaxLength dict def
-end exch get 3 1 roll put
-}ifelse
-}bind def
-/Register
-{1 index GetObject{
-dup xcheck{
-4 3 roll pop
-//PDFR_DEBUG{
-(Have a daemon for ) print 2 index ==
-}if
-exec
-}{
-dup null ne{
-mark (The object ) 4 index (is already defined : ) 4 index //error exec
-}{
-pop
-}ifelse
-3 2 roll
-exec
-}ifelse
-}{
-3 2 roll
-exec
-}ifelse
-PutObject
-} bind def
-/IsRegistered{
-GetObject{
-null ne
-}{
-false
-}ifelse
-}bind def
-/GetRegistered{
-dup GetObject not{
-exch mark exch (Object ) exch ( isn't defined before needed (1).) //error exec
-}if
-dup xcheck{
-exch mark exch (Object ) exch ( isn't defined before needed (2).) //error exec
-}{
-dup null eq{
-exch mark exch (Object ) exch ( isn't defined before needed (3).) //error exec
-}if
-exch pop
-}ifelse
-}bind def
-/StandardFontNames<<
-/Times-Roman true
-/Helvetica true
-/Courier true
-/Symbol true
-/Times-Bold true
-/Helvetica-Bold true
-/Courier-Bold true
-/ZapfDingbats true
-/Times-Italic true
-/Helvetica-Oblique true
-/Courier-Oblique true
-/Times-BoldItalic true
-/Helvetica-BoldOblique true
-/Courier-BoldOblique true
->>def
-/CleanAllResources
-{//PDFR_DEBUG{
-(CleanAllResources beg)=
-}if
-//PDFReader/ObjectRegistry get{
-dup length 0 exch 1 exch 1 sub{
-2 copy get dup xcheck{
-pop pop
-}{
-dup null eq{
-pop pop
-}{
-dup type/dicttype eq{/.Global known}{pop false}ifelse{
-pop
-}{
-//PDFR_DEBUG{
-(Dropping )print dup =
-}if
-1 index exch/DroppedObject put
-}ifelse
-}ifelse
-}ifelse
-}for
-pop
-}forall
-FontDirectory length dict begin
-FontDirectory{
-pop
-dup//StandardFontNames exch known not{
-dup null def
-}if
-pop
-}forall
-currentdict
-end{
-pop
-//PDFR_DEBUG{
-(Undefining font )print dup =
-}if
-undefinefont
-}forall
-//PDFR_DEBUG{
-(CleanAllResources end)=
-}if
-}bind def
-/PrintReference
-{
-//PDFR_DEBUG{
-({ )print
-dup{
-=only( )print
-}forall
-( })=
-}if
-}bind def
-/R
-{
-0 ne{
-exch mark exch(A referred object generation )exch( isn't 0.)//error exec
-}if
-[
-exch//GetRegistered/exec load
-]cvx
-//PrintReference exec
-}bind def
-/IsObjRef
-{
-dup type/arraytype eq{
-dup length 3 eq{
-dup xcheck exch
-dup 0 get type/integertype eq 3 2 roll and exch
-dup 1 get//GetRegistered eq 3 2 roll and exch
-2 get/exec load eq and
-}{
-pop false
-}ifelse
-}{
-pop false
-}ifelse
-}bind def
-/DoNothing
-{
-}def
-/RunTypeDaemon
-{
-dup type/dicttype eq{
-dup/Type//knownget exec{
-//PDFReader/TypeDaemons get exch
-//knownget exec{
-exec
-}if
-}if
-}if
-}bind def
-/obj
-{
-//PDFR_DEBUG{
-(Defining )print 1 index =only( )print dup =only( obj)=
-}if
-0 ne{
-exch mark exch(An object generation )exch( isn't 0.)//error exec
-}if
-}bind def
-/endobj
-{
-//PDFR_DEBUG{
-(endobj )=
-}if
-count 1 eq {pop} {dup type/dicttype eq{
-dup/.endobj_daemon//knownget exec{
-//PDFR_DEBUG{(.endobj_daemon for )print 2 index =}if
-exec
-}if
-}if
-dup type/dicttype eq{dup/ImmediateExec known}{false}ifelse{
-pop pop
-}{
-//PDFR_DEBUG{
-(Storing )print 1 index =
-}if
-//RunTypeDaemon exec
-//DoNothing 3 1 roll//Register exec
-}ifelse
-}ifelse}bind def
-/StoreBlock
-{
-//PDFR_DEBUG{
-(StoreBlock )print//PDFReader/BlockCount get =only(, Length = )print dup length =
-}if
-dup length string copy
-//PDFReader/BlockCount get exch
-//PDFReader/CurrentObject get 3 1 roll
-put
-//PDFReader/BlockCount get 1 add
-//PDFReader exch/BlockCount exch put
-}bind def
-/CheckLength
-{dup type/integertype ne{
-mark(Object length isn't an integer.)//error exec
-}if
-}bind def
-/ResolveD
-{
-3 copy pop get
-dup//IsObjRef exec{
-//PDFR_DEBUG{
-(Resolving )print//PrintReference exec
-}if
-exec
-exch exec
-}{
-exch pop
-}ifelse
-dup 4 1 roll
-put
-}bind def
-/ResolveA
-{2 index 2 index get
-dup//IsObjRef exec{
-exec
-exch exec
-3 copy put
-}{
-exch pop
-}ifelse
-exch pop exch pop
-}bind def
-/StoreStream
-{
-dup//PDFReader exch/CurrentObject exch put
-//PDFReader/BlockCount 0 put
-dup/Length//CheckLength//ResolveD exec
-//PDFR_DEBUG{
-(StoreStream Length = )print dup =
-}if
-currentfile exch()/SubFileDecode filter
-{dup//BlockBuffer readstring{
-//StoreBlock exec
-}{
-//StoreBlock exec
-exit
-}ifelse
-}loop
-pop
-//PDFReader/CurrentObject null put
-//PDFR_DEBUG{
-(StoreStream end.)=
-}if
-}bind def
-/MakeStreamDumper
-{
-//PDFR_DEBUG{
-(MakeStreamDumper beg.)=
-}if
-currentglobal exch dup gcheck setglobal
-[exch
-1 dict dup/c 0 put exch
-1024 string
-{readstring pop
-(StreamDumper )print 1 index/c get =string cvs print( )print
-dup length =string cvs print( <)print dup print(>\n)print
-dup length
-3 2 roll
-dup/c get
-3 2 roll
-add/c exch put
-}/exec load
-]
-cvx 0()/SubFileDecode filter
-exch setglobal
-//PDFR_DEBUG{
-(MakeStreamDumper end.)=
-}if
-}bind def
-/ShortFilterNames 15 dict begin
-/AHx/ASCIIHexDecode def
-/A85/ASCII85Decode def
-/LZW/LZWDecode def
-/Fl/FlateDecode def
-/RL/RunLengthDecode def
-/CCF/CCITTFaxDecode def
-/DCT/DCTDecode def
-currentdict end readonly def
-/AppendFilters
-{
-//PDFR_DEBUG{
-(AppendFilters beg.)=
-}if
-dup 3 1 roll
-/Filter//knownget exec{
-dup type/nametype eq{
-dup//ShortFilterNames exch//knownget exec{
-exch pop
-}if
-2 index/DecodeParms//knownget exec{
-exch
-}if
-filter
-}{
-dup 0 exch 1 exch length 1 sub{
-2 copy get
-dup//ShortFilterNames exch//knownget exec{
-exch pop
-}if
-3 1 roll
-4 index/DecodeParms//knownget exec{
-exch get
-}{
-pop null
-}ifelse
-dup null eq{
-pop 3 1 roll filter exch
-}{
-3 1 roll
-4 1 roll filter exch
-}ifelse
-}for
-pop
-}ifelse
-//PDFR_DEBUG//PDFR_DUMP and{
-//MakeStreamDumper exec
-}if
-}if
-exch pop
-//PDFR_DEBUG{
-(AppendFilters end.)=
-}if
-}bind def
-/ExecuteStream
-{
-dup//PDFReader exch/CurrentObject exch put
-dup/Length//CheckLength//ResolveD exec
-//PDFR_DEBUG{
-(ExecuteStream id = )print 2 index =only( Length = )print dup =
-}if
-//PDFReader/InitialGraphicState get
-//PDFReader/GraphicState get copy pop
-//PDFReader/Operators get begin
-currentfile exch ()/SubFileDecode filter
-1 index//AppendFilters exec
-cvx mark exch
-exec
-counttomark 0 ne{
-mark(Data left on ostack after an immediate stream execution.)//error exec
-}if
-cleartomark
-end
-//PDFR_DEBUG{
-(ExecuteStream end.)=
-}if
-//PDFReader/CurrentObject null put
-dup/IsPage known{
-dup/Context get/NumCopies//knownget exec{
-1 sub{
-copypage
-}repeat
-}if
-EPS2Write not {showpage} if
-}if
-}bind def
-/stream
-{
-//PDFR_DEBUG{
-1 index =only( stream)=
-}if
-1 index GetObject{
-dup xcheck{
-exec
-1 index null PutObject
-}{
-pop
-}ifelse
-}if
-dup/ImmediateExec known{
-dup/GlobalExec//knownget exec{
-currentglobal 4 1 roll
-setglobal
-//ExecuteStream exec
-3 2 roll setglobal
-}{
-//ExecuteStream exec
-}ifelse
-}{
-//StoreStream exec
-}ifelse
-dup/.CleanResources//knownget exec{
-/All eq{
-//CleanAllResources exec
-}if
-}if
-}bind def
-/HookFont
-{
-//PDFR_DEBUG{
-(Loaded the font )print dup/FontName get =
-}if
-{
-dup/FontFileType get dup/Type1 eq exch/MMType1 eq or{
-dup/FontName get
-//PDFReader/RemoveFontNamePrefix get exec
-findfont
-exit
-}if
-dup/FontFileType get/TrueType eq{
-//PDFReader/MakeType42 get exec
-//PDFR_DEBUG{
-(Font dict <<)=
-dup{
-1 index/sfnts eq{
-exch pop
-(/sfnts [)print
-{
-(-string\()print length//=only exec(\)- )=
-}forall
-(])=
-}{
-exch//=only exec( )print ==
-}ifelse
-}forall
-(>>)=
-}if
-dup/FontName get exch definefont
-exit
-}if
-mark(FontHook has no proc for )2 index/FontFileType get//error exec
-}loop
-/Font exch put
-}bind def
-/endstream
-{
-}bind def
-/xref
-{
-//PDFR_DEBUG{
-(xref)=
-//PDFR_DUMP{
-//PDFReader/ObjectRegistry get ==
-}if
-}if
-end
-count 0 ne{
-mark(Excessive data on estack at the end of the interpretation.)//error exec
-}if
-currentfile 1(%%EOF)/SubFileDecode filter
-flushfile
-cleardictstack
-}bind def
-/ResolveDict
-{dup{
-pop 1 index exch
-//DoNothing//ResolveD exec
-pop
-}forall
-pop
-}bind def
-/SetupPageView
-{
-//PDFR_DEBUG{
-(SetupPageView beg)=
-}if
-//DSC_OPDFREAD not{
-//GraphicState/InitialMatrix get setmatrix
-}if
-/MediaBox get aload pop
-3 index neg 3 index neg translate
-3 -1 roll sub 3 1 roll exch sub exch
-userdict/.HWMargins//knownget exec{
-aload pop
-}{
-currentpagedevice/.HWMargins//knownget exec{
-aload pop
-}{
-0 0 0 0
-}ifelse
-}ifelse
-currentpagedevice/PageSize get aload pop
-3 -1 roll sub 3 1 roll exch sub exch
-exch 3 index sub exch 3 index sub
-//SetPageSize{
-//PDFR_DEBUG{
-(Setting page size to )print 1 index//=only exec( )print dup =
-}if
-pop pop 3 index 3 index 2 copy
-currentglobal false setglobal 3 1 roll
-currentpagedevice dup /PageSize known{
-/PageSize get aload pop}{
-0 0}ifelse
-round cvi 2 index round cvi eq
-exch round cvi 3 index round cvi eq and{
-//PDFR_DEBUG{(PageSize matches request) == flush}if
-pop pop}{
-/MediaRequested where {
-//PDFR_DEBUG{(MediaRequested is true, check against new request) == flush}if
-/MediaRequested get aload pop
-round cvi 2 index round cvi eq
-exch round cvi 3 index round cvi eq and
-{//PDFR_DEBUG{(MediaRequested same as current request, ignore) == flush}if pop pop false}
-{//PDFR_DEBUG{(MediaRequested different to current request) == flush}if true}ifelse
-}{
-//PDFR_DEBUG{(No MediaRequested yet) == flush}if
-true
-}ifelse
-{
-//PDFR_DEBUG{(Setting pagesize) == flush}if
-2 array astore
-dup /MediaRequested exch def
-<< exch /PageSize exch >> setpagedevice
-/pagesave save def
-}if
-}ifelse
-userdict/PDFR_InitialGS gstate put
-setglobal
-}if
-//RotatePages{
-2 copy gt 6 index 6 index gt ne{
-1 index 5 index le 1 index 5 index le and not
-}{
-false
-}ifelse
-}{
-false
-}ifelse
-{//CenterPages{
-//PDFR_DEBUG{
-(Rotating page, and then centering it)==
-}if
-90 rotate
-0 5 index neg translate
-5 index 1 index exch sub 2 div
-2 index 6 index sub 2 div neg
-translate
-}{
-//FitPages{
-1 index 5 index div 1 index 7 index div
-2 copy gt{
-exch
-}if
-pop dup scale
-}if
-90 rotate
-0 5 index neg translate
-}ifelse
-}{
-//CenterPages{
-//PDFR_DEBUG{
-(Ccentering page)==
-}if
-1 index 6 index sub 2 div
-1 index 6 index sub 2 div
-translate
-}{
-//FitPages{
-1 index 6 index div 1 index 6 index div
-2 copy gt{
-exch
-}if
-pop dup scale
-}if
-}ifelse
-}ifelse
-pop pop
-translate
-pop pop
-//PDFR_DEBUG{
-(SetupPageView end)=
-}if
-}bind def
-/PageContentsDaemon
-{
-//PDFR_DEBUG{
-(Executing PageContentsDaemon for )print 2 index =
-}if
-1 index exch/Context exch put
-dup/ImmediateExec true put
-dup/IsPage true put
-SetPageSize {dup/Context get//SetupPageView exec}if
-}bind def
-/FontFileDaemon
-{
-//PDFR_DEBUG{
-(Executing FontFileDaemon for )print 2 index =
-}if
-dup/FontFileType get
-2 index exch
-dup//ReadFontProcs exch//knownget exec{
-exch pop exec
-}{
-mark(FontFile reader for )2 index( isn't implemented yet.)//error exec
-}ifelse
-//PDFR_DEBUG{
-(FontFileDaemon end)=
-}if
-pop
-}bind def
-/FontDescriptorDaemon
-{
-//PDFR_DEBUG{
-(Executing FontDescriptorDaemon for )print 2 index =
-}if
-2 copy/FontResource exch put
-/Subtype get 1 index exch/FontFileType exch put
-}bind def
-/UnPDFEscape{
-dup dup length string cvs
-dup(#)search{
-{
-pop
-(16#--)2 index 0 2 getinterval
-1 index 3 2 getinterval copy pop
-cvi
-0 exch put
-0
-1 index 2 1 index length 2 sub getinterval
-3 copy putinterval
-length
-3 copy exch put
-getinterval
-(#)search not{
-pop exit
-}if
-}loop
-(\0)search pop exch pop exch pop
-cvn
-exch pop
-}{
-pop pop
-}ifelse
-}bind def
-/TypeDaemons<<
-/Page
-{//PDFR_DEBUG{
-(Recognized a page.)=
-}if
-dup/Contents//knownget exec{
-0 get//DoNothing exch
-[
-3 index//PageContentsDaemon/exec load
-]cvx
-//Register exec
-}{
-(fixme: page with no Contents won't be printed.)=
-}ifelse
-}bind
-/FontDescriptor
-{//PDFR_DEBUG{
-(Recognized a font descriptor.)=
-}if
-dup/FontName//knownget exec{
-1 index/FontName 3 -1 roll//UnPDFEscape exec put
-}if
-dup dup/FontFile known{/FontFile}{/FontFile2}ifelse
-//knownget exec{
-0 get//DoNothing exch
-[
-3 index//FontFileDaemon/exec load
-]cvx
-//Register exec
-}{
-(Font descriptor )print 1 index =only( has no FontFile.)=
-}ifelse
-}bind
-/Font
-{//PDFR_DEBUG{
-(Recognized a font resource.)=
-}if
-dup/BaseFont//knownget exec{
-//UnPDFEscape exec 2 copy/BaseFont exch put
-//PDFReader/RemoveFontNamePrefix get exec
-currentglobal exch
-dup/Font resourcestatus{
-pop pop
-//PDFReader/GetInstalledFont get exec pop
-}{
-pop
-}ifelse
-setglobal
-}if
-dup/FontDescriptor//knownget exec{
-0 get
-dup//IsRegistered exec{
-//PDFR_DEBUG{
-(already registered )print dup =
-}if
-pop
-}{
-//DoNothing exch
-[
-3 index//FontDescriptorDaemon/exec load
-]cvx
-//Register exec
-}ifelse
-}if
-}bind
->>def
-/MakeStreamReader
-{dup
-[
-exch
-//PDFR_DEBUG{
-(Stream proc )
-/print load
-//PDFR_STREAM{
-(<)
-/print load
-}if
-}if
-1 dict dup/i -1 put
-/dup load
-/i
-/get load
-1
-/add load
-/dup load
-3
-1
-/roll load
-/i
-/exch load
-/put load
-//knownget
-/exec load
-/not load
-{()}
-/if load
-//PDFR_DEBUG{
-//PDFR_STREAM{
-/dup load
-/print load
-(>)
-/print load
-}if
-( end of stream proc.\n)
-/print load
-}if
-]cvx
-//PDFR_DEBUG{
-(Stream reader )print dup ==
-}if
-0()/SubFileDecode filter
-exch//AppendFilters exec
-}bind def
-/RunDelayedStream
-{
-//GraphicState/InitialTextMatrix get
-//InitialTextMatrixStack//PDFReader/InitialTextMatrixStackPointer get
-2 copy get null eq{
-2 copy currentglobal true setglobal matrix exch setglobal put
-}if
-get copy pop
-//PDFReader/InitialTextMatrixStackPointer 2 copy get 1 add put
-//MakeStreamReader exec
-mark exch
-cvx exec
-counttomark 0 ne{
-mark(Data left on ostack after a delayed stream execution.)//error exec
-}if
-cleartomark
-//PDFReader/InitialTextMatrixStackPointer 2 copy get 1 sub put
-//InitialTextMatrixStack//PDFReader/InitialTextMatrixStackPointer get get
-//GraphicState/InitialTextMatrix get
-copy pop
-}bind def
-//ReadFontProcs begin
-/Type1
-{//PDFR_DEBUG{
-(ReadFontProcs.Type1)=
-}if
-dup/.endobj_daemon[4 index//HookFont/exec load]cvx put
-dup/ImmediateExec true put
-/GlobalExec true put
-}bind def
-/MMType1//Type1 def
-/TrueType
-{//PDFR_DEBUG{
-(ReadFontProcs.TrueType)=
-}if
-dup/.endobj_daemon[4 index//HookFont/exec load]cvx put
-pop
-}bind def
-end
-/.opdloadttfontdict 50 dict def
-.opdloadttfontdict begin
-/maxstring 65400 def
-end
-/.InsertionSort
-{
-/CompareProc exch def
-/Array exch def
-1 1 Array length 1 sub
-{
-/Ix exch def
-/Value1 Array Ix get def
-/Jx Ix 1 sub def
-{
-Jx 0 lt{
-exit
-}if
-/Value2 Array Jx get def
-Value1 Value2 CompareProc{
-exit
-}if
-Array Jx 1 add Value2 put
-/Jx Jx 1 sub def
-}loop
-Array Jx 1 add Value1 put
-}for
-Array
-}bind def
-/putu16{
-3 copy -8 bitshift put
-exch 1 add exch 16#ff and put
-}bind def
-/putu32{
-3 copy -16 bitshift putu16
-exch 2 add exch 16#ffff and putu16
-}bind def
-/.readtable{
-dup dup 1 and add string
-dup 0 4 -1 roll getinterval
-3 -1 roll exch
-dup()ne{readstring}if pop pop
-}bind def
-/.readbigtable{
-dup maxstring lt{
-.readtable
-}{
-currentuserparams/VMReclaim get -2 vmreclaim
-[4 2 roll{
-dup maxstring le{exit}if
-1 index maxstring string readstring pop 3 1 roll maxstring sub
-}loop .readtable]
-exch vmreclaim
-}ifelse
-}bind def
-/ReadTTF
-{
-.opdloadttfontdict begin
-/TTFontFile exch def
-/TableDir TTFontFile 12 string readstring pop def
-/tables TTFontFile TableDir 4 getu16 16 mul string readstring pop def
-/tabarray tables length 16 idiv array def
-TableDir 0 4 getinterval(ttcf)eq{
-QUIET not{(Can't handle TrueType font Collections.)=}if
-/.loadttfonttables cvx/invalidfont signalerror
-}{
-0 16 tables length 1 sub{
-dup
-tables exch 16 getinterval
-exch 16 div cvi exch
-tabarray 3 1 roll put
-}for
-}ifelse
-tabarray{exch 8 getu32 exch 8 getu32 gt}.InsertionSort pop
-/Read TableDir length tables length add def
-/tabs[
-tabarray{
-dup 8 getu32
-Read sub
-dup 0 gt{
-dup string TTFontFile exch readstring pop pop
-Read add/Read exch def
-}{
-pop
-}ifelse
-12 getu32
-dup Read add
-/Read exch def
-TTFontFile exch .readbigtable
-}forall
-]def
-end
-}bind def
-/GetLocaType
-{
-0 1 tabarray length 1 sub{
-dup tabarray exch get
-0 4 getinterval(head)eq{
-tabs exch get
-50 gets16
-/LocaType exch def
-exit
-}{
-pop
-}ifelse
-}for
-}bind def
-/GetNumGlyphs
-{
-0 1 tabarray length 1 sub{
-dup tabarray exch get
-0 4 getinterval(maxp)eq{
-tabs exch get
-4 getu16
-/NumGlyphs exch def
-exit
-}{
-pop
-}ifelse
-}for
-}bind def
-/StringToLoca
-{
-/LocaIndex exch def
-/StringOffset 0 def
-{
-dup length StringOffset gt{
-dup
-LocaType 1 eq{
-StringOffset getu32
-LocaArray LocaIndex 3 -1 roll put
-/LocaIndex LocaIndex 1 add def
-/StringOffset StringOffset 4 add
-def
-}{
-StringOffset getu16 2 mul
-LocaArray length LocaIndex gt {LocaArray LocaIndex 3 -1 roll put}{pop}ifelse/LocaIndex LocaIndex 1 add def
-/StringOffset StringOffset 2 add
-def
-}ifelse
-}{
-pop
-LocaIndex
-exit
-}ifelse
-}loop
-}bind def
-/GetSortedLoca
-{
-NumGlyphs 1 add array/LocaArray exch def
-0 1 tabarray length 1 sub{
-dup tabarray exch get
-0 4 getinterval(loca)eq{
-tabs exch get
-exit
-}{
-pop
-}ifelse
-}for
-dup type/stringtype eq{
-0 StringToLoca pop
-}{
-0 exch
-{
-exch StringToLoca
-}forall
-pop
-}ifelse
-LocaArray{gt}.InsertionSort pop
-}bind def
-/GetWorkingString
-{
-WorkString 0
-GlyfArray GlyfStringIndex get
-putinterval
-/WorkBytes GlyfArray GlyfStringIndex get length def
-/GlyfStringIndex GlyfStringIndex 1 add def
-}bind def
-/GetWorkingBytes
-{
-/BytesToRead exch def
-WorkString 0 BytesToRead getinterval
-dup length string copy
-WorkString BytesToRead WorkBytes BytesToRead sub getinterval
-dup length string copy
-WorkString 0 3 -1 roll putinterval
-/WorkBytes WorkBytes BytesToRead sub def
-}bind def
-/GetGlyfBytes
-{
-/ToRead exch def
-WorkBytes 0 eq{
-GetWorkingString
-}if
-WorkBytes ToRead ge{
-ToRead string dup 0
-ToRead GetWorkingBytes putinterval
-}{
-ToRead string
-dup
-0
-WorkString 0 WorkBytes getinterval
-putinterval
-dup
-WorkBytes
-ToRead WorkBytes sub
-GetWorkingString
-GetWorkingBytes
-putinterval
-}ifelse
-}bind def
-/SplitGlyf
-{
-/GlyfArray exch def
-/DestArray GlyfArray length 2 mul array def
-/DestArrayIndex 0 def
-/LastLoca 0 def
-/NextLocaIndex 0 def
-/LastLocaIndex 0 def
-/GlyfStringIndex 0 def
-/WorkString maxstring string def
-/WorkBytes 0 def
-{
-LocaArray NextLocaIndex get
-LastLoca sub maxstring gt
-{
-LocaArray LastLocaIndex get LastLoca sub
-GetGlyfBytes
-DestArray DestArrayIndex 3 -1 roll put
-/DestArrayIndex DestArrayIndex 1 add def
-LocaArray LastLocaIndex get/LastLoca exch def
-}{
-/LastLocaIndex NextLocaIndex def
-/NextLocaIndex NextLocaIndex 1 add def
-NextLocaIndex NumGlyphs gt
-{
-WorkBytes
-GlyfStringIndex GlyfArray length lt{
-GlyfArray GlyfStringIndex get length
-add string dup
-0
-WorkString 0 WorkBytes getinterval
-putinterval
-dup
-WorkBytes
-GetWorkingString
-WorkString 0 WorkBytes getinterval
-putinterval
-}{
-pop
-WorkString 0 WorkBytes getinterval
-}ifelse
-dup length string copy
-DestArray DestArrayIndex 3 -1 roll put
-exit
-}if
-}ifelse
-}loop
-DestArray
-}bind def
-/ProcessTTData
-{
-.opdloadttfontdict begin
-0 1 tabarray length 1 sub{
-/ix exch def
-tabarray ix get
-12 getu32 dup maxstring le{
-dup 4 mod 0 ne{
-4 div cvi 1 add 4 mul string/newstring exch def
-/oldstring tabs ix get def
-newstring 0 oldstring putinterval
-0 1 newstring length oldstring length sub 1 sub{
-newstring exch oldstring length add 0 put
-}for
-tabs ix newstring put
-}{
-pop
-}ifelse
-}{
-dup 4 mod 0 ne{
-dup maxstring idiv maxstring mul sub
-4 idiv 1 add 4 mul string/newstring exch def
-tabs ix get
-dup length 1 sub dup/iy exch def get/oldstring exch def
-newstring 0 oldstring putinterval
-0 1 newstring length oldstring length sub 1 sub{
-newstring exch oldstring length add 0 put
-}for
-tabs ix get iy newstring put
-}{
-pop
-}ifelse
-}ifelse
-}for
-0 1 tabarray length 1 sub{
-dup tabarray exch get
-dup 12 getu32 maxstring gt{
-0 4 getinterval dup(glyf)eq{
-pop
-GetLocaType
-GetNumGlyphs
-GetSortedLoca
-dup tabs exch get
-SplitGlyf
-tabs 3 1 roll put
-}{
-(Warning, table )print print( > 64Kb\n)print
-pop
-}ifelse
-}{
-pop
-pop
-}ifelse
-}for
-end
-}bind def
-/Makesfnts
-{
-.opdloadttfontdict begin
-0
-tabs{
-dup type/stringtype eq{
-pop
-1 add
-}{
-{
-type/stringtype eq{
-1 add
-}if
-}forall
-}ifelse
-}forall
-1 add
-/TTOffset
-TableDir length
-tabarray length 16 mul add
-def
-0
-tabarray{
-exch dup 1 add
-3 1 roll
-dup
-tabs exch get
-dup type/stringtype eq{
-length
-2 index exch
-TTOffset
-dup 3 1 roll add
-/TTOffset exch def
-8 exch putu32
-exch tabarray 3 1 roll
-put
-}{
-0 exch
-{
-dup type/stringtype eq{
-length add
-}{
-pop
-}ifelse
-}forall
-2 index exch
-TTOffset
-dup 3 1 roll add
-/TTOffset exch def
-8 exch putu32
-exch tabarray 3 1 roll
-put
-}ifelse
-}forall
-pop
-array
-dup 0
-TableDir length
-tables length add
-string
-dup 0 TableDir putinterval
-dup 12 tables putinterval
-put
-dup
-/ix 1 def
-tabs{
-dup type/stringtype eq{
-ix exch
-put dup
-/ix ix 1 add def
-}{
-{
-dup type/stringtype eq{
-ix exch put dup
-/ix ix 1 add def
-}{
-pop
-}ifelse
-}forall
-}ifelse
-}forall
-pop
-end
-}bind def
-/MakeType42
-{
-//PDFR_DEBUG{
-(MakeType42 beg)=
-}if
-10 dict begin
-/FontName 1 index/FontName get def
-/FontType 42 def
-/FontMatrix[1 0 0 1 0 0]def
-/FontBBox 1 index/FontBBox get def
-dup/FontResource get
-dup/Encoding known{
-//PDFReader/ObtainEncoding get exec
-/Encoding get
-}{
-pop null
-}ifelse
-/PDFEncoding exch def
-/CharStrings 2 index//PDFReader/MakeTTCharStrings get exec def
-/sfnts 2 index//MakeStreamReader exec
-ReadTTF
-ProcessTTData
-Makesfnts
-def
-/Encoding StandardEncoding def
-/PaintType 0 def
-currentdict end
-//PDFR_DEBUG{
-(MakeType42 end)=
-}if
-}bind def
-/GetInstalledFont
-{
-dup//InstalledFonts exch knownget{
-exch pop
-}{
-dup findfont dup 3 1 roll
-//InstalledFonts 3 1 roll put
-}ifelse
-}bind def
-/RemoveFontNamePrefix
-{//=string cvs true
-0 1 5{
-2 index exch get//IsUpper exec not{
-pop false exit
-}if
-}for
-{(+)search{
-pop pop
-}if
-}if
-cvn
-}bind def
-/CheckFont
-{dup/Type get/Font ne{
-mark(Resource )3 index( must have /Type/Font .)//error exec
-}if
-}bind def
-/CheckEncoding
-{dup type/nametype ne{
-dup/Type get/Encoding ne{
-mark(Resource )3 index( must have /Type/Encoding .)//error exec
-}if
-}if
-}bind def
-/ObtainEncoding
-{dup/Encoding known{
-dup dup/Encoding//CheckEncoding//ResolveD exec
-dup type dup/arraytype eq exch/packedarraytype eq or{
-pop pop
-}{
-dup type/nametype eq{
-/Encoding findresource
-}{
-dup/BaseEncoding//knownget exec not{
-/StandardEncoding
-}if
-/Encoding findresource
-exch
-/Differences//knownget exec{
-exch dup length array copy exch
-0 exch
-{
-dup type/integertype eq{
-exch pop
-}{
-3 copy put pop
-1 add
-}ifelse
-}forall
-pop
-}if
-}ifelse
-/Encoding exch put
-}ifelse
-}{
-dup/Encoding/StandardEncoding/Encoding findresource put
-}ifelse
-}bind def
-/ObtainMetrics
-{dup/Widths//knownget exec{
-1 index/Encoding get
-256 dict
-3 index/Subtype get/TrueType eq{
-1000
-}{
-1
-}ifelse
-4 index/MissingWidth//knownget exec not{
-0
-}if
-5 index/FirstChar//knownget exec not{
-0
-}if
-6 5 roll
-dup 0 exch 1 exch length 1 sub{
-2 copy get
-exch 3 index add
-7 index exch get
-dup dup null ne exch/.notdef ne and{
-6 index 3 1 roll exch
-6 index div
-3 copy pop//knownget exec{
-0 eq
-}{
-true
-}ifelse
-{put
-}{
-pop pop pop
-}ifelse
-}{
-pop pop
-}ifelse
-}for
-pop pop pop pop exch pop
-1 index exch/Metrics exch put
-}{
-dup/MissingWidth//knownget exec{
-256 dict
-2 index/Encoding get{
-dup null ne{
-3 copy 3 2 roll put
-}if
-pop
-}forall
-exch pop
-1 index exch/Metrics exch put
-}if
-}ifelse
-}bind def
-/NotDef
-{
-FontMatrix aload pop pop pop exch pop exch pop
-1 exch div exch
-1 exch div exch
-1 index 0 setcharwidth
-0 setlinewidth
-0 0 moveto
-2 copy rlineto
-1 index 0 rlineto
-neg exch neg exch rlineto
-closepath stroke
-}bind def
-/SaveResourcesToStack{[//PDFReader/OldResources known{//PDFReader/OldResources get}{null}ifelse
-//PDFReader/CurrentObject get/Context get/Resources get]//PDFReader/OldResources 3 -1 roll put}bind def
-/RestoreResourcesFromStack{//PDFReader/OldResources get dup
-0 get//PDFReader/OldResources 3 -1 roll put
-1 get//PDFReader/CurrentObject get/Context get/Resources 3 -1 roll put} bind def
-/BuildChar
-{//PDFR_DEBUG{
-(BuildChar )print dup//=only exec( )print
-}if
-exch begin
-Encoding exch get
-//PDFR_DEBUG{
-dup =
-}if
-dup null eq{
-pop//NotDef exec
-}{
-CharProcs exch//knownget exec{currentfont/Font get/Resources//knownget exec{exec SaveResourcesToStack//PDFReader/CurrentObject get/Context get/Resources 3 -1 roll put//RunDelayedStream exec RestoreResourcesFromStack}{//RunDelayedStream exec}ifelse}{
-//NotDef exec
-}ifelse
-}ifelse
-end
-}bind def
-/printdict
-{(<<)=
-{exch = ==}forall
-(>>)=
-}bind def
-/printfont
-{
-dup{
-exch dup =
-dup/Encoding eq{
-pop =
-}{
-dup/FontInfo eq exch/Private eq or{
-//printdict exec
-}{
-==
-}ifelse
-}ifelse
-}forall
-}bind def
-/ScaleMetrics
-{1 index{
-2 index div
-3 index
-3 1 roll put
-}forall
-pop
-}bind def
-/ResolveAndSetFontAux
-{exch dup
-//PDFReader/CurrentObject get/Context get/Resources get
-/Font//DoNothing//ResolveD exec
-exch//CheckFont//ResolveD exec
-dup/Font//knownget exec{
-exch pop exch pop
-}{
-{
-dup/Subtype get dup dup/Type1 eq exch/TrueType eq or exch/MMType1 eq or{
-exch pop
-dup/BaseFont get
-//RemoveFontNamePrefix exec
-//PDFR_DEBUG{
-(Font )print dup =
-}if
-1 index/FontDescriptor known{
-//PDFR_DEBUG{
-(Font from a font descriptor.)=
-}if
-1 index
-/FontDescriptor//DoNothing//ResolveD exec
-/Font//knownget exec{
-exch pop
-}{
-//PDFR_DEBUG{
-(Font descriptor has no Font resolved.)=
-}if
-//GetInstalledFont exec
-}ifelse
-}{
-//GetInstalledFont exec
-}ifelse
-exch
-dup/Encoding known not{
-1 index/Encoding get 1 index exch/Encoding exch put
-}if
-//ObtainEncoding exec
-//ObtainMetrics exec
-exch
-dup length dict copy
-dup 2 index/Encoding get
-/Encoding exch put
-1 index/Metrics//knownget exec{
-2 index/Subtype get/TrueType ne{
-1 index/FontMatrix get 0 get
-dup 0 eq{
-pop
-1 index/FontMatrix get 1 get
-dup 0 eq{pop 1}if
-}if
-0.001 div
-//ScaleMetrics exec
-}{
-1 index/sfnts known not{
-1 index/FontMatrix get 0 get
-dup 0 eq{
-pop
-1 index/FontMatrix get 1 get
-dup 0 eq{pop 1}if
-}if
-//ScaleMetrics exec
-}if
-}ifelse
-1 index exch/Metrics exch put
-}if
-1 index/BaseFont get
-exch
-dup/FID undef
-dup/UniqueID undef
-definefont
-dup 3 1 roll
-/Font exch put
-exit
-}if
-dup/Subtype get/Type3 eq{
-//ObtainEncoding exec
-2 copy exch/FontName exch put
-dup/CharProcs get//ResolveDict exec
-dup/FontType 3 put
-dup/BuildChar//BuildChar put
-dup dup/Font exch put
-dup 3 1 roll
-definefont
-2 copy ne{
-2 copy/Font exch put
-}if
-exch pop
-exit
-}if
-dup/Subtype get/Type0 eq{
-}if
-dup/Subtype get/CIDFontType0 eq{
-}if
-dup/Subtype get/CIDFontType2 eq{
-}if
-mark(Unknown font type )2 index/Subtype get//error exec
-}loop
-}ifelse
-exch scalefont setfont
-}bind def
-/ResolveAndSetFont
-{
-//ResolveAndSetFontAux exec
-}bind def
-/.knownget
-{2 copy known{
-get true
-}{
-pop pop false
-}ifelse
-}bind def
-/.min
-{2 copy lt{
-exch
-}if
-pop
-}bind def
-/.max
-{2 copy gt{
-exch
-}if
-pop
-}bind def
-/.dicttomark
-{>>
-}bind def
-/getu16{
-2 copy get 8 bitshift 3 1 roll 1 add get add
-}bind def
-/gets16{
-getu16 16#8000 xor 16#8000 sub
-}bind def
-/getu32{
-2 copy getu16 16 bitshift 3 1 roll 2 add getu16 add
-}bind def
-/gets32{
-2 copy gets16 16 bitshift 3 1 roll 2 add getu16 add
-}bind def
-/cmapformats mark
-0{
-6 256 getinterval{}forall 256 packedarray
-}bind
-2{
-/sHK_sz 2 def
-/sH_sz 8 def
-dup 2 getu16/cmapf2_tblen exch def
-dup 4 getu16/cmapf2_lang exch def
-dup 6 256 sHK_sz mul getinterval/sHKs exch def
-0
-0 1 255{
-sHKs exch
-2 mul getu16
-1 index
-1 index
-lt{exch}if pop
-}for
-/sH_len exch def
-dup 6 256 sHK_sz mul add
-cmapf2_tblen 1 index sub getinterval
-/sH_gIA exch def
-/cmapf2_glyph_array 65535 array def
-/.cmapf2_putGID{
-/cmapf2_ch cmapf2_ch_hi 8 bitshift cmapf2_ch_lo add def
-firstCode cmapf2_ch_lo le
-cmapf2_ch_lo firstCode entryCount add lt
-and{
-sH_offset idRangeOffset add
-cmapf2_ch_lo firstCode sub 2 mul
-add 6 add
-sH_gIA exch getu16
-dup 0 gt{
-idDelta add
-cmapf2_glyph_array exch cmapf2_ch exch put
-}{
-pop
-}ifelse
-}{
-}ifelse
-}def
-16#00 1 16#ff{
-/cmapf2_ch_hi exch def
-sHKs cmapf2_ch_hi sHK_sz mul getu16
-/sH_offset exch def
-sH_gIA sH_offset sH_sz getinterval
-dup 0 getu16/firstCode exch def
-dup 2 getu16/entryCount exch def
-dup 4 gets16/idDelta exch def
-dup 6 getu16/idRangeOffset exch def
-pop
-sH_offset 0 eq{
-/cmapf2_ch_lo cmapf2_ch_hi def
-/cmapf2_ch_hi 0 def
-.cmapf2_putGID
-}{
-16#00 1 16#ff{
-/cmapf2_ch_lo exch def
-.cmapf2_putGID
-}for
-}ifelse
-}for
-pop
-0 1 cmapf2_glyph_array length 1 sub{
-dup cmapf2_glyph_array exch get
-null eq{cmapf2_glyph_array exch 0 put}{pop}ifelse
-}for
-cmapf2_glyph_array
-}bind
-4{
-/etab exch def
-/nseg2 etab 6 getu16 def
-14/endc etab 2 index nseg2 getinterval def
-2 add
-nseg2 add/startc etab 2 index nseg2 getinterval def
-nseg2 add/iddelta etab 2 index nseg2 getinterval def
-nseg2 add/idroff etab 2 index nseg2 getinterval def
-pop
-/firstcode startc 0 getu16 16#ff00 and dup 16#f000 ne{pop 0}if def
-/lastcode firstcode def
-/striptopbyte false def
-/putglyph{
-glyphs code 3 -1 roll put/code code 1 add def
-}bind def
-/numcodes 0 def/glyphs 0 0 2 nseg2 3 sub{
-/i2 exch def
-/scode startc i2 getu16 def
-/ecode endc i2 getu16 def
-ecode lastcode gt {
-/lastcode ecode def
-}if
-}for pop
-firstcode 16#f000 ge lastcode firstcode sub 255 le and {
-lastcode 255 and
-/striptopbyte true def
-} {
-lastcode
-}ifelse
-1 add
-array def
-glyphs length 1024 ge{
-.array1024z 0 1024 glyphs length 1023 sub{glyphs exch 2 index putinterval}for
-glyphs dup length 1024 sub 3 -1 roll
-putinterval
-}{
-0 1 glyphs length 1 sub{glyphs exch 0 put}for
-}ifelse
-/numcodes 0 def/code 0 def
-0 2 nseg2 3 sub{
-/i2 exch def
-/scode startc i2 getu16 def
-/ecode endc i2 getu16 def
-numcodes scode firstcode sub
-exch sub 0 .max dup/code exch code exch add def
-ecode scode sub 1 add add numcodes add/numcodes exch def
-/delta iddelta i2 gets16 def
-TTFDEBUG{
-(scode=)print scode =only
-( ecode=)print ecode =only
-( delta=)print delta =only
-( droff=)print idroff i2 getu16 =
-}if
-idroff i2 getu16 dup 0 eq{
-pop scode delta add 65535 and 1 ecode delta add 65535 and
-striptopbyte {
-/code scode 255 and def
-} {
-/code scode def
-} ifelse
-{putglyph}for
-}{
-/gloff exch 14 nseg2 3 mul add 2 add i2 add add def
-striptopbyte {
-/code scode 255 and def
-} {
-/code scode def
-} ifelse
-0 1 ecode scode sub{
-2 mul gloff add etab exch getu16
-dup 0 ne{delta add 65535 and}if putglyph
-}for
-}ifelse
-}for glyphs/glyphs null def
-}bind
-6{
-dup 6 getu16/firstcode exch def dup 8 getu16/ng exch def
-firstcode ng add array
-0 1 firstcode 1 sub{2 copy 0 put pop}for
-dup firstcode ng getinterval
-0 1 ng 1 sub{
-dup 2 mul 10 add 4 index exch getu16 3 copy put pop pop
-}for pop exch pop
-}bind
-.dicttomark readonly def
-/cmaparray{
-dup 0 getu16 cmapformats exch .knownget{
-TTFDEBUG{
-(cmap: format )print 1 index 0 getu16 = flush
-}if exec
-}{
-(Can't handle format )print 0 getu16 = flush
-0 1 255{}for 256 packedarray
-}ifelse
-TTFDEBUG{
-(cmap: length=)print dup length = dup ==
-}if
-}bind def
-/postremap mark
-/Cdot/Cdotaccent
-/Edot/Edotaccent
-/Eoverdot/Edotaccent
-/Gdot/Gdotaccent
-/Ldot/Ldotaccent
-/Zdot/Zdotaccent
-/cdot/cdotaccent
-/edot/edotaccent
-/eoverdot/edotaccent
-/gdot/gdotaccent
-/ldot/ldotaccent
-/zdot/zdotaccent
-.dicttomark readonly def
-/get_from_stringarray
-{1 index type/stringtype eq{
-get
-}{
-exch{
-2 copy length ge{
-length sub
-}{
-exch get exit
-}ifelse
-}forall
-}ifelse
-}bind def
-/getinterval_from_stringarray
-{
-2 index type/stringtype eq{
-getinterval
-}{
-string exch 0
-4 3 roll{
-dup length
-dup 4 index lt{
-3 index exch sub
-exch pop 3 1 roll exch pop
-}{
-dup 3 1 roll
-4 index sub
-5 index length 4 index sub
-2 copy gt{exch}if pop
-dup 3 1 roll
-5 index exch getinterval
-5 index 4 index 3 index
-getinterval
-copy pop
-exch pop add exch pop 0 exch
-dup 3 index length ge{exit}if
-}ifelse
-}forall
-pop pop
-}ifelse
-}bind def
-/string_array_size
-{dup type/stringtype eq{
-length
-}{
-0 exch{length add}forall
-}ifelse
-}bind def
-/postformats mark
-16#00010000{
-pop MacGlyphEncoding
-}
-16#00020000{
-dup dup type/arraytype eq{0 get}if length 36 lt{
-TTFDEBUG{(post format 2.0 invalid.)= flush}if
-pop[]
-}{
-/postglyphs exch def
-/post_first postglyphs dup type/arraytype eq{0 get}if def
-post_first 32 getu16/numglyphs exch def
-/glyphnames numglyphs 2 mul 34 add def
-/postpos glyphnames def
-/total_length postglyphs//string_array_size exec def
-numglyphs array 0 1 numglyphs 1 sub{
-postpos total_length ge{
-1 numglyphs 1 sub{1 index exch/.notdef put}for
-exit
-}if
-postglyphs postpos//get_from_stringarray exec
-postglyphs postpos 1 add 2 index//getinterval_from_stringarray exec cvn
-exch postpos add 1 add/postpos exch def
-2 index 3 1 roll
-put
-}for
-/postnames exch def
-numglyphs array 0 1 numglyphs 1 sub{
-dup 2 mul 34 add postglyphs exch 2//getinterval_from_stringarray exec
-dup 0 get 8 bitshift exch 1 get add dup 258 lt{
-MacGlyphEncoding exch get
-}{
-dup 32768 ge{
-pop/.notdef
-}{
-258 sub dup postnames length ge{
-TTFDEBUG{(   *** warning: glyph index past end of 'post' table)= flush}if
-pop
-exit
-}if
-postnames exch get
-postremap 1 index .knownget{exch pop}if
-}ifelse
-}ifelse
-2 index 3 1 roll put
-}for
-}
-ifelse
-}bind
-16#00030000{
-pop[]
-}bind
-.dicttomark readonly def
-/first_post_string
-{
-post dup type/arraytype eq{0 get}if
-}bind def
-/.getpost{
-/glyphencoding post null eq{
-TTFDEBUG{(post missing)= flush}if[]
-}{
-postformats first_post_string 0 getu32 .knownget{
-TTFDEBUG{
-(post: format )print
-first_post_string
-dup 0 getu16 =only(,)print 2 getu16 = flush
-}if
-post exch exec
-}{
-TTFDEBUG{(post: unknown format )print post 0 getu32 = flush}if[]
-}ifelse
-}ifelse def
-}bind def
-/TTParser<<
-/Pos 0
-/post null
->>def
-/readu8
-{read not{
-mark(Insufficient data in the stream.)//error exec
-}if
-}bind def
-/readu16
-{dup//readu8 exec 8 bitshift exch//readu8 exec or
-}bind def
-/reads16
-{//readu16 exec 16#8000 xor 16#8000 sub
-}bind def
-/readu32
-{dup//readu16 exec 16 bitshift exch//readu16 exec or
-}bind def
-/reads32
-{dup//reads16 exec 16 bitshift exch//readu16 exec or
-}bind def
-/SkipToPosition
-{dup//TTParser/Pos get
-exch//TTParser exch/Pos exch put
-sub
-//PDFR_DEBUG{
-(Skipping )print dup//=only exec( bytes.)=
-}if
-dup 0 eq{
-pop pop
-}{
-dup 3 1 roll
-()/SubFileDecode filter
-exch
-{1 index//BlockBuffer readstring pop length
-dup 0 eq{pop exch pop exit}if
-sub
-}loop
-0 ne{
-mark(Insufficient data in the stream for SkipToPosition.)//error exec
-}if
-}ifelse
-}bind def
-/TagBuffer 4 string def
-/ParseTTTableDirectory
-{//PDFR_DEBUG{
-(ParseTTTableDirectory beg)=
-}if
-15 dict begin
-dup//readu32 exec 16#00010000 ne{
-mark(Unknown True Type version.)//error exec
-}if
-dup//readu16 exec/NumTables exch def
-dup//readu16 exec/SearchRange exch def
-dup//readu16 exec/EntrySelector exch def
-dup//readu16 exec/RangeShift exch def
-//PDFR_DEBUG{
-(NumTables = )print NumTables =
-}if
-NumTables{
-dup//TagBuffer readstring not{
-mark(Could not read TT tag.)//error exec
-}if
-cvn
-[2 index//readu32 exec pop
-2 index//readu32 exec
-3 index//readu32 exec
-]
-//PDFR_DEBUG{
-2 copy exch//=only exec( )print ==
-}if
-def
-}repeat
-pop
-//TTParser/Pos 12 NumTables 16 mul add put
-currentdict end
-//PDFR_DEBUG{
-(ParseTTTableDirectory end)=
-}if
-}bind def
-/ParseTTcmap
-{//PDFR_DEBUG{
-(ParseTTcmap beg)=
-}if
-/cmap get aload pop
-3 1 roll
-7 dict begin
-//PDFR_DEBUG{
-(Current position = )print//TTParser/Pos get =
-(cmap position = )print dup =
-}if
-1 index exch//SkipToPosition exec
-//TTParser/Pos get/TablePos exch def
-dup//readu16 exec pop
-dup//readu16 exec/NumEncodings exch def
-//PDFR_DEBUG{
-(NumEncodings = )print NumEncodings =
-}if
-null
-NumEncodings{
-1 index//readu32 exec
-2 index//readu32 exec
-3 array dup 3 2 roll 0 exch put
-2 index null ne{
-dup 0 get 3 index 0 get sub
-3 index exch 1 exch put
-}if
-dup 4 3 roll pop 3 1 roll
-def
-}repeat
-dup 0 get
-4 3 roll exch sub
-1 exch put
-//PDFR_DEBUG{
-currentdict{
-exch dup type/integertype eq{
-//PrintHex exec( )print ==
-}{
-pop pop
-}ifelse
-}forall
-}if
-4 NumEncodings 8 mul add/HeaderLength exch def
-//TTParser/Pos//TTParser/Pos get HeaderLength add put
-0
-NumEncodings{
-16#7FFFFFF null
-currentdict{
-1 index type/integertype eq{
-exch pop dup 0 get
-dup 5 index gt{
-dup 4 index lt{
-4 1 roll
-exch pop exch pop
-}{
-pop pop
-}ifelse
-}{
-pop pop
-}ifelse
-}{
-pop pop
-}ifelse
-}forall
-//PDFR_DEBUG{
-(Obtaining subtable for )print dup ==
-}if
-3 2 roll pop
-3 copy pop
-TablePos add//SkipToPosition exec
-3 copy exch pop 1 get
-//TTParser/Pos//TTParser/Pos get 3 index add put
-string
-readstring not{
-mark(Can't read a cmap subtable.)//error exec
-}if
-2 exch put
-}repeat
-pop pop
-currentdict end
-//PDFR_DEBUG{
-(ParseTTcmap end)=
-}if
-}bind def
-/GetTTEncoding
-{//PDFR_DEBUG{
-(GetTTEncoding beg)=
-}if
-get
-exch pop
-2 get
-10 dict begin
-/TTFDEBUG//PDFR_DEBUG def
-//cmaparray exec
-end
-//PDFR_DEBUG{
-(GetTTEncoding end)=
-dup ==
-}if
-}bind def
-/InverseEncoding
-{
-256 dict begin
-dup length 1 sub -1 0{
-2 copy get
-exch
-1 index currentdict exch//knownget exec{
-dup type/arraytype eq{
-aload length 1 add array astore
-}{
-2 array astore
-}ifelse
-}if
-def
-}for
-pop
-currentdict end
-}bind def
-/GetMacRomanEncodingInverse
-{//PDFReader/MacRomanEncodingInverse get
-dup null eq{
-pop
-MacRomanEncoding//InverseEncoding exec
-dup//PDFReader exch/MacRomanEncodingInverse exch put
-}if
-}bind def
-/PutCharStringSingle
-{
-dup 3 index length lt{
-2 index exch get
-dup 0 ne{
-def
-}{
-pop pop
-}ifelse
-}{
-pop pop
-}ifelse
-}bind def
-/PutCharString
-{1 index type/nametype ne{
-mark(Bad charstring name)//error exec
-}if
-dup type/arraytype eq{
-{
-3 copy//PutCharStringSingle exec
-pop pop
-}forall
-pop
-}{
-//PutCharStringSingle exec
-}ifelse
-}bind def
-/ComposeCharStrings
-{
-//PDFR_DEBUG{
-(ComposeCharStrings beg)=
-}if
-1 index length 1 add dict begin
-/.notdef 0 def
-exch
-//TTParser/post get
-dup null ne{
-exch
-1 index length 1 sub -1 0{
-dup 3 index exch get exch
-dup 0 eq 2 index/.notdef eq or{
-pop pop
-}{
-def
-}ifelse
-}for
-}if
-exch pop exch
-{
-//PutCharString exec
-}forall
-pop
-currentdict end
-//PDFR_DEBUG{
-(ComposeCharStrings end)=
-}if
-}bind def
-/ParseTTpost
-{
-//PDFR_DEBUG{
-(ParseTTpost beg)=
-}if
-/post get aload pop
-3 1 roll
-//PDFR_DEBUG{
-(Current position = )print//TTParser/Pos get =
-(post position = )print dup =
-}if
-1 index exch//SkipToPosition exec
-//TTParser/Pos//TTParser/Pos get 4 index add put
-exch dup 65535 le{
-string
-readstring not{
-mark(Insufficient data in the stream for ParseTTpost.)//error exec
-}if
-}{
-[3 1 roll
-dup 16384 div floor cvi
-exch 1 index 16384 mul
-sub exch
-1 sub 0 1 3 -1 roll
-{
-1 add index
-16384 string readstring not{
-mark(Insufficient data in the stream for ParseTTpost.)//error exec
-}if
-}for
-counttomark -2 roll
-string readstring not{
-mark(Insufficient data in the stream for ParseTTpost.)//error exec
-}if
-]
-}ifelse
-1 dict begin
-/post exch def
-//.getpost exec
-//TTParser/post glyphencoding put
-//PDFR_DEBUG{
-(ParseTTpost end)=
-glyphencoding ==
-}if
-end
-}bind def
-/MakeTTCharStrings
-{//MakeStreamReader exec
-dup dup//ParseTTTableDirectory exec
-//TTParser/post null put
-dup/post//knownget exec{
-0 get
-1 index/cmap get 0 get
-lt{
-2 copy//ParseTTpost exec
-//ParseTTcmap exec
-}{
-2 copy//ParseTTcmap exec
-3 1 roll
-//ParseTTpost exec
-}ifelse
-}{
-//ParseTTcmap exec
-}ifelse
-{
-dup 16#00030001 known{
-//PDFR_DEBUG{
-(Using the TT cmap encoding for Windows Unicode.)=
-}if
-16#00030001//GetTTEncoding exec
-AdobeGlyphList//ComposeCharStrings exec
-exit
-}if
-dup 16#00010000 known{
-//PDFR_DEBUG{
-(Using the TT cmap encoding for Macintosh Roman.)=
-}if
-16#00010000//GetTTEncoding exec
-PDFEncoding dup null eq{
-pop//GetMacRomanEncodingInverse exec
-}{
-//InverseEncoding exec
-}ifelse
-//ComposeCharStrings exec
-exit
-}if
-dup 16#00030000 known{
-//PDFR_DEBUG{
-(Using the TT cmap encoding 3.0 - not sure why Ghostscript writes it since old versions.)=
-}if
-16#00030000//GetTTEncoding exec
-PDFEncoding dup null eq{
-pop//GetMacRomanEncodingInverse exec
-}{
-//InverseEncoding exec
-}ifelse
-//ComposeCharStrings exec
-exit
-}if
-mark(True Type cmap has no useful encodings.)//error exec
-}loop
-//PDFR_DEBUG{
-(CharStrings <<)=
-dup{
-exch
-dup type/nametype eq{
-//=only exec
-}{
-==
-}ifelse
-( )print ==
-}forall
-(>>)=
-}if
-}bind def
-/ScaleVal
-{
-aload pop
-1 index sub
-3 2 roll mul add
-}bind def
-/ScaleArg
-{
-aload pop
-1 index sub
-3 1 roll
-sub exch div
-}bind def
-/ScaleArgN
-{
-dup length 2 sub -2 0{
-2
-2 index 3 1 roll getinterval
-3 2 roll
-exch//ScaleArg exec
-1 index length 2 idiv 1 add 1 roll
-}for
-pop
-}bind def
-/ComputeFunction_10
-{
-//PDFR_DEBUG{
-(ComputeFunction_10 beg )print 1 index//=only exec( stack=)print count =
-}if
-exch
-dup 1 eq{
-pop dup length 1 sub get
-}{
-1 index length 1 sub mul
-dup dup floor sub
-dup 0 eq{
-pop cvi get
-}{
-3 1 roll floor cvi
-2 getinterval
-aload pop
-2 index mul 3 2 roll 1 exch sub 3 2 roll mul add
-}ifelse
-}ifelse
-//PDFR_DEBUG{
-(ComputeFunction_10 end )print dup//=only exec( stack=)print count =
-}if
-}bind def
-/ComputeFunction_n0
-{
-//PDFR_DEBUG{
-(ComputeFunction_n0 beg N=)print dup//=only exec( stack=)print count =
-}if
-dup 0 eq{
-pop
-}{
-dup 2 add -1 roll
-dup 3 index length 1 sub ge{
-pop 1 sub
-exch dup length 1 sub get exch
-//PDFReader/ComputeFunction_n0 get exec
-}{
-dup floor cvi dup
-4 index exch get
-3 index dup
-5 add copy
-6 2 roll
-pop pop pop pop
-1 sub
-//PDFReader/ComputeFunction_n0 get exec
-3 2 roll pop
-exch
-4 3 roll exch
-4 add 2 roll 1 add
-3 2 roll exch get
-exch 1 sub
-//PDFReader/ComputeFunction_n0 get exec
-1 index mul
-3 1 roll
-1 exch sub mul add
-}ifelse
-}ifelse
-//PDFR_DEBUG{
-(ComputeFunction_n0 end )print dup//=only exec( stack=)print count =
-}if
-}bind def
-/FunctionToProc_x01
-{
-dup/Domain get exch
-dup/Data get 0 get exch
-/Size get length
-[4 1 roll
-//PDFR_DEBUG{
-{(function beg, stack =)print count//=only exec(\n)print}/exec load
-5 2 roll
-}if
-dup 1 gt{
-{mark exch
-3 add 2 roll
-//ScaleArgN exec
-counttomark dup
-3 add -2 roll
-pop exch
-//ComputeFunction_n0 exec
-}/exec load
-}{
-pop
-3 1/roll load//ScaleArg/exec load
-/exch load
-//ComputeFunction_10/exec load
-}ifelse
-//PDFR_DEBUG{
-(function end, stack =)/print load/count load//=only/exec load(\n)/print load
-}if
-]cvx
-//PDFR_DEBUG{
-(Made a procedure for the 1-result function :)=
-dup ==
-}if
-}bind def
-/FunctionProcDebugBeg
-{(FunctionProcDebugBeg )print count =
-}bind def
-/FunctionProcDebugEnd
-{(FunctionProcDebugEnd )print count =
-}bind def
-/FunctionToProc_x0n
-{
-PDFR_DEBUG{
-(FunctionToProc_x0n beg m=)print dup =
-}if
-1 index/Size get length exch
-dup 7 mul 2 add array
-PDFR_DEBUG{
-dup 0//FunctionProcDebugBeg put
-}{
-dup 0//DoNothing put
-}ifelse
-dup 1/exec load put
-dup 2 5 index/Domain get put
-2 index 1 eq{
-dup 3//ScaleArg put
-}{
-dup 3//ScaleArgN put
-}ifelse
-dup 4/exec load put
-1 index 1 sub 0 exch 1 exch{
-dup 7 mul 5 add
-1 index 4 index 1 sub ne{
-dup 3 index exch 6 index put 1 add
-dup 3 index exch/copy load put 1 add
-}if
-[
-6 index/Data get 3 index get
-6 index 1 eq{
-//ComputeFunction_10/exec load
-}{
-6 index
-//ComputeFunction_n0/exec load
-}ifelse
-]cvx
-3 index exch 2 index exch put 1 add
-2 index 1 index/exec load put 1 add
-1 index 4 index 1 sub ne{
-2 index 1 index 6 index 1 add put 1 add
-2 index 1 index 1 put 1 add
-2 index 1 index/roll load put
-}if
-pop pop
-}for
-PDFR_DEBUG{
-dup dup length 2 sub//FunctionProcDebugEnd put
-}{
-dup dup length 2 sub//DoNothing put
-}ifelse
-dup dup length 1 sub/exec load put
-cvx exch pop exch pop exch pop
-//PDFR_DEBUG{
-(Made a procedure for the n-argument function :)=
-dup ==
-}if
-PDFR_DEBUG{
-(FunctionToProc_x0n end)=
-}if
-}bind def
-/MakeTableRec
-{
-0
-exec
-}bind def
-/MakeTable
-{//PDFR_DEBUG{
-(MakeTable beg )print count =
-}if
-1 index/Size get exch
-1 sub dup
-3 1 roll
-get
-array
-1 index 0 eq{
-exch pop exch pop
-}{
-dup length 1 sub -1 0{
-3 index 3 index//MakeTableRec exec
-2 index 3 1 roll put
-}for
-exch pop exch pop
-}ifelse
-//PDFR_DEBUG{
-(MakeTable end )print count =
-}if
-}bind def
-//MakeTableRec 0//MakeTable put
-/StoreSample
-{
-1 sub
-dup 0 eq{
-pop
-}{
--1 1{
-I exch get get
-}for
-}ifelse
-I 0 get 3 2 roll put
-}bind def
-/ReadSample32
-{
-4{
-File read not{
-mark(Insufficient data for function.)//error exec
-}if
-}repeat
-pop
-3 1 roll exch
-256 mul add 256 mul add
-//1_24_bitshift_1_sub div
-}bind def
-/ReadSample
-{
-Buffer BitsLeft BitsPerSample
-{2 copy ge{
-exit
-}if
-3 1 roll
-8 add 3 1 roll
-256 mul File read not{
-mark(Insufficient data for function.)//error exec
-}if
-add
-3 1 roll
-}loop
-sub dup
-2 index exch
-neg bitshift
-2 copy exch bitshift
-4 3 roll exch sub
-/Buffer exch def
-exch/BitsLeft exch def
-Div div
-}bind def
-/ReadSamplesRec
-{0
-exec
-}bind def
-/ReadSamples
-{
-//PDFR_DEBUG{
-(ReadSamples beg )print count =
-}if
-dup 1 eq{
-pop
-0 1 Size 0 get 1 sub{
-I exch 0 exch put
-0 1 M 1 sub{
-dup Range exch 2 mul 2 getinterval
-//PDFR_DEBUG{
-(Will read a sample ... )print
-}if
-BitsPerSample 32 eq{//ReadSample32}{//ReadSample}ifelse
-exec exch//ScaleVal exec
-//PDFR_DEBUG{
-(value=)print dup =
-}if
-exch Table exch get
-Size length//StoreSample exec
-}for
-}for
-}{
-1 sub
-dup Size exch get 0 exch 1 exch 1 sub{
-I exch 2 index exch put
-dup//ReadSamplesRec exec
-}for
-pop
-}ifelse
-//PDFR_DEBUG{
-(ReadSamples end )print count =
-}if
-}bind def
-//ReadSamplesRec 0//ReadSamples put
-/StreamToArray
-{//PDFR_DEBUG{
-(StreamToArray beg )print count =
-}if
-userdict/FuncDataReader get begin
-dup/BitsPerSample get/BitsPerSample exch def
-dup/Size get length/N exch def
-dup/Range get length 2 idiv/M exch def
-1 BitsPerSample bitshift 1 sub/Div exch def
-/BitsLeft 0 def
-/Buffer 0 def
-dup/Size get/Size exch def
-dup/Range get/Range exch def
-/File 1 index//MakeStreamReader exec def
-/I[N{0}repeat]def
-M array
-dup length 1 sub -1 0{
-2 index N//MakeTable exec
-2 index 3 1 roll put
-}for
-/Table exch def
-N//ReadSamples exec
-PDFR_DEBUG{
-(Table = )print Table ==
-}if
-/Data Table put
-end
-//PDFR_DEBUG{
-(StreamToArray end )print count =
-}if
-}bind def
-/FunctionToProc10
-{
-PDFR_DEBUG{
-(FunctionToProc10 beg, Range = )print dup/Range get ==
-}if
-dup/Order//knownget exec{
-1 ne{
-(Underimplemented function Type 0 Order 3.)=
-}if
-}if
-dup//StreamToArray exec
-dup/Range get length dup 2 eq{
-pop//FunctionToProc_x01 exec
-}{
-2 idiv//FunctionToProc_x0n exec
-}ifelse
-PDFR_DEBUG{
-(FunctionToProc10 end)=
-}if
-}bind def
-/FunctionToProc12
-{begin
-currentdict/C0//knownget exec{length 1 eq}{true}ifelse{
-N
-currentdict/C0//knownget exec{
-0 get
-}{
-0
-}ifelse
-currentdict/C1//knownget exec{
-0 get
-}{
-1
-}ifelse
-1 index sub
-[4 1 roll
-{
-4 2 roll
-exp mul add
-}aload pop
-]cvx
-}{
-[
-0 1 C0 length 1 sub{
-N
-C0 2 index get
-C1 3 index get
-4 3 roll pop
-1 index sub
-[/dup load
-5 2 roll
-{
-4 2 roll
-exp mul add
-exch
-}aload pop
-]cvx
-/exec load
-}for
-/pop load
-]cvx
-}ifelse
-end
-//PDFR_DEBUG{
-(FunctionType2Proc : )print dup ==
-}if
-}bind def
-/FunctionToProc14
-{//MakeStreamReader exec cvx exec
-//PDFR_DEBUG{
-(FunctionType4Proc : )print dup ==
-}if
-}bind def
-/FunctionToProc1
-{
-dup/FunctionType get
-{dup 0 eq{
-pop//FunctionToProc10 exec exit
-}if
-dup 2 eq{
-pop//FunctionToProc12 exec exit
-}if
-dup 4 eq{
-pop//FunctionToProc14 exec exit
-}if
-mark exch(Function type )exch( isn't implemented yet.)//error exec
-}loop
-}bind def
-/FunctionToProc20
-{
-PDFR_DEBUG{
-(FunctionToProc20, Range = )print dup/Range get ==
-}if
-dup/Order//knownget exec{
-1 ne{
-(Underimplemented function Type 0 Order 3.)=
-}if
-}if
-dup//StreamToArray exec
-dup/Range get length dup 2 eq{
-pop//FunctionToProc_x01 exec
-}{
-2 idiv//FunctionToProc_x0n exec
-}ifelse
-}bind def
-/FunctionToProc
-{//PDFR_DEBUG{
-(FunctionToProc beg )print count =
-}if
-dup type/dicttype eq{
-dup/Domain get length 2 idiv
-{
-dup 1 eq{
-pop//FunctionToProc1 exec exit
-}if
-dup 2 eq{
-pop//FunctionToProc20 exec exit
-}if
-mark(Functions with many arguments aren't implemented yet.)//error exec
-}loop
-}{
-//PDFR_DEBUG{(Not a function dict, assume already a procedure.)print}if
-}ifelse
-//PDFR_DEBUG{
-(FunctionToProc end )print count =
-}if
-}bind def
-/spotfunctions mark
-/Round{
-abs exch abs 2 copy add 1 le{
-dup mul exch dup mul add 1 exch sub
-}{
-1 sub dup mul exch 1 sub dup mul add 1 sub
-}ifelse
-}
-/Diamond{
-abs exch abs 2 copy add .75 le{
-dup mul exch dup mul add 1 exch sub
-}{
-2 copy add 1.23 le{
-.85 mul add 1 exch sub
-}{
-1 sub dup mul exch 1 sub dup mul add 1 sub
-}ifelse
-}ifelse
-}
-/Ellipse{
-abs exch abs 2 copy 3 mul exch 4 mul add 3 sub dup 0 lt{
-pop dup mul exch .75 div dup mul add 4 div 1 exch sub
-}{
-dup 1 gt{
-pop 1 exch sub dup mul exch 1 exch sub
-.75 div dup mul add 4 div 1 sub
-}{
-.5 exch sub exch pop exch pop
-}ifelse
-}ifelse
-}
-/EllipseA{dup mul .9 mul exch dup mul add 1 exch sub}
-/InvertedEllipseA{dup mul .9 mul exch dup mul add 1 sub}
-/EllipseB{dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub}
-/EllipseC{dup mul .9 mul exch dup mul add 1 exch sub}
-/InvertedEllipseC{dup mul .9 mul exch dup mul add 1 sub}
-/Line{exch pop abs neg}
-/LineX{pop}
-/LineY{exch pop}
-/Square{abs exch abs 2 copy lt{exch}if pop neg}
-/Cross{abs exch abs 2 copy gt{exch}if pop neg}
-/Rhomboid{abs exch abs 0.9 mul add 2 div}
-/DoubleDot{2{360 mul sin 2 div exch}repeat add}
-/InvertedDoubleDot{2{360 mul sin 2 div exch}repeat add neg}
-/SimpleDot{dup mul exch dup mul add 1 exch sub}
-/InvertedSimpleDot{dup mul exch dup mul add 1 sub}
-/CosineDot{180 mul cos exch 180 mul cos add 2 div}
-/Double{exch 2 div exch 2{360 mul sin 2 div exch}repeat add}
-/InvertedDouble{
-exch 2 div exch 2{360 mul sin 2 div exch}repeat add neg
-}
-.dicttomark readonly def
-/CheckColorSpace
-{
-dup type/arraytype ne{
-mark(Resource )3 index( must be an array.)//error exec
-}if
-}bind def
-/SubstitutePDFColorSpaceRec
-{0
-exec
-}bind def
-/SubstitutePDFColorSpace
-{
-{
-dup 0 get/Pattern eq{
-dup length 1 gt{
-dup dup 1//CheckColorSpace//ResolveA exec
-dup type/nametype ne{
-//SubstitutePDFColorSpaceRec exec
-}if
-1 exch put
-}if
-exit
-}if
-dup 0 get/Indexed eq{
-exit
-}if
-dup 0 get/Separation eq{
-dup dup 2//CheckColorSpace//ResolveA exec
-dup type/nametype ne{
-//SubstitutePDFColorSpaceRec exec
-}if
-2 exch put
-exit
-}if
-dup 0 get/CalGray eq{
-1 get
-dup/Gamma//knownget exec{
-[exch[exch/exp load]cvx dup dup]
-1 index exch/DecodeLMN exch put
-}if
-[exch/CIEBasedA exch]
-exit
-}if
-dup 0 get/CalRGB eq{
-1 get
-dup/Matrix//knownget exec{
-1 index exch/MatrixLMN exch put
-}if
-dup/Gamma//knownget exec{
-aload pop
-[exch/exp load]cvx
-3 1 roll
-[exch/exp load]cvx
-3 1 roll
-[exch/exp load]cvx
-3 1 roll
-3 array astore
-1 index exch/DecodeLMN exch put
-}if
-[exch/CIEBasedABC exch]
-exit
-}if
-dup 0 get/Lab eq{
-1 get
-begin
-currentdict/Range//knownget exec{aload pop}{-100 100 -100 100}ifelse
-0 100 6 2 roll 6 array astore
-/RangeABC exch def
-/DecodeABC[{16 add 116 div}bind{500 div}bind{200 div}bind]def
-/MatrixABC[1 1 1 1 0 0 0 0 -1]def
-{dup 6 29 div ge{dup dup mul mul}{4 29 div sub 108 841 div mul}ifelse}
-/DecodeLMN[
-[3 index aload pop WhitePoint 0 get/mul load]cvx
-[4 index aload pop WhitePoint 1 get/mul load]cvx
-[5 index aload pop WhitePoint 2 get/mul load]cvx
-]def pop
-//PDFR_DEBUG{
-(Constructed from Lab <<)=
-currentdict{exch = ==}forall
-(>>)=
-}if
-[/CIEBasedABC currentdict]
-end
-exit
-pop
-}if
-dup 0 get/CIEBasedA eq{exit}if
-dup 0 get/CIEBasedABC eq{exit}if
-mark exch(Unimplemented color space )exch//error exec
-}loop
-}bind def
-//SubstitutePDFColorSpaceRec 0//SubstitutePDFColorSpace put
-/ResolveArrayElement
-{2 copy get
-dup type dup/arraytype eq exch
-/packedarraytype eq or{
-dup length 1 ge exch xcheck and{
-2 copy get
-dup 0 get type/integertype eq
-1 index 1 get type dup/arraytype
-eq exch
-/packedarraytype eq or
-and{
-exec
-2 index 4 1 roll put
-}{
-pop pop
-}ifelse
-}{
-pop
-}ifelse
-}{
-pop pop
-}ifelse
-}bind def
-/ResolveColorSpaceArrayRec
-{0
-exec
-}bind def
-/SetColorSpaceSafe
-{
-PDFR_DEBUG{
-(SetColorSpaceSafe beg)=
-}if
-currentcolorspace dup type/arraytype eq{
-1 index type/arraytype eq{
-dup length 2 index length eq{
-false exch
-dup length 0 exch 1 exch 1 sub{
-dup
-4 index exch get exch
-2 index exch get
-ne{
-exch pop true exch exit
-}if
-}for
-pop
-{
-setcolorspace
-}{
-pop
-}ifelse
-}{
-pop setcolorspace
-}ifelse
-}{
-pop setcolorspace
-}ifelse
-}{
-pop setcolorspace
-}ifelse
-PDFR_DEBUG{
-(SetColorSpaceSafe end)=
-}if
-}bind def
-/ResolveColorSpaceArray
-{
-//PDFR_DEBUG{
-(ResolveColorSpaceArray beg )print dup ==
-}if
-dup 0 get/Indexed eq{
-1//ResolveArrayElement exec
-dup dup 1 get
-dup type/arraytype eq{
-//SubstitutePDFColorSpace exec
-//ResolveColorSpaceArrayRec exec
-1 exch put
-}{
-pop pop
-}ifelse
-}if
-dup 0 get/Separation eq{
-dup dup 1 get UnPDFEscape 1 exch put
-3//ResolveArrayElement exec
-dup 3 get//FunctionToProc exec
-2 copy 3 exch put
-pop
-}if
-dup 0 get/Pattern eq{
-dup length 1 gt{dup
-1 get dup type/arraytype eq{
-ResolveColorSpaceArray
-1 index 1 3 -1 roll put
-}{pop}ifelse}if
-}if
-PDFR_DEBUG{
-(Construcrted color space :)=
-dup ==
-}if
-//PDFR_DEBUG{
-(ResolveColorSpaceArray end )print dup ==
-}if
-}bind def
-//ResolveColorSpaceArrayRec 0//ResolveColorSpaceArray put
-/ResolveColorSpace
-{
-//PDFR_DEBUG{
-(ResolveColorSpace beg )print dup =
-}if
-dup//SimpleColorSpaceNames exch known not{
-dup//PDFColorSpaces exch//knownget exec{
-exch pop
-//PDFR_DEBUG{
-(ResolveColorSpace known )=
-}if
-}{
-dup
-//PDFReader/CurrentObject get/Context get/Resources get
-/ColorSpace//DoNothing//ResolveD exec
-exch//CheckColorSpace//ResolveD exec
-dup type/arraytype eq{
-//SubstitutePDFColorSpace exec
-//ResolveColorSpaceArray exec
-dup//PDFColorSpaces 4 2 roll put
-}if
-}ifelse
-}if
-//PDFR_DEBUG{
-(ResolveColorSpace end )print dup ==
-}if
-}bind def
-/CheckPattern
-{
-dup/PatternType//knownget exec{
-dup 1 ne{
-mark(Resource )4 index( is a shading, which can't be handled at level 2. )//error exec
-}if
-pop
-}if
-dup/Type knownget{
-/Pattern ne{
-mark(Resource )4 index( must have /Type/Pattern .)//error exec
-}if
-}if
-}bind def
-/PaintProc
-{/Context get
-//RunDelayedStream exec
-}bind def
-/ResolvePattern
-{
-dup
-userdict/PDFR_Patterns get
-exch//knownget exec{
-exch pop
-}{
-dup
-//PDFReader/CurrentObject get/Context get/Resources get
-/Pattern//DoNothing//ResolveD exec
-exch//CheckPattern//ResolveD exec
-dup dup/Context exch put
-dup/Resources//DoNothing//ResolveD exec pop
-dup/PaintProc//PaintProc put
-gsave userdict/PDFR_InitialGS get setgstate
-currentglobal exch false setglobal
-dup/Matrix get
-makepattern
-exch setglobal
-grestore
-dup userdict/PDFR_Patterns get
-4 2 roll
-put
-}ifelse
-}bind def
-/SetColor
-{//PDFR_DEBUG{
-(SetColor beg)=
-}if
-currentcolorspace dup type/nametype eq{
-pop setcolor
-}{
-0 get/Pattern eq{
-//ResolvePattern exec setpattern
-}{
-setcolor
-}ifelse
-}ifelse
-//PDFR_DEBUG{
-(SetColor end)=
-}if
-}bind def
-/ImageKeys 15 dict begin
-/BPC/BitsPerComponent def
-/CS/ColorSpace def
-/D/Decode def
-/DP/DecodeParms def
-/F/Filter def
-/H/Height def
-/IM/ImageMask def
-/I/Interpolate def
-/W/Width def
-currentdict end readonly def
-/ImageValues 15 dict begin
-/G/DeviceGray def
-/RGB/DeviceRGB def
-/CMYK/DeviceCMYK def
-/I/Indexed def
-/AHx/ASCIIHexDecode def
-/A85/ASCII85Decode def
-/LZW/LZWDecode def
-/Fl/FlateDecode def
-/RL/RunLengthDecode def
-/CCF/CCITTFaxDecode def
-/DCT/DCTDecode def
-currentdict end readonly def
-/GetColorSpaceRange
-{2 index/ColorSpace get
-dup type/arraytype eq{
-1 get
-}if
-exch//knownget exec{
-exch pop
-}if
-}bind def
-/DecodeArrays 15 dict begin
-/DeviceGray{[0 1]}def
-/DeviceRGB{[0 1 0 1 0 1]}def
-/DeviceCMYK{[0 1 0 1 0 1 0 1]}def
-/Indexed{
-dup/BitsPerComponent get 1 exch bitshift 1 sub[exch 0 exch]
-}def
-/Separation{[0 1]}def
-/CIEBasedA{[0 1]/RangeA//GetColorSpaceRange exec}def
-/CIEBasedABC{[0 1 0 1 0 1]/RangeABC//GetColorSpaceRange exec}def
-currentdict end readonly def
-/Substitute
-{1 index//knownget exec{
-exch pop
-}if
-}bind def
-/DebugImagePrinting
-{
-//PDFR_DEBUG{
-(Image :)=
-dup{exch//=only exec( )print ==
-}forall
-}if
-}bind def
-/CompleteImage
-{
-dup/ColorSpace known{
-dup/ColorSpace//CheckColorSpace//ResolveD exec pop
-}if
-dup/Decode known not{
-dup/ColorSpace//knownget exec{
-dup type/arraytype eq{
-0 get
-}if
-//DecodeArrays exch get exec
-}{
-[0 1]
-}ifelse
-1 index exch/Decode exch put
-}if
-dup/ImageMatrix[2 index/Width get 0 0 5 index/Height get neg
-0 7 index/Height get]put
-//DebugImagePrinting exec
-}bind def
-/CompleteInlineImage
-{
-//PDFR_DEBUG{
-(CompleteInlineImage beg)=
-}if
-dup/ImageType known not{
-dup/ImageType 1 put
-}if
-dup length dict exch{
-exch//ImageKeys//Substitute exec
-dup/Filter eq{
-exch//ImageValues//Substitute exec exch
-}if
-dup/ColorSpace eq{
-exch
-dup//ImageValues exch//knownget exec{
-exch pop
-}{
-//ResolveColorSpace exec
-}ifelse
-exch
-}if
-exch
-2 index 3 1 roll put
-}forall
-//CompleteImage exec
-dup/DataSource 2 copy get
-2 index//AppendFilters exec put
-//PDFR_DEBUG{
-(CompleteInlineImage end)=
-}if
-}bind def
-/CompleteOutlineImage
-{
-currentglobal exch dup gcheck setglobal
-//PDFR_DEBUG{
-(CompleteOutlineImage beg)=
-}if
-dup dup//MakeStreamReader exec/DataSource exch put
-dup/ImageType known not{
-//CompleteImage exec
-dup/ImageType 1 put
-dup/ColorSpace known{
-dup/ColorSpace//CheckColorSpace//ResolveD exec
-dup type/arraytype eq{
-//ResolveColorSpaceArray exec
-//SubstitutePDFColorSpace exec
-1 index exch/ColorSpace exch put
-}{
-pop
-}ifelse
-}if
-}if
-//PDFR_DEBUG{
-(CompleteOutlineImage end)=
-}if
-exch setglobal
-}bind def
-/DoImage
-{
-//PDFR_DEBUG{
-(DoImage beg)=
-}if
-gsave
-dup/ColorSpace//knownget exec{setcolorspace}if
-dup/ImageMask//knownget exec not{false}if
-{imagemask}{image}ifelse
-grestore
-//PDFR_DEBUG{
-(DoImage end)=
-}if
-}bind def
-/GSave
-{
-gsave
-//PDFReader/GraphicStateStackPointer get
-dup//GraphicStateStack exch get null eq{
-dup//GraphicStateStack exch//InitialGraphicState length dict put
-}if
-dup//GraphicStateStack exch get
-//GraphicState exch copy pop
-1 add//PDFReader exch/GraphicStateStackPointer exch put
-}bind def
-/GRestore
-{
-grestore
-//PDFReader/GraphicStateStackPointer get
-1 sub dup
-//PDFReader exch/GraphicStateStackPointer exch put
-//GraphicStateStack exch get
-//GraphicState copy pop
-}bind def
-/SetFont
-{dup//GraphicState exch/FontSize exch put
-//ResolveAndSetFont exec
-//GraphicState/FontMatrixNonHV currentfont/FontMatrix get 1 get 0 ne put
-}bind def
-/ShowText
-{//GraphicState/TextRenderingMode get 0 eq{
-//GraphicState/WordSpacing get 0
-32
-//GraphicState/CharacterSpacing get 0
-6 5 roll
-//GraphicState/FontMatrixNonHV get{
-[
-7 -2 roll pop
-5 -2 roll pop
-5 -1 roll
-{
-exch
-pop
-3 index add
-exch 2 index eq{3 index add}if
-4 1 roll
-}
-currentfont/FontMatrix get 0 get 0 ne{
-1 1 index length 1 sub getinterval cvx
-}if
-5 index
-cshow
-pop pop pop]
-xshow
-}{
-awidthshow
-}ifelse
-}{
-//GraphicState/CharacterSpacing get 0 eq
-//GraphicState/FontMatrixNonHV get not and
-//GraphicState/WordSpacing get 0 eq and{
-true charpath
-}{
-{
-exch
-pop 0
-currentpoint 5 4 roll
-( )dup 0 3 index put true charpath
-5 1 roll
-moveto rmoveto
-//GraphicState/CharacterSpacing get 0 rmoveto
-32 eq{
-//GraphicState/WordSpacing get 0 rmoveto
-}if
-}
-//GraphicState/FontMatrixNonHV get dup not exch{
-pop currentfont/FontMatrix get 0 get 0 ne
-}if{
-1 1 index length 1 sub getinterval cvx
-}if
-exch cshow
-}ifelse
-}ifelse
-}bind def
-/ShowTextBeg
-{//GraphicState/TextRenderingMode get 0 ne{
-currentpoint newpath moveto
-}if
-}bind def
-/ShowTextEnd
-{//GraphicState/TextRenderingMode get
-{dup 1 eq{
-stroke exit
-}if
-dup 2 eq{
-gsave fill grestore stroke exit
-}if
-dup 3 eq{
-currentpoint newpath moveto
-}if
-dup 4 eq{
-gsave fill grestore clip exit
-}if
-dup 5 eq{
-gsave stroke grestore clip exit
-}if
-dup 6 eq{
-gsave fill grestore gsave stroke grestore fill exit
-}if
-dup 7 eq{
-clip exit
-}if
-exit
-}loop
-pop
-}bind def
-/ShowTextWithGlyphPositioning
-{//ShowTextBeg exec
-{dup type/stringtype eq{
-//ShowText exec
-}{
-neg 1000 div//GraphicState/FontSize get mul 0 rmoveto
-}ifelse
-}forall
-//ShowTextEnd exec
-}bind def
-/CheckFont
-{dup/Type get/ExtGState ne{
-mark(Resource )3 index( must have /Type/ExtGState.)//error exec
-}if
-}bind def
-/SetTransfer
-{
-//PDFR_DEBUG{(SetTransfer beg )print count =}if
-dup type/arraytype eq 1 index xcheck not and{
-0 4 getinterval aload pop
-setcolortransfer
-}{
-settransfer
-}ifelse
-//PDFR_DEBUG{(SetTransfer end )print count =}if
-}bind def
-/CheckExtGState
-{dup/Type get/ExtGState ne{
-mark(Resource )3 index( must have /Type/ExtGState.)//error exec
-}if
-}bind def
-/CheckHalftone
-{dup/HalftoneType known not{
-mark(Resource )3 index( must have /HalftoneType.)//error exec
-}if
-}bind def
-/ResolveFunction
-{
-//PDFR_DEBUG{(ResolveFunction beg )print dup = count =}if
-2 copy get//IsObjRef exec{
-2 copy//DoNothing//ResolveD exec
-3 copy put pop
-}if
-2 copy get dup type/arraytype eq exch xcheck and not{
-2 copy get
-dup type/arraytype eq 1 index xcheck not and{
-dup length 1 sub -1 0{
-2 copy//DoNothing ResolveA
-dup/Identity eq{
-pop 2 copy{}put
-}{
-//FunctionToProc exec
-3 copy put pop
-}ifelse
-pop
-}for
-}{
-dup/Default eq{
-}{
-dup/Identity eq{
-pop{}
-}{dup type/nametype eq{
-//spotfunctions exch get
-}{
-//FunctionToProc exec
-}ifelse
-}ifelse
-}ifelse
-}ifelse
-3 copy put
-exch pop
-}{
-1 index exch get
-}ifelse
-//PDFR_DEBUG{(ResolveFunction end )print dup == count =}if
-}bind def
-/ResolveFunctionSafe
-{2 copy known{
-//ResolveFunction exec
-}if
-pop
-}bind def
-/CreateHalftoneThresholds
-{
-dup/Thresholds known not{
-dup/HalftoneType get 10 eq{
-dup dup//MakeStreamReader exec
-/Thresholds exch put
-}if
-dup/HalftoneType get dup 3 eq exch 6 eq or{
-dup dup//MakeStreamReader exec
-//BlockBuffer readstring pop
-dup length
-dup 0 eq{
-mark(Could not read Thresholds)//error exec
-}if
-string copy/Thresholds exch put
-dup/HalftoneType 3 put
-}if
-}if
-}bind def
-/SetExtGState
-{
-//PDFReader/CurrentObject get/Context get/Resources get
-/ExtGState//DoNothing//ResolveD exec
-exch//CheckExtGState//ResolveD exec
-dup/LW//knownget exec{
-setlinewidth
-}if
-dup/LC//knownget exec{
-setlinecap
-}if
-dup/LJ//knownget exec{
-setlinejoin
-}if
-dup/ML//knownget exec{
-setmeterlimit
-}if
-dup/D//knownget exec{
-setdash
-}if
-dup/RI//knownget exec{
-mark(Unimplemented ExtGState.RI)//error exec
-}if
-dup/OP//knownget exec{
-setoverprint
-}if
-dup/op//knownget exec{
-setoverprint
-}if
-dup/OPM//knownget exec{
-mark(Unimplemented ExtGState.OPM)//error exec
-}if
-dup/Font//knownget exec{
-mark(Unimplemented ExtGState.Font)//error exec
-}if
-dup/BG known{
-/BG//ResolveFunction exec
-setblackgeneration
-}if
-dup/BG2 known{
-/BG2//ResolveFunction exec
-dup/Default eq{
-//InitialExtGState/BG2 get
-}if
-setblackgeneration
-}if
-dup/UCR known{
-/UCR//ResolveFunction exec
-setundercolorremoval
-}if
-dup/UCR2 known{
-/UCR2//ResolveFunction exec
-dup/Default eq{
-//InitialExtGState/UCR2 get
-}if
-setundercolorremoval
-}if
-dup/TR known{
-/TR//ResolveFunction exec
-//SetTransfer exec
-}if
-dup/TR2 known{
-/TR2//ResolveFunction exec
-dup/Default eq{
-pop//InitialExtGState/TR2 get
-aload pop setcolortransfer
-}{
-//SetTransfer exec
-}ifelse
-}if
-dup/HT//knownget exec{
-dup/Default eq{
-pop//InitialExtGState/HT get
-sethalftone
-}{
-//PDFR_DEBUG{(Ht beg)=}if
-pop dup/HT//CheckHalftone//ResolveD exec
-/SpotFunction//ResolveFunctionSafe exec
-/TransferFunction//ResolveFunctionSafe exec
-null exch
-dup/HalftoneType get dup 5 eq exch dup 4 eq exch 2 eq or or{
-dup{
-dup//IsObjRef exec{
-pop
-1 index exch//CheckHalftone ResolveD
-}if
-dup type/dicttype eq{
-dup/SpotFunction//ResolveFunctionSafe exec
-/TransferFunction//ResolveFunctionSafe exec
-//CreateHalftoneThresholds exec
-dup/HalftoneType get 5 gt{
-4 3 roll pop
-dup 4 1 roll
-}if
-}if
-pop pop
-}forall
-}if
-//CreateHalftoneThresholds exec
-//PDFR_DEBUG{
-(HT:)=
-dup{
-1 index/Default eq{
-(Default <<)=
-exch pop
-{exch = ==}forall
-(>>)=
-}{
-exch = ==
-}ifelse
-}forall
-(HT end)= flush
-}if
-exch dup null ne{
-(Warning: Ignoring a halftone with a Level 3 component halftone Type )print dup/HalftoneType get =
-pop pop
-}{
-pop
-dup/HalftoneType get 5 gt{
-(Warning: Ignoring a Level 3 halftone Type )print dup/HalftoneType get =
-pop
-}{
-sethalftone
-}ifelse
-}ifelse
-//PDFR_DEBUG{(HT set)= flush}if
-}ifelse
-}if
-dup/FL//knownget exec{
-setflattness
-}if
-dup/SM//knownget exec{
-setsmoothness
-}if
-dup/SA//knownget exec{
-setstrokeadjust
-}if
-dup/BM//knownget exec{
-mark(Unimplemented ExtGState.BM)//error exec
-}if
-dup/SMask//knownget exec{
-mark(Unimplemented ExtGState.SMask)//error exec
-}if
-dup/CA//knownget exec{
-mark(Unimplemented ExtGState.CA)//error exec
-}if
-dup/ca//knownget exec{
-mark(Unimplemented ExtGState.ca)//error exec
-}if
-dup/AIS//knownget exec{
-mark(Unimplemented ExtGState.AIS)//error exec
-}if
-dup/TK//knownget exec{
-mark(Unimplemented ExtGState.TK)//error exec
-}if
-pop
-}bind def
-/CheckXObject
-{dup/Subtype get dup/Image ne exch dup/Form ne exch/PS ne and and{
-mark(Resource )3 index( must have /Subtype /Image or /Form or /PS.)//error exec
-}if
-}bind def
-/DoXObject
-{
-//PDFReader/CurrentObject get/Context get/Resources get
-/XObject//DoNothing//ResolveD exec
-exch//CheckXObject//ResolveD exec
-dup/Subtype get
-dup/Image eq{
-pop
-//CompleteOutlineImage exec
-//DoImage exec
-}{
-dup/PS eq{
-PDFR_DEBUG{
-(Executing a PS Xobject)=
-}if
-pop
-//RunDelayedStream exec
-}{
-dup/Form eq{
-pop
-PDFR_DEBUG{
-(Executing a Form XObject)=
-}if
-//PDFReader/CurrentObject get exch
-dup//PDFReader exch<< exch/Context exch >>/CurrentObject exch put
-dup/Matrix get concat
-dup/BBox get aload pop exch 3 index sub exch 2 index sub rectclip
-//RunDelayedStream exec
-//PDFReader exch/CurrentObject exch put
-}{
-mark exch(unimplemented XObject type )exch//error exec
-}ifelse
-}ifelse
-}ifelse
-}bind def
-/Operators 50 dict begin
-/q{//GSave exec}bind def
-/Q{//GRestore exec}bind def
-/cm{//TempMatrix astore concat}bind def
-/i{1 .min setflat}bind def
-/J/setlinecap load def
-/d/setdash load def
-/j/setlinejoin load def
-/w/setlinewidth load def
-/M/setmiterlimit load def
-/gs{SetExtGState}bind def
-/g/setgray load def
-/rg/setrgbcolor load def
-/k/setcmykcolor load def
-/cs{//ResolveColorSpace exec//SetColorSpaceSafe exec
-}bind def
-/sc/setcolor load def
-/scn{//SetColor exec}bind def
-/G/setgray load def
-/RG/setrgbcolor load def
-/K/setcmykcolor load def
-/CS//cs def
-/ri{SetColorRenderingIntent}bind def
-/SC/setcolor load def
-/SCN{//SetColor exec}bind def
-/m/moveto load def
-/l/lineto load def
-/c/curveto load def
-/v{currentpoint 6 2 roll curveto}bind def
-/y{2 copy curveto}bind def
-/re{
-4 2 roll moveto exch dup 0 rlineto 0 3 -1 roll rlineto neg 0 rlineto
-closepath
-}def
-/h/closepath load def
-/n/newpath load def
-/S/stroke load def
-/s{closepath stroke}bind def
-/f/fill load def
-/f*/eofill load def
-/B{gsave fill grestore stroke}bind def
-/b{closepath gsave fill grestore stroke}bind def
-/B*{gsave eofill grestore stroke}bind def
-/b*{closepath gsave eofill grestore stroke}bind def
-/W/clip load def
-/W*/eoclip load def
-/sh{
-ResolveShading
-dup/Background known{
-gsave
-dup/ColorSpace get setcolorspace
-dup/Background get aload pop setcolor
-pathbbox
-2 index sub exch 3 index sub exch
-rectfill
-grestore
-}if
-shfill
-}bind def
-/Do{//DoXObject exec}bind def
-/BI{currentglobal false setglobal<<}bind def
-/ID{>>
-dup/DataSource currentfile
-2 index/F//knownget exec{
-/A85 eq{
-0(~>)/SubFileDecode filter
-}if
-}if
-put
-//CompleteInlineImage exec
-exch setglobal
-//DoImage exec
-}bind def
-/EI{}bind def
-/BT{gsave//GraphicState/InitialTextMatrix get currentmatrix pop}bind def
-/ET{grestore}bind def
-/Tc{//GraphicState exch/CharacterSpacing exch put}bind def
-/TL{//GraphicState exch/TextLeading exch put}bind def
-/Tr{//GraphicState exch/TextRenderingMode exch put}bind def
-/Ts{
-mark(Unimplemented SetTextRise)//error exec
-}bind def
-/Tw{//GraphicState exch/WordSpacing exch put}bind def
-/Tz{
-mark(Unimplemented SetHorizontalTextScaling)//error exec
-}bind def
-/Td{translate 0 0 moveto}bind def
-/TD{dup neg//TL exec//Td exec}bind def
-/Tm{//GraphicState/InitialTextMatrix get setmatrix
-//TempMatrix astore concat
-0 0 moveto}bind def
-/T*{0//GraphicState/TextLeading get neg//Td exec}bind def
-/Tj{//ShowTextBeg exec//ShowText exec//ShowTextEnd exec}bind def
-/'{//T* exec//ShowText exec//ShowTextEnd exec}bind def
-/"{3 2 roll//Tw exec exch//Tc exec//' exec}bind def
-/TJ//ShowTextWithGlyphPositioning def
-/Tf//SetFont def
-/d0/setcharwidth load def
-/d1/setcachedevice load def
-/BDC{pop pop}bind def
-/BMC{pop}bind def
-/EMC{}bind def
-/BX{BeginCompatibilitySection}bind def
-/EX{EndCompatibilitySection}bind def
-/DP{DefineMarkedContentPointWithPropertyList}bind def
-/MP{DefineMarkedContentPoint}bind def
-/PS{cvx exec}bind def
-currentdict end def
-//PDFR_STREAM{
-//Operators length dict begin
-//Operators{
-exch dup
-[exch//=only/exec load
-( )/print load
-8 7 roll
-dup type/arraytype eq{
-/exec load
-}if
-( )/print load
-]cvx
-def
-}forall
-currentdict end/Operators exch def
-}if
-/.registerencoding
-{pop pop
-}bind def
-/.defineencoding
-{def
-}bind def
-/.findencoding
-{load
-}bind def
-/currentglobal where
-{pop currentglobal{setglobal}true setglobal}
-{{}}
-ifelse
-/MacRomanEncoding
-StandardEncoding 0 39 getinterval aload pop
-/quotesingle
-StandardEncoding 40 56 getinterval aload pop
-/grave
-StandardEncoding 97 31 getinterval aload pop
-/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis/Udieresis/aacute
-/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute/egrave
-/ecircumflex/edieresis/iacute/igrave
-/icircumflex/idieresis/ntilde/oacute
-/ograve/ocircumflex/odieresis/otilde
-/uacute/ugrave/ucircumflex/udieresis
-/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
-/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
-/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
-/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
-/questiondown/exclamdown/logicalnot/.notdef
-/florin/.notdef/.notdef/guillemotleft
-/guillemotright/ellipsis/space/Agrave/Atilde/Otilde/OE/oe
-/endash/emdash/quotedblleft/quotedblright
-/quoteleft/quoteright/divide/.notdef
-/ydieresis/Ydieresis/fraction/currency
-/guilsinglleft/guilsinglright/fi/fl
-/daggerdbl/periodcentered/quotesinglbase/quotedblbase
-/perthousand/Acircumflex/Ecircumflex/Aacute
-/Edieresis/Egrave/Iacute/Icircumflex
-/Idieresis/Igrave/Oacute/Ocircumflex
-/.notdef/Ograve/Uacute/Ucircumflex
-/Ugrave/dotlessi/circumflex/tilde
-/macron/breve/dotaccent/ring/cedilla/hungarumlaut/ogonek/caron
-256 packedarray
-5 1 index .registerencoding
-.defineencoding
-exec
-/AdobeGlyphList mark
-/A 16#0041
-/AE 16#00c6
-/AEacute 16#01fc
-/AEmacron 16#01e2
-/AEsmall 16#f7e6
-/Aacute 16#00c1
-/Aacutesmall 16#f7e1
-/Abreve 16#0102
-/Abreveacute 16#1eae
-/Abrevecyrillic 16#04d0
-/Abrevedotbelow 16#1eb6
-/Abrevegrave 16#1eb0
-/Abrevehookabove 16#1eb2
-/Abrevetilde 16#1eb4
-/Acaron 16#01cd
-/Acircle 16#24b6
-/Acircumflex 16#00c2
-/Acircumflexacute 16#1ea4
-/Acircumflexdotbelow 16#1eac
-/Acircumflexgrave 16#1ea6
-/Acircumflexhookabove 16#1ea8
-/Acircumflexsmall 16#f7e2
-/Acircumflextilde 16#1eaa
-/Acute 16#f6c9
-/Acutesmall 16#f7b4
-/Acyrillic 16#0410
-/Adblgrave 16#0200
-/Adieresis 16#00c4
-/Adieresiscyrillic 16#04d2
-/Adieresismacron 16#01de
-/Adieresissmall 16#f7e4
-/Adotbelow 16#1ea0
-/Adotmacron 16#01e0
-/Agrave 16#00c0
-/Agravesmall 16#f7e0
-/Ahookabove 16#1ea2
-/Aiecyrillic 16#04d4
-/Ainvertedbreve 16#0202
-/Alpha 16#0391
-/Alphatonos 16#0386
-/Amacron 16#0100
-/Amonospace 16#ff21
-/Aogonek 16#0104
-/Aring 16#00c5
-/Aringacute 16#01fa
-/Aringbelow 16#1e00
-/Aringsmall 16#f7e5
-/Asmall 16#f761
-/Atilde 16#00c3
-/Atildesmall 16#f7e3
-/Aybarmenian 16#0531
-/B 16#0042
-/Bcircle 16#24b7
-/Bdotaccent 16#1e02
-/Bdotbelow 16#1e04
-/Becyrillic 16#0411
-/Benarmenian 16#0532
-/Beta 16#0392
-/Bhook 16#0181
-/Blinebelow 16#1e06
-/Bmonospace 16#ff22
-/Brevesmall 16#f6f4
-/Bsmall 16#f762
-/Btopbar 16#0182
-/C 16#0043
-/Caarmenian 16#053e
-/Cacute 16#0106
-/Caron 16#f6ca
-/Caronsmall 16#f6f5
-/Ccaron 16#010c
-/Ccedilla 16#00c7
-/Ccedillaacute 16#1e08
-/Ccedillasmall 16#f7e7
-/Ccircle 16#24b8
-/Ccircumflex 16#0108
-/Cdot 16#010a
-/Cdotaccent 16#010a
-/Cedillasmall 16#f7b8
-/Chaarmenian 16#0549
-/Cheabkhasiancyrillic 16#04bc
-/Checyrillic 16#0427
-/Chedescenderabkhasiancyrillic 16#04be
-/Chedescendercyrillic 16#04b6
-/Chedieresiscyrillic 16#04f4
-/Cheharmenian 16#0543
-/Chekhakassiancyrillic 16#04cb
-/Cheverticalstrokecyrillic 16#04b8
-/Chi 16#03a7
-/Chook 16#0187
-/Circumflexsmall 16#f6f6
-/Cmonospace 16#ff23
-/Coarmenian 16#0551
-/Csmall 16#f763
-/D 16#0044
-/DZ 16#01f1
-/DZcaron 16#01c4
-/Daarmenian 16#0534
-/Dafrican 16#0189
-/Dcaron 16#010e
-/Dcedilla 16#1e10
-/Dcircle 16#24b9
-/Dcircumflexbelow 16#1e12
-/Dcroat 16#0110
-/Ddotaccent 16#1e0a
-/Ddotbelow 16#1e0c
-/Decyrillic 16#0414
-/Deicoptic 16#03ee
-/Delta 16#2206
-/Deltagreek 16#0394
-/Dhook 16#018a
-/Dieresis 16#f6cb
-/DieresisAcute 16#f6cc
-/DieresisGrave 16#f6cd
-/Dieresissmall 16#f7a8
-/Digammagreek 16#03dc
-/Djecyrillic 16#0402
-/Dlinebelow 16#1e0e
-/Dmonospace 16#ff24
-/Dotaccentsmall 16#f6f7
-/Dslash 16#0110
-/Dsmall 16#f764
-/Dtopbar 16#018b
-/Dz 16#01f2
-/Dzcaron 16#01c5
-/Dzeabkhasiancyrillic 16#04e0
-/Dzecyrillic 16#0405
-/Dzhecyrillic 16#040f
-/E 16#0045
-/Eacute 16#00c9
-/Eacutesmall 16#f7e9
-/Ebreve 16#0114
-/Ecaron 16#011a
-/Ecedillabreve 16#1e1c
-/Echarmenian 16#0535
-/Ecircle 16#24ba
-/Ecircumflex 16#00ca
-/Ecircumflexacute 16#1ebe
-/Ecircumflexbelow 16#1e18
-/Ecircumflexdotbelow 16#1ec6
-/Ecircumflexgrave 16#1ec0
-/Ecircumflexhookabove 16#1ec2
-/Ecircumflexsmall 16#f7ea
-/Ecircumflextilde 16#1ec4
-/Ecyrillic 16#0404
-/Edblgrave 16#0204
-/Edieresis 16#00cb
-/Edieresissmall 16#f7eb
-/Edot 16#0116
-/Edotaccent 16#0116
-/Edotbelow 16#1eb8
-/Efcyrillic 16#0424
-/Egrave 16#00c8
-/Egravesmall 16#f7e8
-/Eharmenian 16#0537
-/Ehookabove 16#1eba
-/Eightroman 16#2167
-/Einvertedbreve 16#0206
-/Eiotifiedcyrillic 16#0464
-/Elcyrillic 16#041b
-/Elevenroman 16#216a
-/Emacron 16#0112
-/Emacronacute 16#1e16
-/Emacrongrave 16#1e14
-/Emcyrillic 16#041c
-/Emonospace 16#ff25
-/Encyrillic 16#041d
-/Endescendercyrillic 16#04a2
-/Eng 16#014a
-/Enghecyrillic 16#04a4
-/Enhookcyrillic 16#04c7
-/Eogonek 16#0118
-/Eopen 16#0190
-/Epsilon 16#0395
-/Epsilontonos 16#0388
-/Ercyrillic 16#0420
-/Ereversed 16#018e
-/Ereversedcyrillic 16#042d
-/Escyrillic 16#0421
-/Esdescendercyrillic 16#04aa
-/Esh 16#01a9
-/Esmall 16#f765
-/Eta 16#0397
-/Etarmenian 16#0538
-/Etatonos 16#0389
-/Eth 16#00d0
-/Ethsmall 16#f7f0
-/Etilde 16#1ebc
-/Etildebelow 16#1e1a
-/Euro 16#20ac
-/Ezh 16#01b7
-/Ezhcaron 16#01ee
-/Ezhreversed 16#01b8
-/F 16#0046
-/Fcircle 16#24bb
-/Fdotaccent 16#1e1e
-/Feharmenian 16#0556
-/Feicoptic 16#03e4
-/Fhook 16#0191
-/Fitacyrillic 16#0472
-/Fiveroman 16#2164
-/Fmonospace 16#ff26
-/Fourroman 16#2163
-/Fsmall 16#f766
-/G 16#0047
-/GBsquare 16#3387
-/Gacute 16#01f4
-/Gamma 16#0393
-/Gammaafrican 16#0194
-/Gangiacoptic 16#03ea
-/Gbreve 16#011e
-/Gcaron 16#01e6
-/Gcedilla 16#0122
-/Gcircle 16#24bc
-/Gcircumflex 16#011c
-/Gcommaaccent 16#0122
-/Gdot 16#0120
-/Gdotaccent 16#0120
-/Gecyrillic 16#0413
-/Ghadarmenian 16#0542
-/Ghemiddlehookcyrillic 16#0494
-/Ghestrokecyrillic 16#0492
-/Gheupturncyrillic 16#0490
-/Ghook 16#0193
-/Gimarmenian 16#0533
-/Gjecyrillic 16#0403
-/Gmacron 16#1e20
-/Gmonospace 16#ff27
-/Grave 16#f6ce
-/Gravesmall 16#f760
-/Gsmall 16#f767
-/Gsmallhook 16#029b
-/Gstroke 16#01e4
-/H 16#0048
-/H18533 16#25cf
-/H18543 16#25aa
-/H18551 16#25ab
-/H22073 16#25a1
-/HPsquare 16#33cb
-/Haabkhasiancyrillic 16#04a8
-/Hadescendercyrillic 16#04b2
-/Hardsigncyrillic 16#042a
-/Hbar 16#0126
-/Hbrevebelow 16#1e2a
-/Hcedilla 16#1e28
-/Hcircle 16#24bd
-/Hcircumflex 16#0124
-/Hdieresis 16#1e26
-/Hdotaccent 16#1e22
-/Hdotbelow 16#1e24
-/Hmonospace 16#ff28
-/Hoarmenian 16#0540
-/Horicoptic 16#03e8
-/Hsmall 16#f768
-/Hungarumlaut 16#f6cf
-/Hungarumlautsmall 16#f6f8
-/Hzsquare 16#3390
-/I 16#0049
-/IAcyrillic 16#042f
-/IJ 16#0132
-/IUcyrillic 16#042e
-/Iacute 16#00cd
-/Iacutesmall 16#f7ed
-/Ibreve 16#012c
-/Icaron 16#01cf
-/Icircle 16#24be
-/Icircumflex 16#00ce
-/Icircumflexsmall 16#f7ee
-/Icyrillic 16#0406
-/Idblgrave 16#0208
-/Idieresis 16#00cf
-/Idieresisacute 16#1e2e
-/Idieresiscyrillic 16#04e4
-/Idieresissmall 16#f7ef
-/Idot 16#0130
-/Idotaccent 16#0130
-/Idotbelow 16#1eca
-/Iebrevecyrillic 16#04d6
-/Iecyrillic 16#0415
-/Ifraktur 16#2111
-/Igrave 16#00cc
-/Igravesmall 16#f7ec
-/Ihookabove 16#1ec8
-/Iicyrillic 16#0418
-/Iinvertedbreve 16#020a
-/Iishortcyrillic 16#0419
-/Imacron 16#012a
-/Imacroncyrillic 16#04e2
-/Imonospace 16#ff29
-/Iniarmenian 16#053b
-/Iocyrillic 16#0401
-/Iogonek 16#012e
-/Iota 16#0399
-/Iotaafrican 16#0196
-/Iotadieresis 16#03aa
-/Iotatonos 16#038a
-/Ismall 16#f769
-/Istroke 16#0197
-/Itilde 16#0128
-/Itildebelow 16#1e2c
-/Izhitsacyrillic 16#0474
-/Izhitsadblgravecyrillic 16#0476
-/J 16#004a
-/Jaarmenian 16#0541
-/Jcircle 16#24bf
-/Jcircumflex 16#0134
-/Jecyrillic 16#0408
-/Jheharmenian 16#054b
-/Jmonospace 16#ff2a
-/Jsmall 16#f76a
-/K 16#004b
-/KBsquare 16#3385
-/KKsquare 16#33cd
-/Kabashkircyrillic 16#04a0
-/Kacute 16#1e30
-/Kacyrillic 16#041a
-/Kadescendercyrillic 16#049a
-/Kahookcyrillic 16#04c3
-/Kappa 16#039a
-/Kastrokecyrillic 16#049e
-/Kaverticalstrokecyrillic 16#049c
-/Kcaron 16#01e8
-/Kcedilla 16#0136
-/Kcircle 16#24c0
-/Kcommaaccent 16#0136
-/Kdotbelow 16#1e32
-/Keharmenian 16#0554
-/Kenarmenian 16#053f
-/Khacyrillic 16#0425
-/Kheicoptic 16#03e6
-/Khook 16#0198
-/Kjecyrillic 16#040c
-/Klinebelow 16#1e34
-/Kmonospace 16#ff2b
-/Koppacyrillic 16#0480
-/Koppagreek 16#03de
-/Ksicyrillic 16#046e
-/Ksmall 16#f76b
-/L 16#004c
-/LJ 16#01c7
-/LL 16#f6bf
-/Lacute 16#0139
-/Lambda 16#039b
-/Lcaron 16#013d
-/Lcedilla 16#013b
-/Lcircle 16#24c1
-/Lcircumflexbelow 16#1e3c
-/Lcommaaccent 16#013b
-/Ldot 16#013f
-/Ldotaccent 16#013f
-/Ldotbelow 16#1e36
-/Ldotbelowmacron 16#1e38
-/Liwnarmenian 16#053c
-/Lj 16#01c8
-/Ljecyrillic 16#0409
-/Llinebelow 16#1e3a
-/Lmonospace 16#ff2c
-/Lslash 16#0141
-/Lslashsmall 16#f6f9
-/Lsmall 16#f76c
-/M 16#004d
-/MBsquare 16#3386
-/Macron 16#f6d0
-/Macronsmall 16#f7af
-/Macute 16#1e3e
-/Mcircle 16#24c2
-/Mdotaccent 16#1e40
-/Mdotbelow 16#1e42
-/Menarmenian 16#0544
-/Mmonospace 16#ff2d
-/Msmall 16#f76d
-/Mturned 16#019c
-/Mu 16#039c
-/N 16#004e
-/NJ 16#01ca
-/Nacute 16#0143
-/Ncaron 16#0147
-/Ncedilla 16#0145
-/Ncircle 16#24c3
-/Ncircumflexbelow 16#1e4a
-/Ncommaaccent 16#0145
-/Ndotaccent 16#1e44
-/Ndotbelow 16#1e46
-/Nhookleft 16#019d
-/Nineroman 16#2168
-/Nj 16#01cb
-/Njecyrillic 16#040a
-/Nlinebelow 16#1e48
-/Nmonospace 16#ff2e
-/Nowarmenian 16#0546
-/Nsmall 16#f76e
-/Ntilde 16#00d1
-/Ntildesmall 16#f7f1
-/Nu 16#039d
-/O 16#004f
-/OE 16#0152
-/OEsmall 16#f6fa
-/Oacute 16#00d3
-/Oacutesmall 16#f7f3
-/Obarredcyrillic 16#04e8
-/Obarreddieresiscyrillic 16#04ea
-/Obreve 16#014e
-/Ocaron 16#01d1
-/Ocenteredtilde 16#019f
-/Ocircle 16#24c4
-/Ocircumflex 16#00d4
-/Ocircumflexacute 16#1ed0
-/Ocircumflexdotbelow 16#1ed8
-/Ocircumflexgrave 16#1ed2
-/Ocircumflexhookabove 16#1ed4
-/Ocircumflexsmall 16#f7f4
-/Ocircumflextilde 16#1ed6
-/Ocyrillic 16#041e
-/Odblacute 16#0150
-/Odblgrave 16#020c
-/Odieresis 16#00d6
-/Odieresiscyrillic 16#04e6
-/Odieresissmall 16#f7f6
-/Odotbelow 16#1ecc
-/Ogoneksmall 16#f6fb
-/Ograve 16#00d2
-/Ogravesmall 16#f7f2
-/Oharmenian 16#0555
-/Ohm 16#2126
-/Ohookabove 16#1ece
-/Ohorn 16#01a0
-/Ohornacute 16#1eda
-/Ohorndotbelow 16#1ee2
-/Ohorngrave 16#1edc
-/Ohornhookabove 16#1ede
-/Ohorntilde 16#1ee0
-/Ohungarumlaut 16#0150
-/Oi 16#01a2
-/Oinvertedbreve 16#020e
-/Omacron 16#014c
-/Omacronacute 16#1e52
-/Omacrongrave 16#1e50
-/Omega 16#2126
-/Omegacyrillic 16#0460
-/Omegagreek 16#03a9
-/Omegaroundcyrillic 16#047a
-/Omegatitlocyrillic 16#047c
-/Omegatonos 16#038f
-/Omicron 16#039f
-/Omicrontonos 16#038c
-/Omonospace 16#ff2f
-/Oneroman 16#2160
-/Oogonek 16#01ea
-/Oogonekmacron 16#01ec
-/Oopen 16#0186
-/Oslash 16#00d8
-/Oslashacute 16#01fe
-/Oslashsmall 16#f7f8
-/Osmall 16#f76f
-/Ostrokeacute 16#01fe
-/Otcyrillic 16#047e
-/Otilde 16#00d5
-/Otildeacute 16#1e4c
-/Otildedieresis 16#1e4e
-/Otildesmall 16#f7f5
-/P 16#0050
-/Pacute 16#1e54
-/Pcircle 16#24c5
-/Pdotaccent 16#1e56
-/Pecyrillic 16#041f
-/Peharmenian 16#054a
-/Pemiddlehookcyrillic 16#04a6
-/Phi 16#03a6
-/Phook 16#01a4
-/Pi 16#03a0
-/Piwrarmenian 16#0553
-/Pmonospace 16#ff30
-/Psi 16#03a8
-/Psicyrillic 16#0470
-/Psmall 16#f770
-/Q 16#0051
-/Qcircle 16#24c6
-/Qmonospace 16#ff31
-/Qsmall 16#f771
-/R 16#0052
-/Raarmenian 16#054c
-/Racute 16#0154
-/Rcaron 16#0158
-/Rcedilla 16#0156
-/Rcircle 16#24c7
-/Rcommaaccent 16#0156
-/Rdblgrave 16#0210
-/Rdotaccent 16#1e58
-/Rdotbelow 16#1e5a
-/Rdotbelowmacron 16#1e5c
-/Reharmenian 16#0550
-/Rfraktur 16#211c
-/Rho 16#03a1
-/Ringsmall 16#f6fc
-/Rinvertedbreve 16#0212
-/Rlinebelow 16#1e5e
-/Rmonospace 16#ff32
-/Rsmall 16#f772
-/Rsmallinverted 16#0281
-/Rsmallinvertedsuperior 16#02b6
-/S 16#0053
-/SF010000 16#250c
-/SF020000 16#2514
-/SF030000 16#2510
-/SF040000 16#2518
-/SF050000 16#253c
-/SF060000 16#252c
-/SF070000 16#2534
-/SF080000 16#251c
-/SF090000 16#2524
-/SF100000 16#2500
-/SF110000 16#2502
-/SF190000 16#2561
-/SF200000 16#2562
-/SF210000 16#2556
-/SF220000 16#2555
-/SF230000 16#2563
-/SF240000 16#2551
-/SF250000 16#2557
-/SF260000 16#255d
-/SF270000 16#255c
-/SF280000 16#255b
-/SF360000 16#255e
-/SF370000 16#255f
-/SF380000 16#255a
-/SF390000 16#2554
-/SF400000 16#2569
-/SF410000 16#2566
-/SF420000 16#2560
-/SF430000 16#2550
-/SF440000 16#256c
-/SF450000 16#2567
-/SF460000 16#2568
-/SF470000 16#2564
-/SF480000 16#2565
-/SF490000 16#2559
-/SF500000 16#2558
-/SF510000 16#2552
-/SF520000 16#2553
-/SF530000 16#256b
-/SF540000 16#256a
-/Sacute 16#015a
-/Sacutedotaccent 16#1e64
-/Sampigreek 16#03e0
-/Scaron 16#0160
-/Scarondotaccent 16#1e66
-/Scaronsmall 16#f6fd
-/Scedilla 16#015e
-/Schwa 16#018f
-/Schwacyrillic 16#04d8
-/Schwadieresiscyrillic 16#04da
-/Scircle 16#24c8
-/Scircumflex 16#015c
-/Scommaaccent 16#0218
-/Sdotaccent 16#1e60
-/Sdotbelow 16#1e62
-/Sdotbelowdotaccent 16#1e68
-/Seharmenian 16#054d
-/Sevenroman 16#2166
-/Shaarmenian 16#0547
-/Shacyrillic 16#0428
-/Shchacyrillic 16#0429
-/Sheicoptic 16#03e2
-/Shhacyrillic 16#04ba
-/Shimacoptic 16#03ec
-/Sigma 16#03a3
-/Sixroman 16#2165
-/Smonospace 16#ff33
-/Softsigncyrillic 16#042c
-/Ssmall 16#f773
-/Stigmagreek 16#03da
-/T 16#0054
-/Tau 16#03a4
-/Tbar 16#0166
-/Tcaron 16#0164
-/Tcedilla 16#0162
-/Tcircle 16#24c9
-/Tcircumflexbelow 16#1e70
-/Tcommaaccent 16#0162
-/Tdotaccent 16#1e6a
-/Tdotbelow 16#1e6c
-/Tecyrillic 16#0422
-/Tedescendercyrillic 16#04ac
-/Tenroman 16#2169
-/Tetsecyrillic 16#04b4
-/Theta 16#0398
-/Thook 16#01ac
-/Thorn 16#00de
-/Thornsmall 16#f7fe
-/Threeroman 16#2162
-/Tildesmall 16#f6fe
-/Tiwnarmenian 16#054f
-/Tlinebelow 16#1e6e
-/Tmonospace 16#ff34
-/Toarmenian 16#0539
-/Tonefive 16#01bc
-/Tonesix 16#0184
-/Tonetwo 16#01a7
-/Tretroflexhook 16#01ae
-/Tsecyrillic 16#0426
-/Tshecyrillic 16#040b
-/Tsmall 16#f774
-/Twelveroman 16#216b
-/Tworoman 16#2161
-/U 16#0055
-/Uacute 16#00da
-/Uacutesmall 16#f7fa
-/Ubreve 16#016c
-/Ucaron 16#01d3
-/Ucircle 16#24ca
-/Ucircumflex 16#00db
-/Ucircumflexbelow 16#1e76
-/Ucircumflexsmall 16#f7fb
-/Ucyrillic 16#0423
-/Udblacute 16#0170
-/Udblgrave 16#0214
-/Udieresis 16#00dc
-/Udieresisacute 16#01d7
-/Udieresisbelow 16#1e72
-/Udieresiscaron 16#01d9
-/Udieresiscyrillic 16#04f0
-/Udieresisgrave 16#01db
-/Udieresismacron 16#01d5
-/Udieresissmall 16#f7fc
-/Udotbelow 16#1ee4
-/Ugrave 16#00d9
-/Ugravesmall 16#f7f9
-/Uhookabove 16#1ee6
-/Uhorn 16#01af
-/Uhornacute 16#1ee8
-/Uhorndotbelow 16#1ef0
-/Uhorngrave 16#1eea
-/Uhornhookabove 16#1eec
-/Uhorntilde 16#1eee
-/Uhungarumlaut 16#0170
-/Uhungarumlautcyrillic 16#04f2
-/Uinvertedbreve 16#0216
-/Ukcyrillic 16#0478
-/Umacron 16#016a
-/Umacroncyrillic 16#04ee
-/Umacrondieresis 16#1e7a
-/Umonospace 16#ff35
-/Uogonek 16#0172
-/Upsilon 16#03a5
-/Upsilon1 16#03d2
-/Upsilonacutehooksymbolgreek 16#03d3
-/Upsilonafrican 16#01b1
-/Upsilondieresis 16#03ab
-/Upsilondieresishooksymbolgreek 16#03d4
-/Upsilonhooksymbol 16#03d2
-/Upsilontonos 16#038e
-/Uring 16#016e
-/Ushortcyrillic 16#040e
-/Usmall 16#f775
-/Ustraightcyrillic 16#04ae
-/Ustraightstrokecyrillic 16#04b0
-/Utilde 16#0168
-/Utildeacute 16#1e78
-/Utildebelow 16#1e74
-/V 16#0056
-/Vcircle 16#24cb
-/Vdotbelow 16#1e7e
-/Vecyrillic 16#0412
-/Vewarmenian 16#054e
-/Vhook 16#01b2
-/Vmonospace 16#ff36
-/Voarmenian 16#0548
-/Vsmall 16#f776
-/Vtilde 16#1e7c
-/W 16#0057
-/Wacute 16#1e82
-/Wcircle 16#24cc
-/Wcircumflex 16#0174
-/Wdieresis 16#1e84
-/Wdotaccent 16#1e86
-/Wdotbelow 16#1e88
-/Wgrave 16#1e80
-/Wmonospace 16#ff37
-/Wsmall 16#f777
-/X 16#0058
-/Xcircle 16#24cd
-/Xdieresis 16#1e8c
-/Xdotaccent 16#1e8a
-/Xeharmenian 16#053d
-/Xi 16#039e
-/Xmonospace 16#ff38
-/Xsmall 16#f778
-/Y 16#0059
-/Yacute 16#00dd
-/Yacutesmall 16#f7fd
-/Yatcyrillic 16#0462
-/Ycircle 16#24ce
-/Ycircumflex 16#0176
-/Ydieresis 16#0178
-/Ydieresissmall 16#f7ff
-/Ydotaccent 16#1e8e
-/Ydotbelow 16#1ef4
-/Yericyrillic 16#042b
-/Yerudieresiscyrillic 16#04f8
-/Ygrave 16#1ef2
-/Yhook 16#01b3
-/Yhookabove 16#1ef6
-/Yiarmenian 16#0545
-/Yicyrillic 16#0407
-/Yiwnarmenian 16#0552
-/Ymonospace 16#ff39
-/Ysmall 16#f779
-/Ytilde 16#1ef8
-/Yusbigcyrillic 16#046a
-/Yusbigiotifiedcyrillic 16#046c
-/Yuslittlecyrillic 16#0466
-/Yuslittleiotifiedcyrillic 16#0468
-/Z 16#005a
-/Zaarmenian 16#0536
-/Zacute 16#0179
-/Zcaron 16#017d
-/Zcaronsmall 16#f6ff
-/Zcircle 16#24cf
-/Zcircumflex 16#1e90
-/Zdot 16#017b
-/Zdotaccent 16#017b
-/Zdotbelow 16#1e92
-/Zecyrillic 16#0417
-/Zedescendercyrillic 16#0498
-/Zedieresiscyrillic 16#04de
-/Zeta 16#0396
-/Zhearmenian 16#053a
-/Zhebrevecyrillic 16#04c1
-/Zhecyrillic 16#0416
-/Zhedescendercyrillic 16#0496
-/Zhedieresiscyrillic 16#04dc
-/Zlinebelow 16#1e94
-/Zmonospace 16#ff3a
-/Zsmall 16#f77a
-/Zstroke 16#01b5
-/a 16#0061
-/aabengali 16#0986
-/aacute 16#00e1
-/aadeva 16#0906
-/aagujarati 16#0a86
-/aagurmukhi 16#0a06
-/aamatragurmukhi 16#0a3e
-/aarusquare 16#3303
-/aavowelsignbengali 16#09be
-/aavowelsigndeva 16#093e
-/aavowelsigngujarati 16#0abe
-/abbreviationmarkarmenian 16#055f
-/abbreviationsigndeva 16#0970
-/abengali 16#0985
-/abopomofo 16#311a
-/abreve 16#0103
-/abreveacute 16#1eaf
-/abrevecyrillic 16#04d1
-/abrevedotbelow 16#1eb7
-/abrevegrave 16#1eb1
-/abrevehookabove 16#1eb3
-/abrevetilde 16#1eb5
-/acaron 16#01ce
-/acircle 16#24d0
-/acircumflex 16#00e2
-/acircumflexacute 16#1ea5
-/acircumflexdotbelow 16#1ead
-/acircumflexgrave 16#1ea7
-/acircumflexhookabove 16#1ea9
-/acircumflextilde 16#1eab
-/acute 16#00b4
-/acutebelowcmb 16#0317
-/acutecmb 16#0301
-/acutecomb 16#0301
-/acutedeva 16#0954
-/acutelowmod 16#02cf
-/acutetonecmb 16#0341
-/acyrillic 16#0430
-/adblgrave 16#0201
-/addakgurmukhi 16#0a71
-/adeva 16#0905
-/adieresis 16#00e4
-/adieresiscyrillic 16#04d3
-/adieresismacron 16#01df
-/adotbelow 16#1ea1
-/adotmacron 16#01e1
-/ae 16#00e6
-/aeacute 16#01fd
-/aekorean 16#3150
-/aemacron 16#01e3
-/afii00208 16#2015
-/afii08941 16#20a4
-/afii10017 16#0410
-/afii10018 16#0411
-/afii10019 16#0412
-/afii10020 16#0413
-/afii10021 16#0414
-/afii10022 16#0415
-/afii10023 16#0401
-/afii10024 16#0416
-/afii10025 16#0417
-/afii10026 16#0418
-/afii10027 16#0419
-/afii10028 16#041a
-/afii10029 16#041b
-/afii10030 16#041c
-/afii10031 16#041d
-/afii10032 16#041e
-/afii10033 16#041f
-/afii10034 16#0420
-/afii10035 16#0421
-/afii10036 16#0422
-/afii10037 16#0423
-/afii10038 16#0424
-/afii10039 16#0425
-/afii10040 16#0426
-/afii10041 16#0427
-/afii10042 16#0428
-/afii10043 16#0429
-/afii10044 16#042a
-/afii10045 16#042b
-/afii10046 16#042c
-/afii10047 16#042d
-/afii10048 16#042e
-/afii10049 16#042f
-/afii10050 16#0490
-/afii10051 16#0402
-/afii10052 16#0403
-/afii10053 16#0404
-/afii10054 16#0405
-/afii10055 16#0406
-/afii10056 16#0407
-/afii10057 16#0408
-/afii10058 16#0409
-/afii10059 16#040a
-/afii10060 16#040b
-/afii10061 16#040c
-/afii10062 16#040e
-/afii10063 16#f6c4
-/afii10064 16#f6c5
-/afii10065 16#0430
-/afii10066 16#0431
-/afii10067 16#0432
-/afii10068 16#0433
-/afii10069 16#0434
-/afii10070 16#0435
-/afii10071 16#0451
-/afii10072 16#0436
-/afii10073 16#0437
-/afii10074 16#0438
-/afii10075 16#0439
-/afii10076 16#043a
-/afii10077 16#043b
-/afii10078 16#043c
-/afii10079 16#043d
-/afii10080 16#043e
-/afii10081 16#043f
-/afii10082 16#0440
-/afii10083 16#0441
-/afii10084 16#0442
-/afii10085 16#0443
-/afii10086 16#0444
-/afii10087 16#0445
-/afii10088 16#0446
-/afii10089 16#0447
-/afii10090 16#0448
-/afii10091 16#0449
-/afii10092 16#044a
-/afii10093 16#044b
-/afii10094 16#044c
-/afii10095 16#044d
-/afii10096 16#044e
-/afii10097 16#044f
-/afii10098 16#0491
-/afii10099 16#0452
-/afii10100 16#0453
-/afii10101 16#0454
-/afii10102 16#0455
-/afii10103 16#0456
-/afii10104 16#0457
-/afii10105 16#0458
-/afii10106 16#0459
-/afii10107 16#045a
-/afii10108 16#045b
-/afii10109 16#045c
-/afii10110 16#045e
-/afii10145 16#040f
-/afii10146 16#0462
-/afii10147 16#0472
-/afii10148 16#0474
-/afii10192 16#f6c6
-/afii10193 16#045f
-/afii10194 16#0463
-/afii10195 16#0473
-/afii10196 16#0475
-/afii10831 16#f6c7
-/afii10832 16#f6c8
-/afii10846 16#04d9
-/afii299 16#200e
-/afii300 16#200f
-/afii301 16#200d
-/afii57381 16#066a
-/afii57388 16#060c
-/afii57392 16#0660
-/afii57393 16#0661
-/afii57394 16#0662
-/afii57395 16#0663
-/afii57396 16#0664
-/afii57397 16#0665
-/afii57398 16#0666
-/afii57399 16#0667
-/afii57400 16#0668
-/afii57401 16#0669
-/afii57403 16#061b
-/afii57407 16#061f
-/afii57409 16#0621
-/afii57410 16#0622
-/afii57411 16#0623
-/afii57412 16#0624
-/afii57413 16#0625
-/afii57414 16#0626
-/afii57415 16#0627
-/afii57416 16#0628
-/afii57417 16#0629
-/afii57418 16#062a
-/afii57419 16#062b
-/afii57420 16#062c
-/afii57421 16#062d
-/afii57422 16#062e
-/afii57423 16#062f
-/afii57424 16#0630
-/afii57425 16#0631
-/afii57426 16#0632
-/afii57427 16#0633
-/afii57428 16#0634
-/afii57429 16#0635
-/afii57430 16#0636
-/afii57431 16#0637
-/afii57432 16#0638
-/afii57433 16#0639
-/afii57434 16#063a
-/afii57440 16#0640
-/afii57441 16#0641
-/afii57442 16#0642
-/afii57443 16#0643
-/afii57444 16#0644
-/afii57445 16#0645
-/afii57446 16#0646
-/afii57448 16#0648
-/afii57449 16#0649
-/afii57450 16#064a
-/afii57451 16#064b
-/afii57452 16#064c
-/afii57453 16#064d
-/afii57454 16#064e
-/afii57455 16#064f
-/afii57456 16#0650
-/afii57457 16#0651
-/afii57458 16#0652
-/afii57470 16#0647
-/afii57505 16#06a4
-/afii57506 16#067e
-/afii57507 16#0686
-/afii57508 16#0698
-/afii57509 16#06af
-/afii57511 16#0679
-/afii57512 16#0688
-/afii57513 16#0691
-/afii57514 16#06ba
-/afii57519 16#06d2
-/afii57534 16#06d5
-/afii57636 16#20aa
-/afii57645 16#05be
-/afii57658 16#05c3
-/afii57664 16#05d0
-/afii57665 16#05d1
-/afii57666 16#05d2
-/afii57667 16#05d3
-/afii57668 16#05d4
-/afii57669 16#05d5
-/afii57670 16#05d6
-/afii57671 16#05d7
-/afii57672 16#05d8
-/afii57673 16#05d9
-/afii57674 16#05da
-/afii57675 16#05db
-/afii57676 16#05dc
-/afii57677 16#05dd
-/afii57678 16#05de
-/afii57679 16#05df
-/afii57680 16#05e0
-/afii57681 16#05e1
-/afii57682 16#05e2
-/afii57683 16#05e3
-/afii57684 16#05e4
-/afii57685 16#05e5
-/afii57686 16#05e6
-/afii57687 16#05e7
-/afii57688 16#05e8
-/afii57689 16#05e9
-/afii57690 16#05ea
-/afii57694 16#fb2a
-/afii57695 16#fb2b
-/afii57700 16#fb4b
-/afii57705 16#fb1f
-/afii57716 16#05f0
-/afii57717 16#05f1
-/afii57718 16#05f2
-/afii57723 16#fb35
-/afii57793 16#05b4
-/afii57794 16#05b5
-/afii57795 16#05b6
-/afii57796 16#05bb
-/afii57797 16#05b8
-/afii57798 16#05b7
-/afii57799 16#05b0
-/afii57800 16#05b2
-/afii57801 16#05b1
-/afii57802 16#05b3
-/afii57803 16#05c2
-/afii57804 16#05c1
-/afii57806 16#05b9
-/afii57807 16#05bc
-/afii57839 16#05bd
-/afii57841 16#05bf
-/afii57842 16#05c0
-/afii57929 16#02bc
-/afii61248 16#2105
-/afii61289 16#2113
-/afii61352 16#2116
-/afii61573 16#202c
-/afii61574 16#202d
-/afii61575 16#202e
-/afii61664 16#200c
-/afii63167 16#066d
-/afii64937 16#02bd
-/agrave 16#00e0
-/agujarati 16#0a85
-/agurmukhi 16#0a05
-/ahiragana 16#3042
-/ahookabove 16#1ea3
-/aibengali 16#0990
-/aibopomofo 16#311e
-/aideva 16#0910
-/aiecyrillic 16#04d5
-/aigujarati 16#0a90
-/aigurmukhi 16#0a10
-/aimatragurmukhi 16#0a48
-/ainarabic 16#0639
-/ainfinalarabic 16#feca
-/aininitialarabic 16#fecb
-/ainmedialarabic 16#fecc
-/ainvertedbreve 16#0203
-/aivowelsignbengali 16#09c8
-/aivowelsigndeva 16#0948
-/aivowelsigngujarati 16#0ac8
-/akatakana 16#30a2
-/akatakanahalfwidth 16#ff71
-/akorean 16#314f
-/alef 16#05d0
-/alefarabic 16#0627
-/alefdageshhebrew 16#fb30
-/aleffinalarabic 16#fe8e
-/alefhamzaabovearabic 16#0623
-/alefhamzaabovefinalarabic 16#fe84
-/alefhamzabelowarabic 16#0625
-/alefhamzabelowfinalarabic 16#fe88
-/alefhebrew 16#05d0
-/aleflamedhebrew 16#fb4f
-/alefmaddaabovearabic 16#0622
-/alefmaddaabovefinalarabic 16#fe82
-/alefmaksuraarabic 16#0649
-/alefmaksurafinalarabic 16#fef0
-/alefmaksurainitialarabic 16#fef3
-/alefmaksuramedialarabic 16#fef4
-/alefpatahhebrew 16#fb2e
-/alefqamatshebrew 16#fb2f
-/aleph 16#2135
-/allequal 16#224c
-/alpha 16#03b1
-/alphatonos 16#03ac
-/amacron 16#0101
-/amonospace 16#ff41
-/ampersand 16#0026
-/ampersandmonospace 16#ff06
-/ampersandsmall 16#f726
-/amsquare 16#33c2
-/anbopomofo 16#3122
-/angbopomofo 16#3124
-/angkhankhuthai 16#0e5a
-/angle 16#2220
-/anglebracketleft 16#3008
-/anglebracketleftvertical 16#fe3f
-/anglebracketright 16#3009
-/anglebracketrightvertical 16#fe40
-/angleleft 16#2329
-/angleright 16#232a
-/angstrom 16#212b
-/anoteleia 16#0387
-/anudattadeva 16#0952
-/anusvarabengali 16#0982
-/anusvaradeva 16#0902
-/anusvaragujarati 16#0a82
-/aogonek 16#0105
-/apaatosquare 16#3300
-/aparen 16#249c
-/apostrophearmenian 16#055a
-/apostrophemod 16#02bc
-/apple 16#f8ff
-/approaches 16#2250
-/approxequal 16#2248
-/approxequalorimage 16#2252
-/approximatelyequal 16#2245
-/araeaekorean 16#318e
-/araeakorean 16#318d
-/arc 16#2312
-/arighthalfring 16#1e9a
-/aring 16#00e5
-/aringacute 16#01fb
-/aringbelow 16#1e01
-/arrowboth 16#2194
-/arrowdashdown 16#21e3
-/arrowdashleft 16#21e0
-/arrowdashright 16#21e2
-/arrowdashup 16#21e1
-/arrowdblboth 16#21d4
-/arrowdbldown 16#21d3
-/arrowdblleft 16#21d0
-/arrowdblright 16#21d2
-/arrowdblup 16#21d1
-/arrowdown 16#2193
-/arrowdownleft 16#2199
-/arrowdownright 16#2198
-/arrowdownwhite 16#21e9
-/arrowheaddownmod 16#02c5
-/arrowheadleftmod 16#02c2
-/arrowheadrightmod 16#02c3
-/arrowheadupmod 16#02c4
-/arrowhorizex 16#f8e7
-/arrowleft 16#2190
-/arrowleftdbl 16#21d0
-/arrowleftdblstroke 16#21cd
-/arrowleftoverright 16#21c6
-/arrowleftwhite 16#21e6
-/arrowright 16#2192
-/arrowrightdblstroke 16#21cf
-/arrowrightheavy 16#279e
-/arrowrightoverleft 16#21c4
-/arrowrightwhite 16#21e8
-/arrowtableft 16#21e4
-/arrowtabright 16#21e5
-/arrowup 16#2191
-/arrowupdn 16#2195
-/arrowupdnbse 16#21a8
-/arrowupdownbase 16#21a8
-/arrowupleft 16#2196
-/arrowupleftofdown 16#21c5
-/arrowupright 16#2197
-/arrowupwhite 16#21e7
-/arrowvertex 16#f8e6
-/asciicircum 16#005e
-/asciicircummonospace 16#ff3e
-/asciitilde 16#007e
-/asciitildemonospace 16#ff5e
-/ascript 16#0251
-/ascriptturned 16#0252
-/asmallhiragana 16#3041
-/asmallkatakana 16#30a1
-/asmallkatakanahalfwidth 16#ff67
-/asterisk 16#002a
-/asteriskaltonearabic 16#066d
-/asteriskarabic 16#066d
-/asteriskmath 16#2217
-/asteriskmonospace 16#ff0a
-/asterisksmall 16#fe61
-/asterism 16#2042
-/asuperior 16#f6e9
-/asymptoticallyequal 16#2243
-/at 16#0040
-/atilde 16#00e3
-/atmonospace 16#ff20
-/atsmall 16#fe6b
-/aturned 16#0250
-/aubengali 16#0994
-/aubopomofo 16#3120
-/audeva 16#0914
-/augujarati 16#0a94
-/augurmukhi 16#0a14
-/aulengthmarkbengali 16#09d7
-/aumatragurmukhi 16#0a4c
-/auvowelsignbengali 16#09cc
-/auvowelsigndeva 16#094c
-/auvowelsigngujarati 16#0acc
-/avagrahadeva 16#093d
-/aybarmenian 16#0561
-/ayin 16#05e2
-/ayinaltonehebrew 16#fb20
-/ayinhebrew 16#05e2
-/b 16#0062
-/babengali 16#09ac
-/backslash 16#005c
-/backslashmonospace 16#ff3c
-/badeva 16#092c
-/bagujarati 16#0aac
-/bagurmukhi 16#0a2c
-/bahiragana 16#3070
-/bahtthai 16#0e3f
-/bakatakana 16#30d0
-/bar 16#007c
-/barmonospace 16#ff5c
-/bbopomofo 16#3105
-/bcircle 16#24d1
-/bdotaccent 16#1e03
-/bdotbelow 16#1e05
-/beamedsixteenthnotes 16#266c
-/because 16#2235
-/becyrillic 16#0431
-/beharabic 16#0628
-/behfinalarabic 16#fe90
-/behinitialarabic 16#fe91
-/behiragana 16#3079
-/behmedialarabic 16#fe92
-/behmeeminitialarabic 16#fc9f
-/behmeemisolatedarabic 16#fc08
-/behnoonfinalarabic 16#fc6d
-/bekatakana 16#30d9
-/benarmenian 16#0562
-/bet 16#05d1
-/beta 16#03b2
-/betasymbolgreek 16#03d0
-/betdagesh 16#fb31
-/betdageshhebrew 16#fb31
-/bethebrew 16#05d1
-/betrafehebrew 16#fb4c
-/bhabengali 16#09ad
-/bhadeva 16#092d
-/bhagujarati 16#0aad
-/bhagurmukhi 16#0a2d
-/bhook 16#0253
-/bihiragana 16#3073
-/bikatakana 16#30d3
-/bilabialclick 16#0298
-/bindigurmukhi 16#0a02
-/birusquare 16#3331
-/blackcircle 16#25cf
-/blackdiamond 16#25c6
-/blackdownpointingtriangle 16#25bc
-/blackleftpointingpointer 16#25c4
-/blackleftpointingtriangle 16#25c0
-/blacklenticularbracketleft 16#3010
-/blacklenticularbracketleftvertical 16#fe3b
-/blacklenticularbracketright 16#3011
-/blacklenticularbracketrightvertical 16#fe3c
-/blacklowerlefttriangle 16#25e3
-/blacklowerrighttriangle 16#25e2
-/blackrectangle 16#25ac
-/blackrightpointingpointer 16#25ba
-/blackrightpointingtriangle 16#25b6
-/blacksmallsquare 16#25aa
-/blacksmilingface 16#263b
-/blacksquare 16#25a0
-/blackstar 16#2605
-/blackupperlefttriangle 16#25e4
-/blackupperrighttriangle 16#25e5
-/blackuppointingsmalltriangle 16#25b4
-/blackuppointingtriangle 16#25b2
-/blank 16#2423
-/blinebelow 16#1e07
-/block 16#2588
-/bmonospace 16#ff42
-/bobaimaithai 16#0e1a
-/bohiragana 16#307c
-/bokatakana 16#30dc
-/bparen 16#249d
-/bqsquare 16#33c3
-/braceex 16#f8f4
-/braceleft 16#007b
-/braceleftbt 16#f8f3
-/braceleftmid 16#f8f2
-/braceleftmonospace 16#ff5b
-/braceleftsmall 16#fe5b
-/bracelefttp 16#f8f1
-/braceleftvertical 16#fe37
-/braceright 16#007d
-/bracerightbt 16#f8fe
-/bracerightmid 16#f8fd
-/bracerightmonospace 16#ff5d
-/bracerightsmall 16#fe5c
-/bracerighttp 16#f8fc
-/bracerightvertical 16#fe38
-/bracketleft 16#005b
-/bracketleftbt 16#f8f0
-/bracketleftex 16#f8ef
-/bracketleftmonospace 16#ff3b
-/bracketlefttp 16#f8ee
-/bracketright 16#005d
-/bracketrightbt 16#f8fb
-/bracketrightex 16#f8fa
-/bracketrightmonospace 16#ff3d
-/bracketrighttp 16#f8f9
-/breve 16#02d8
-/brevebelowcmb 16#032e
-/brevecmb 16#0306
-/breveinvertedbelowcmb 16#032f
-/breveinvertedcmb 16#0311
-/breveinverteddoublecmb 16#0361
-/bridgebelowcmb 16#032a
-/bridgeinvertedbelowcmb 16#033a
-/brokenbar 16#00a6
-/bstroke 16#0180
-/bsuperior 16#f6ea
-/btopbar 16#0183
-/buhiragana 16#3076
-/bukatakana 16#30d6
-/bullet 16#2022
-/bulletinverse 16#25d8
-/bulletoperator 16#2219
-/bullseye 16#25ce
-/c 16#0063
-/caarmenian 16#056e
-/cabengali 16#099a
-/cacute 16#0107
-/cadeva 16#091a
-/cagujarati 16#0a9a
-/cagurmukhi 16#0a1a
-/calsquare 16#3388
-/candrabindubengali 16#0981
-/candrabinducmb 16#0310
-/candrabindudeva 16#0901
-/candrabindugujarati 16#0a81
-/capslock 16#21ea
-/careof 16#2105
-/caron 16#02c7
-/caronbelowcmb 16#032c
-/caroncmb 16#030c
-/carriagereturn 16#21b5
-/cbopomofo 16#3118
-/ccaron 16#010d
-/ccedilla 16#00e7
-/ccedillaacute 16#1e09
-/ccircle 16#24d2
-/ccircumflex 16#0109
-/ccurl 16#0255
-/cdot 16#010b
-/cdotaccent 16#010b
-/cdsquare 16#33c5
-/cedilla 16#00b8
-/cedillacmb 16#0327
-/cent 16#00a2
-/centigrade 16#2103
-/centinferior 16#f6df
-/centmonospace 16#ffe0
-/centoldstyle 16#f7a2
-/centsuperior 16#f6e0
-/chaarmenian 16#0579
-/chabengali 16#099b
-/chadeva 16#091b
-/chagujarati 16#0a9b
-/chagurmukhi 16#0a1b
-/chbopomofo 16#3114
-/cheabkhasiancyrillic 16#04bd
-/checkmark 16#2713
-/checyrillic 16#0447
-/chedescenderabkhasiancyrillic 16#04bf
-/chedescendercyrillic 16#04b7
-/chedieresiscyrillic 16#04f5
-/cheharmenian 16#0573
-/chekhakassiancyrillic 16#04cc
-/cheverticalstrokecyrillic 16#04b9
-/chi 16#03c7
-/chieuchacirclekorean 16#3277
-/chieuchaparenkorean 16#3217
-/chieuchcirclekorean 16#3269
-/chieuchkorean 16#314a
-/chieuchparenkorean 16#3209
-/chochangthai 16#0e0a
-/chochanthai 16#0e08
-/chochingthai 16#0e09
-/chochoethai 16#0e0c
-/chook 16#0188
-/cieucacirclekorean 16#3276
-/cieucaparenkorean 16#3216
-/cieuccirclekorean 16#3268
-/cieuckorean 16#3148
-/cieucparenkorean 16#3208
-/cieucuparenkorean 16#321c
-/circle 16#25cb
-/circlemultiply 16#2297
-/circleot 16#2299
-/circleplus 16#2295
-/circlepostalmark 16#3036
-/circlewithlefthalfblack 16#25d0
-/circlewithrighthalfblack 16#25d1
-/circumflex 16#02c6
-/circumflexbelowcmb 16#032d
-/circumflexcmb 16#0302
-/clear 16#2327
-/clickalveolar 16#01c2
-/clickdental 16#01c0
-/clicklateral 16#01c1
-/clickretroflex 16#01c3
-/club 16#2663
-/clubsuitblack 16#2663
-/clubsuitwhite 16#2667
-/cmcubedsquare 16#33a4
-/cmonospace 16#ff43
-/cmsquaredsquare 16#33a0
-/coarmenian 16#0581
-/colon 16#003a
-/colonmonetary 16#20a1
-/colonmonospace 16#ff1a
-/colonsign 16#20a1
-/colonsmall 16#fe55
-/colontriangularhalfmod 16#02d1
-/colontriangularmod 16#02d0
-/comma 16#002c
-/commaabovecmb 16#0313
-/commaaboverightcmb 16#0315
-/commaaccent 16#f6c3
-/commaarabic 16#060c
-/commaarmenian 16#055d
-/commainferior 16#f6e1
-/commamonospace 16#ff0c
-/commareversedabovecmb 16#0314
-/commareversedmod 16#02bd
-/commasmall 16#fe50
-/commasuperior 16#f6e2
-/commaturnedabovecmb 16#0312
-/commaturnedmod 16#02bb
-/compass 16#263c
-/congruent 16#2245
-/contourintegral 16#222e
-/control 16#2303
-/controlACK 16#0006
-/controlBEL 16#0007
-/controlBS 16#0008
-/controlCAN 16#0018
-/controlCR 16#000d
-/controlDC1 16#0011
-/controlDC2 16#0012
-/controlDC3 16#0013
-/controlDC4 16#0014
-/controlDEL 16#007f
-/controlDLE 16#0010
-/controlEM 16#0019
-/controlENQ 16#0005
-/controlEOT 16#0004
-/controlESC 16#001b
-/controlETB 16#0017
-/controlETX 16#0003
-/controlFF 16#000c
-/controlFS 16#001c
-/controlGS 16#001d
-/controlHT 16#0009
-/controlLF 16#000a
-/controlNAK 16#0015
-/controlRS 16#001e
-/controlSI 16#000f
-/controlSO 16#000e
-/controlSOT 16#0002
-/controlSTX 16#0001
-/controlSUB 16#001a
-/controlSYN 16#0016
-/controlUS 16#001f
-/controlVT 16#000b
-/copyright 16#00a9
-/copyrightsans 16#f8e9
-/copyrightserif 16#f6d9
-/cornerbracketleft 16#300c
-/cornerbracketlefthalfwidth 16#ff62
-/cornerbracketleftvertical 16#fe41
-/cornerbracketright 16#300d
-/cornerbracketrighthalfwidth 16#ff63
-/cornerbracketrightvertical 16#fe42
-/corporationsquare 16#337f
-/cosquare 16#33c7
-/coverkgsquare 16#33c6
-/cparen 16#249e
-/cruzeiro 16#20a2
-/cstretched 16#0297
-/curlyand 16#22cf
-/curlyor 16#22ce
-/currency 16#00a4
-/cyrBreve 16#f6d1
-/cyrFlex 16#f6d2
-/cyrbreve 16#f6d4
-/cyrflex 16#f6d5
-/d 16#0064
-/daarmenian 16#0564
-/dabengali 16#09a6
-/dadarabic 16#0636
-/dadeva 16#0926
-/dadfinalarabic 16#febe
-/dadinitialarabic 16#febf
-/dadmedialarabic 16#fec0
-/dagesh 16#05bc
-/dageshhebrew 16#05bc
-/dagger 16#2020
-/daggerdbl 16#2021
-/dagujarati 16#0aa6
-/dagurmukhi 16#0a26
-/dahiragana 16#3060
-/dakatakana 16#30c0
-/dalarabic 16#062f
-/dalet 16#05d3
-/daletdagesh 16#fb33
-/daletdageshhebrew 16#fb33
-/dalethebrew 16#05d3
-/dalfinalarabic 16#feaa
-/dammaarabic 16#064f
-/dammalowarabic 16#064f
-/dammatanaltonearabic 16#064c
-/dammatanarabic 16#064c
-/danda 16#0964
-/dargahebrew 16#05a7
-/dargalefthebrew 16#05a7
-/dasiapneumatacyrilliccmb 16#0485
-/dblGrave 16#f6d3
-/dblanglebracketleft 16#300a
-/dblanglebracketleftvertical 16#fe3d
-/dblanglebracketright 16#300b
-/dblanglebracketrightvertical 16#fe3e
-/dblarchinvertedbelowcmb 16#032b
-/dblarrowleft 16#21d4
-/dblarrowright 16#21d2
-/dbldanda 16#0965
-/dblgrave 16#f6d6
-/dblgravecmb 16#030f
-/dblintegral 16#222c
-/dbllowline 16#2017
-/dbllowlinecmb 16#0333
-/dbloverlinecmb 16#033f
-/dblprimemod 16#02ba
-/dblverticalbar 16#2016
-/dblverticallineabovecmb 16#030e
-/dbopomofo 16#3109
-/dbsquare 16#33c8
-/dcaron 16#010f
-/dcedilla 16#1e11
-/dcircle 16#24d3
-/dcircumflexbelow 16#1e13
-/dcroat 16#0111
-/ddabengali 16#09a1
-/ddadeva 16#0921
-/ddagujarati 16#0aa1
-/ddagurmukhi 16#0a21
-/ddalarabic 16#0688
-/ddalfinalarabic 16#fb89
-/dddhadeva 16#095c
-/ddhabengali 16#09a2
-/ddhadeva 16#0922
-/ddhagujarati 16#0aa2
-/ddhagurmukhi 16#0a22
-/ddotaccent 16#1e0b
-/ddotbelow 16#1e0d
-/decimalseparatorarabic 16#066b
-/decimalseparatorpersian 16#066b
-/decyrillic 16#0434
-/degree 16#00b0
-/dehihebrew 16#05ad
-/dehiragana 16#3067
-/deicoptic 16#03ef
-/dekatakana 16#30c7
-/deleteleft 16#232b
-/deleteright 16#2326
-/delta 16#03b4
-/deltaturned 16#018d
-/denominatorminusonenumeratorbengali 16#09f8
-/dezh 16#02a4
-/dhabengali 16#09a7
-/dhadeva 16#0927
-/dhagujarati 16#0aa7
-/dhagurmukhi 16#0a27
-/dhook 16#0257
-/dialytikatonos 16#0385
-/dialytikatonoscmb 16#0344
-/diamond 16#2666
-/diamondsuitwhite 16#2662
-/dieresis 16#00a8
-/dieresisacute 16#f6d7
-/dieresisbelowcmb 16#0324
-/dieresiscmb 16#0308
-/dieresisgrave 16#f6d8
-/dieresistonos 16#0385
-/dihiragana 16#3062
-/dikatakana 16#30c2
-/dittomark 16#3003
-/divide 16#00f7
-/divides 16#2223
-/divisionslash 16#2215
-/djecyrillic 16#0452
-/dkshade 16#2593
-/dlinebelow 16#1e0f
-/dlsquare 16#3397
-/dmacron 16#0111
-/dmonospace 16#ff44
-/dnblock 16#2584
-/dochadathai 16#0e0e
-/dodekthai 16#0e14
-/dohiragana 16#3069
-/dokatakana 16#30c9
-/dollar 16#0024
-/dollarinferior 16#f6e3
-/dollarmonospace 16#ff04
-/dollaroldstyle 16#f724
-/dollarsmall 16#fe69
-/dollarsuperior 16#f6e4
-/dong 16#20ab
-/dorusquare 16#3326
-/dotaccent 16#02d9
-/dotaccentcmb 16#0307
-/dotbelowcmb 16#0323
-/dotbelowcomb 16#0323
-/dotkatakana 16#30fb
-/dotlessi 16#0131
-/dotlessj 16#f6be
-/dotlessjstrokehook 16#0284
-/dotmath 16#22c5
-/dottedcircle 16#25cc
-/doubleyodpatah 16#fb1f
-/doubleyodpatahhebrew 16#fb1f
-/downtackbelowcmb 16#031e
-/downtackmod 16#02d5
-/dparen 16#249f
-/dsuperior 16#f6eb
-/dtail 16#0256
-/dtopbar 16#018c
-/duhiragana 16#3065
-/dukatakana 16#30c5
-/dz 16#01f3
-/dzaltone 16#02a3
-/dzcaron 16#01c6
-/dzcurl 16#02a5
-/dzeabkhasiancyrillic 16#04e1
-/dzecyrillic 16#0455
-/dzhecyrillic 16#045f
-/e 16#0065
-/eacute 16#00e9
-/earth 16#2641
-/ebengali 16#098f
-/ebopomofo 16#311c
-/ebreve 16#0115
-/ecandradeva 16#090d
-/ecandragujarati 16#0a8d
-/ecandravowelsigndeva 16#0945
-/ecandravowelsigngujarati 16#0ac5
-/ecaron 16#011b
-/ecedillabreve 16#1e1d
-/echarmenian 16#0565
-/echyiwnarmenian 16#0587
-/ecircle 16#24d4
-/ecircumflex 16#00ea
-/ecircumflexacute 16#1ebf
-/ecircumflexbelow 16#1e19
-/ecircumflexdotbelow 16#1ec7
-/ecircumflexgrave 16#1ec1
-/ecircumflexhookabove 16#1ec3
-/ecircumflextilde 16#1ec5
-/ecyrillic 16#0454
-/edblgrave 16#0205
-/edeva 16#090f
-/edieresis 16#00eb
-/edot 16#0117
-/edotaccent 16#0117
-/edotbelow 16#1eb9
-/eegurmukhi 16#0a0f
-/eematragurmukhi 16#0a47
-/efcyrillic 16#0444
-/egrave 16#00e8
-/egujarati 16#0a8f
-/eharmenian 16#0567
-/ehbopomofo 16#311d
-/ehiragana 16#3048
-/ehookabove 16#1ebb
-/eibopomofo 16#311f
-/eight 16#0038
-/eightarabic 16#0668
-/eightbengali 16#09ee
-/eightcircle 16#2467
-/eightcircleinversesansserif 16#2791
-/eightdeva 16#096e
-/eighteencircle 16#2471
-/eighteenparen 16#2485
-/eighteenperiod 16#2499
-/eightgujarati 16#0aee
-/eightgurmukhi 16#0a6e
-/eighthackarabic 16#0668
-/eighthangzhou 16#3028
-/eighthnotebeamed 16#266b
-/eightideographicparen 16#3227
-/eightinferior 16#2088
-/eightmonospace 16#ff18
-/eightoldstyle 16#f738
-/eightparen 16#247b
-/eightperiod 16#248f
-/eightpersian 16#06f8
-/eightroman 16#2177
-/eightsuperior 16#2078
-/eightthai 16#0e58
-/einvertedbreve 16#0207
-/eiotifiedcyrillic 16#0465
-/ekatakana 16#30a8
-/ekatakanahalfwidth 16#ff74
-/ekonkargurmukhi 16#0a74
-/ekorean 16#3154
-/elcyrillic 16#043b
-/element 16#2208
-/elevencircle 16#246a
-/elevenparen 16#247e
-/elevenperiod 16#2492
-/elevenroman 16#217a
-/ellipsis 16#2026
-/ellipsisvertical 16#22ee
-/emacron 16#0113
-/emacronacute 16#1e17
-/emacrongrave 16#1e15
-/emcyrillic 16#043c
-/emdash 16#2014
-/emdashvertical 16#fe31
-/emonospace 16#ff45
-/emphasismarkarmenian 16#055b
-/emptyset 16#2205
-/enbopomofo 16#3123
-/encyrillic 16#043d
-/endash 16#2013
-/endashvertical 16#fe32
-/endescendercyrillic 16#04a3
-/eng 16#014b
-/engbopomofo 16#3125
-/enghecyrillic 16#04a5
-/enhookcyrillic 16#04c8
-/enspace 16#2002
-/eogonek 16#0119
-/eokorean 16#3153
-/eopen 16#025b
-/eopenclosed 16#029a
-/eopenreversed 16#025c
-/eopenreversedclosed 16#025e
-/eopenreversedhook 16#025d
-/eparen 16#24a0
-/epsilon 16#03b5
-/epsilontonos 16#03ad
-/equal 16#003d
-/equalmonospace 16#ff1d
-/equalsmall 16#fe66
-/equalsuperior 16#207c
-/equivalence 16#2261
-/erbopomofo 16#3126
-/ercyrillic 16#0440
-/ereversed 16#0258
-/ereversedcyrillic 16#044d
-/escyrillic 16#0441
-/esdescendercyrillic 16#04ab
-/esh 16#0283
-/eshcurl 16#0286
-/eshortdeva 16#090e
-/eshortvowelsigndeva 16#0946
-/eshreversedloop 16#01aa
-/eshsquatreversed 16#0285
-/esmallhiragana 16#3047
-/esmallkatakana 16#30a7
-/esmallkatakanahalfwidth 16#ff6a
-/estimated 16#212e
-/esuperior 16#f6ec
-/eta 16#03b7
-/etarmenian 16#0568
-/etatonos 16#03ae
-/eth 16#00f0
-/etilde 16#1ebd
-/etildebelow 16#1e1b
-/etnahtafoukhhebrew 16#0591
-/etnahtafoukhlefthebrew 16#0591
-/etnahtahebrew 16#0591
-/etnahtalefthebrew 16#0591
-/eturned 16#01dd
-/eukorean 16#3161
-/euro 16#20ac
-/evowelsignbengali 16#09c7
-/evowelsigndeva 16#0947
-/evowelsigngujarati 16#0ac7
-/exclam 16#0021
-/exclamarmenian 16#055c
-/exclamdbl 16#203c
-/exclamdown 16#00a1
-/exclamdownsmall 16#f7a1
-/exclammonospace 16#ff01
-/exclamsmall 16#f721
-/existential 16#2203
-/ezh 16#0292
-/ezhcaron 16#01ef
-/ezhcurl 16#0293
-/ezhreversed 16#01b9
-/ezhtail 16#01ba
-/f 16#0066
-/fadeva 16#095e
-/fagurmukhi 16#0a5e
-/fahrenheit 16#2109
-/fathaarabic 16#064e
-/fathalowarabic 16#064e
-/fathatanarabic 16#064b
-/fbopomofo 16#3108
-/fcircle 16#24d5
-/fdotaccent 16#1e1f
-/feharabic 16#0641
-/feharmenian 16#0586
-/fehfinalarabic 16#fed2
-/fehinitialarabic 16#fed3
-/fehmedialarabic 16#fed4
-/feicoptic 16#03e5
-/female 16#2640
-/ff 16#fb00
-/ffi 16#fb03
-/ffl 16#fb04
-/fi 16#fb01
-/fifteencircle 16#246e
-/fifteenparen 16#2482
-/fifteenperiod 16#2496
-/figuredash 16#2012
-/filledbox 16#25a0
-/filledrect 16#25ac
-/finalkaf 16#05da
-/finalkafdagesh 16#fb3a
-/finalkafdageshhebrew 16#fb3a
-/finalkafhebrew 16#05da
-/finalmem 16#05dd
-/finalmemhebrew 16#05dd
-/finalnun 16#05df
-/finalnunhebrew 16#05df
-/finalpe 16#05e3
-/finalpehebrew 16#05e3
-/finaltsadi 16#05e5
-/finaltsadihebrew 16#05e5
-/firsttonechinese 16#02c9
-/fisheye 16#25c9
-/fitacyrillic 16#0473
-/five 16#0035
-/fivearabic 16#0665
-/fivebengali 16#09eb
-/fivecircle 16#2464
-/fivecircleinversesansserif 16#278e
-/fivedeva 16#096b
-/fiveeighths 16#215d
-/fivegujarati 16#0aeb
-/fivegurmukhi 16#0a6b
-/fivehackarabic 16#0665
-/fivehangzhou 16#3025
-/fiveideographicparen 16#3224
-/fiveinferior 16#2085
-/fivemonospace 16#ff15
-/fiveoldstyle 16#f735
-/fiveparen 16#2478
-/fiveperiod 16#248c
-/fivepersian 16#06f5
-/fiveroman 16#2174
-/fivesuperior 16#2075
-/fivethai 16#0e55
-/fl 16#fb02
-/florin 16#0192
-/fmonospace 16#ff46
-/fmsquare 16#3399
-/fofanthai 16#0e1f
-/fofathai 16#0e1d
-/fongmanthai 16#0e4f
-/forall 16#2200
-/four 16#0034
-/fourarabic 16#0664
-/fourbengali 16#09ea
-/fourcircle 16#2463
-/fourcircleinversesansserif 16#278d
-/fourdeva 16#096a
-/fourgujarati 16#0aea
-/fourgurmukhi 16#0a6a
-/fourhackarabic 16#0664
-/fourhangzhou 16#3024
-/fourideographicparen 16#3223
-/fourinferior 16#2084
-/fourmonospace 16#ff14
-/fournumeratorbengali 16#09f7
-/fouroldstyle 16#f734
-/fourparen 16#2477
-/fourperiod 16#248b
-/fourpersian 16#06f4
-/fourroman 16#2173
-/foursuperior 16#2074
-/fourteencircle 16#246d
-/fourteenparen 16#2481
-/fourteenperiod 16#2495
-/fourthai 16#0e54
-/fourthtonechinese 16#02cb
-/fparen 16#24a1
-/fraction 16#2044
-/franc 16#20a3
-/g 16#0067
-/gabengali 16#0997
-/gacute 16#01f5
-/gadeva 16#0917
-/gafarabic 16#06af
-/gaffinalarabic 16#fb93
-/gafinitialarabic 16#fb94
-/gafmedialarabic 16#fb95
-/gagujarati 16#0a97
-/gagurmukhi 16#0a17
-/gahiragana 16#304c
-/gakatakana 16#30ac
-/gamma 16#03b3
-/gammalatinsmall 16#0263
-/gammasuperior 16#02e0
-/gangiacoptic 16#03eb
-/gbopomofo 16#310d
-/gbreve 16#011f
-/gcaron 16#01e7
-/gcedilla 16#0123
-/gcircle 16#24d6
-/gcircumflex 16#011d
-/gcommaaccent 16#0123
-/gdot 16#0121
-/gdotaccent 16#0121
-/gecyrillic 16#0433
-/gehiragana 16#3052
-/gekatakana 16#30b2
-/geometricallyequal 16#2251
-/gereshaccenthebrew 16#059c
-/gereshhebrew 16#05f3
-/gereshmuqdamhebrew 16#059d
-/germandbls 16#00df
-/gershayimaccenthebrew 16#059e
-/gershayimhebrew 16#05f4
-/getamark 16#3013
-/ghabengali 16#0998
-/ghadarmenian 16#0572
-/ghadeva 16#0918
-/ghagujarati 16#0a98
-/ghagurmukhi 16#0a18
-/ghainarabic 16#063a
-/ghainfinalarabic 16#fece
-/ghaininitialarabic 16#fecf
-/ghainmedialarabic 16#fed0
-/ghemiddlehookcyrillic 16#0495
-/ghestrokecyrillic 16#0493
-/gheupturncyrillic 16#0491
-/ghhadeva 16#095a
-/ghhagurmukhi 16#0a5a
-/ghook 16#0260
-/ghzsquare 16#3393
-/gihiragana 16#304e
-/gikatakana 16#30ae
-/gimarmenian 16#0563
-/gimel 16#05d2
-/gimeldagesh 16#fb32
-/gimeldageshhebrew 16#fb32
-/gimelhebrew 16#05d2
-/gjecyrillic 16#0453
-/glottalinvertedstroke 16#01be
-/glottalstop 16#0294
-/glottalstopinverted 16#0296
-/glottalstopmod 16#02c0
-/glottalstopreversed 16#0295
-/glottalstopreversedmod 16#02c1
-/glottalstopreversedsuperior 16#02e4
-/glottalstopstroke 16#02a1
-/glottalstopstrokereversed 16#02a2
-/gmacron 16#1e21
-/gmonospace 16#ff47
-/gohiragana 16#3054
-/gokatakana 16#30b4
-/gparen 16#24a2
-/gpasquare 16#33ac
-/gradient 16#2207
-/grave 16#0060
-/gravebelowcmb 16#0316
-/gravecmb 16#0300
-/gravecomb 16#0300
-/gravedeva 16#0953
-/gravelowmod 16#02ce
-/gravemonospace 16#ff40
-/gravetonecmb 16#0340
-/greater 16#003e
-/greaterequal 16#2265
-/greaterequalorless 16#22db
-/greatermonospace 16#ff1e
-/greaterorequivalent 16#2273
-/greaterorless 16#2277
-/greateroverequal 16#2267
-/greatersmall 16#fe65
-/gscript 16#0261
-/gstroke 16#01e5
-/guhiragana 16#3050
-/guillemotleft 16#00ab
-/guillemotright 16#00bb
-/guilsinglleft 16#2039
-/guilsinglright 16#203a
-/gukatakana 16#30b0
-/guramusquare 16#3318
-/gysquare 16#33c9
-/h 16#0068
-/haabkhasiancyrillic 16#04a9
-/haaltonearabic 16#06c1
-/habengali 16#09b9
-/hadescendercyrillic 16#04b3
-/hadeva 16#0939
-/hagujarati 16#0ab9
-/hagurmukhi 16#0a39
-/haharabic 16#062d
-/hahfinalarabic 16#fea2
-/hahinitialarabic 16#fea3
-/hahiragana 16#306f
-/hahmedialarabic 16#fea4
-/haitusquare 16#332a
-/hakatakana 16#30cf
-/hakatakanahalfwidth 16#ff8a
-/halantgurmukhi 16#0a4d
-/hamzaarabic 16#0621
-/hamzalowarabic 16#0621
-/hangulfiller 16#3164
-/hardsigncyrillic 16#044a
-/harpoonleftbarbup 16#21bc
-/harpoonrightbarbup 16#21c0
-/hasquare 16#33ca
-/hatafpatah 16#05b2
-/hatafpatah16 16#05b2
-/hatafpatah23 16#05b2
-/hatafpatah2f 16#05b2
-/hatafpatahhebrew 16#05b2
-/hatafpatahnarrowhebrew 16#05b2
-/hatafpatahquarterhebrew 16#05b2
-/hatafpatahwidehebrew 16#05b2
-/hatafqamats 16#05b3
-/hatafqamats1b 16#05b3
-/hatafqamats28 16#05b3
-/hatafqamats34 16#05b3
-/hatafqamatshebrew 16#05b3
-/hatafqamatsnarrowhebrew 16#05b3
-/hatafqamatsquarterhebrew 16#05b3
-/hatafqamatswidehebrew 16#05b3
-/hatafsegol 16#05b1
-/hatafsegol17 16#05b1
-/hatafsegol24 16#05b1
-/hatafsegol30 16#05b1
-/hatafsegolhebrew 16#05b1
-/hatafsegolnarrowhebrew 16#05b1
-/hatafsegolquarterhebrew 16#05b1
-/hatafsegolwidehebrew 16#05b1
-/hbar 16#0127
-/hbopomofo 16#310f
-/hbrevebelow 16#1e2b
-/hcedilla 16#1e29
-/hcircle 16#24d7
-/hcircumflex 16#0125
-/hdieresis 16#1e27
-/hdotaccent 16#1e23
-/hdotbelow 16#1e25
-/he 16#05d4
-/heart 16#2665
-/heartsuitblack 16#2665
-/heartsuitwhite 16#2661
-/hedagesh 16#fb34
-/hedageshhebrew 16#fb34
-/hehaltonearabic 16#06c1
-/heharabic 16#0647
-/hehebrew 16#05d4
-/hehfinalaltonearabic 16#fba7
-/hehfinalalttwoarabic 16#feea
-/hehfinalarabic 16#feea
-/hehhamzaabovefinalarabic 16#fba5
-/hehhamzaaboveisolatedarabic 16#fba4
-/hehinitialaltonearabic 16#fba8
-/hehinitialarabic 16#feeb
-/hehiragana 16#3078
-/hehmedialaltonearabic 16#fba9
-/hehmedialarabic 16#feec
-/heiseierasquare 16#337b
-/hekatakana 16#30d8
-/hekatakanahalfwidth 16#ff8d
-/hekutaarusquare 16#3336
-/henghook 16#0267
-/herutusquare 16#3339
-/het 16#05d7
-/hethebrew 16#05d7
-/hhook 16#0266
-/hhooksuperior 16#02b1
-/hieuhacirclekorean 16#327b
-/hieuhaparenkorean 16#321b
-/hieuhcirclekorean 16#326d
-/hieuhkorean 16#314e
-/hieuhparenkorean 16#320d
-/hihiragana 16#3072
-/hikatakana 16#30d2
-/hikatakanahalfwidth 16#ff8b
-/hiriq 16#05b4
-/hiriq14 16#05b4
-/hiriq21 16#05b4
-/hiriq2d 16#05b4
-/hiriqhebrew 16#05b4
-/hiriqnarrowhebrew 16#05b4
-/hiriqquarterhebrew 16#05b4
-/hiriqwidehebrew 16#05b4
-/hlinebelow 16#1e96
-/hmonospace 16#ff48
-/hoarmenian 16#0570
-/hohipthai 16#0e2b
-/hohiragana 16#307b
-/hokatakana 16#30db
-/hokatakanahalfwidth 16#ff8e
-/holam 16#05b9
-/holam19 16#05b9
-/holam26 16#05b9
-/holam32 16#05b9
-/holamhebrew 16#05b9
-/holamnarrowhebrew 16#05b9
-/holamquarterhebrew 16#05b9
-/holamwidehebrew 16#05b9
-/honokhukthai 16#0e2e
-/hookabovecomb 16#0309
-/hookcmb 16#0309
-/hookpalatalizedbelowcmb 16#0321
-/hookretroflexbelowcmb 16#0322
-/hoonsquare 16#3342
-/horicoptic 16#03e9
-/horizontalbar 16#2015
-/horncmb 16#031b
-/hotsprings 16#2668
-/house 16#2302
-/hparen 16#24a3
-/hsuperior 16#02b0
-/hturned 16#0265
-/huhiragana 16#3075
-/huiitosquare 16#3333
-/hukatakana 16#30d5
-/hukatakanahalfwidth 16#ff8c
-/hungarumlaut 16#02dd
-/hungarumlautcmb 16#030b
-/hv 16#0195
-/hyphen 16#002d
-/hypheninferior 16#f6e5
-/hyphenmonospace 16#ff0d
-/hyphensmall 16#fe63
-/hyphensuperior 16#f6e6
-/hyphentwo 16#2010
-/i 16#0069
-/iacute 16#00ed
-/iacyrillic 16#044f
-/ibengali 16#0987
-/ibopomofo 16#3127
-/ibreve 16#012d
-/icaron 16#01d0
-/icircle 16#24d8
-/icircumflex 16#00ee
-/icyrillic 16#0456
-/idblgrave 16#0209
-/ideographearthcircle 16#328f
-/ideographfirecircle 16#328b
-/ideographicallianceparen 16#323f
-/ideographiccallparen 16#323a
-/ideographiccentrecircle 16#32a5
-/ideographicclose 16#3006
-/ideographiccomma 16#3001
-/ideographiccommaleft 16#ff64
-/ideographiccongratulationparen 16#3237
-/ideographiccorrectcircle 16#32a3
-/ideographicearthparen 16#322f
-/ideographicenterpriseparen 16#323d
-/ideographicexcellentcircle 16#329d
-/ideographicfestivalparen 16#3240
-/ideographicfinancialcircle 16#3296
-/ideographicfinancialparen 16#3236
-/ideographicfireparen 16#322b
-/ideographichaveparen 16#3232
-/ideographichighcircle 16#32a4
-/ideographiciterationmark 16#3005
-/ideographiclaborcircle 16#3298
-/ideographiclaborparen 16#3238
-/ideographicleftcircle 16#32a7
-/ideographiclowcircle 16#32a6
-/ideographicmedicinecircle 16#32a9
-/ideographicmetalparen 16#322e
-/ideographicmoonparen 16#322a
-/ideographicnameparen 16#3234
-/ideographicperiod 16#3002
-/ideographicprintcircle 16#329e
-/ideographicreachparen 16#3243
-/ideographicrepresentparen 16#3239
-/ideographicresourceparen 16#323e
-/ideographicrightcircle 16#32a8
-/ideographicsecretcircle 16#3299
-/ideographicselfparen 16#3242
-/ideographicsocietyparen 16#3233
-/ideographicspace 16#3000
-/ideographicspecialparen 16#3235
-/ideographicstockparen 16#3231
-/ideographicstudyparen 16#323b
-/ideographicsunparen 16#3230
-/ideographicsuperviseparen 16#323c
-/ideographicwaterparen 16#322c
-/ideographicwoodparen 16#322d
-/ideographiczero 16#3007
-/ideographmetalcircle 16#328e
-/ideographmooncircle 16#328a
-/ideographnamecircle 16#3294
-/ideographsuncircle 16#3290
-/ideographwatercircle 16#328c
-/ideographwoodcircle 16#328d
-/ideva 16#0907
-/idieresis 16#00ef
-/idieresisacute 16#1e2f
-/idieresiscyrillic 16#04e5
-/idotbelow 16#1ecb
-/iebrevecyrillic 16#04d7
-/iecyrillic 16#0435
-/ieungacirclekorean 16#3275
-/ieungaparenkorean 16#3215
-/ieungcirclekorean 16#3267
-/ieungkorean 16#3147
-/ieungparenkorean 16#3207
-/igrave 16#00ec
-/igujarati 16#0a87
-/igurmukhi 16#0a07
-/ihiragana 16#3044
-/ihookabove 16#1ec9
-/iibengali 16#0988
-/iicyrillic 16#0438
-/iideva 16#0908
-/iigujarati 16#0a88
-/iigurmukhi 16#0a08
-/iimatragurmukhi 16#0a40
-/iinvertedbreve 16#020b
-/iishortcyrillic 16#0439
-/iivowelsignbengali 16#09c0
-/iivowelsigndeva 16#0940
-/iivowelsigngujarati 16#0ac0
-/ij 16#0133
-/ikatakana 16#30a4
-/ikatakanahalfwidth 16#ff72
-/ikorean 16#3163
-/ilde 16#02dc
-/iluyhebrew 16#05ac
-/imacron 16#012b
-/imacroncyrillic 16#04e3
-/imageorapproximatelyequal 16#2253
-/imatragurmukhi 16#0a3f
-/imonospace 16#ff49
-/increment 16#2206
-/infinity 16#221e
-/iniarmenian 16#056b
-/integral 16#222b
-/integralbottom 16#2321
-/integralbt 16#2321
-/integralex 16#f8f5
-/integraltop 16#2320
-/integraltp 16#2320
-/intersection 16#2229
-/intisquare 16#3305
-/invbullet 16#25d8
-/invcircle 16#25d9
-/invsmileface 16#263b
-/iocyrillic 16#0451
-/iogonek 16#012f
-/iota 16#03b9
-/iotadieresis 16#03ca
-/iotadieresistonos 16#0390
-/iotalatin 16#0269
-/iotatonos 16#03af
-/iparen 16#24a4
-/irigurmukhi 16#0a72
-/ismallhiragana 16#3043
-/ismallkatakana 16#30a3
-/ismallkatakanahalfwidth 16#ff68
-/issharbengali 16#09fa
-/istroke 16#0268
-/isuperior 16#f6ed
-/iterationhiragana 16#309d
-/iterationkatakana 16#30fd
-/itilde 16#0129
-/itildebelow 16#1e2d
-/iubopomofo 16#3129
-/iucyrillic 16#044e
-/ivowelsignbengali 16#09bf
-/ivowelsigndeva 16#093f
-/ivowelsigngujarati 16#0abf
-/izhitsacyrillic 16#0475
-/izhitsadblgravecyrillic 16#0477
-/j 16#006a
-/jaarmenian 16#0571
-/jabengali 16#099c
-/jadeva 16#091c
-/jagujarati 16#0a9c
-/jagurmukhi 16#0a1c
-/jbopomofo 16#3110
-/jcaron 16#01f0
-/jcircle 16#24d9
-/jcircumflex 16#0135
-/jcrossedtail 16#029d
-/jdotlessstroke 16#025f
-/jecyrillic 16#0458
-/jeemarabic 16#062c
-/jeemfinalarabic 16#fe9e
-/jeeminitialarabic 16#fe9f
-/jeemmedialarabic 16#fea0
-/jeharabic 16#0698
-/jehfinalarabic 16#fb8b
-/jhabengali 16#099d
-/jhadeva 16#091d
-/jhagujarati 16#0a9d
-/jhagurmukhi 16#0a1d
-/jheharmenian 16#057b
-/jis 16#3004
-/jmonospace 16#ff4a
-/jparen 16#24a5
-/jsuperior 16#02b2
-/k 16#006b
-/kabashkircyrillic 16#04a1
-/kabengali 16#0995
-/kacute 16#1e31
-/kacyrillic 16#043a
-/kadescendercyrillic 16#049b
-/kadeva 16#0915
-/kaf 16#05db
-/kafarabic 16#0643
-/kafdagesh 16#fb3b
-/kafdageshhebrew 16#fb3b
-/kaffinalarabic 16#feda
-/kafhebrew 16#05db
-/kafinitialarabic 16#fedb
-/kafmedialarabic 16#fedc
-/kafrafehebrew 16#fb4d
-/kagujarati 16#0a95
-/kagurmukhi 16#0a15
-/kahiragana 16#304b
-/kahookcyrillic 16#04c4
-/kakatakana 16#30ab
-/kakatakanahalfwidth 16#ff76
-/kappa 16#03ba
-/kappasymbolgreek 16#03f0
-/kapyeounmieumkorean 16#3171
-/kapyeounphieuphkorean 16#3184
-/kapyeounpieupkorean 16#3178
-/kapyeounssangpieupkorean 16#3179
-/karoriisquare 16#330d
-/kashidaautoarabic 16#0640
-/kashidaautonosidebearingarabic 16#0640
-/kasmallkatakana 16#30f5
-/kasquare 16#3384
-/kasraarabic 16#0650
-/kasratanarabic 16#064d
-/kastrokecyrillic 16#049f
-/katahiraprolongmarkhalfwidth 16#ff70
-/kaverticalstrokecyrillic 16#049d
-/kbopomofo 16#310e
-/kcalsquare 16#3389
-/kcaron 16#01e9
-/kcedilla 16#0137
-/kcircle 16#24da
-/kcommaaccent 16#0137
-/kdotbelow 16#1e33
-/keharmenian 16#0584
-/kehiragana 16#3051
-/kekatakana 16#30b1
-/kekatakanahalfwidth 16#ff79
-/kenarmenian 16#056f
-/kesmallkatakana 16#30f6
-/kgreenlandic 16#0138
-/khabengali 16#0996
-/khacyrillic 16#0445
-/khadeva 16#0916
-/khagujarati 16#0a96
-/khagurmukhi 16#0a16
-/khaharabic 16#062e
-/khahfinalarabic 16#fea6
-/khahinitialarabic 16#fea7
-/khahmedialarabic 16#fea8
-/kheicoptic 16#03e7
-/khhadeva 16#0959
-/khhagurmukhi 16#0a59
-/khieukhacirclekorean 16#3278
-/khieukhaparenkorean 16#3218
-/khieukhcirclekorean 16#326a
-/khieukhkorean 16#314b
-/khieukhparenkorean 16#320a
-/khokhaithai 16#0e02
-/khokhonthai 16#0e05
-/khokhuatthai 16#0e03
-/khokhwaithai 16#0e04
-/khomutthai 16#0e5b
-/khook 16#0199
-/khorakhangthai 16#0e06
-/khzsquare 16#3391
-/kihiragana 16#304d
-/kikatakana 16#30ad
-/kikatakanahalfwidth 16#ff77
-/kiroguramusquare 16#3315
-/kiromeetorusquare 16#3316
-/kirosquare 16#3314
-/kiyeokacirclekorean 16#326e
-/kiyeokaparenkorean 16#320e
-/kiyeokcirclekorean 16#3260
-/kiyeokkorean 16#3131
-/kiyeokparenkorean 16#3200
-/kiyeoksioskorean 16#3133
-/kjecyrillic 16#045c
-/klinebelow 16#1e35
-/klsquare 16#3398
-/kmcubedsquare 16#33a6
-/kmonospace 16#ff4b
-/kmsquaredsquare 16#33a2
-/kohiragana 16#3053
-/kohmsquare 16#33c0
-/kokaithai 16#0e01
-/kokatakana 16#30b3
-/kokatakanahalfwidth 16#ff7a
-/kooposquare 16#331e
-/koppacyrillic 16#0481
-/koreanstandardsymbol 16#327f
-/koroniscmb 16#0343
-/kparen 16#24a6
-/kpasquare 16#33aa
-/ksicyrillic 16#046f
-/ktsquare 16#33cf
-/kturned 16#029e
-/kuhiragana 16#304f
-/kukatakana 16#30af
-/kukatakanahalfwidth 16#ff78
-/kvsquare 16#33b8
-/kwsquare 16#33be
-/l 16#006c
-/labengali 16#09b2
-/lacute 16#013a
-/ladeva 16#0932
-/lagujarati 16#0ab2
-/lagurmukhi 16#0a32
-/lakkhangyaothai 16#0e45
-/lamaleffinalarabic 16#fefc
-/lamalefhamzaabovefinalarabic 16#fef8
-/lamalefhamzaaboveisolatedarabic 16#fef7
-/lamalefhamzabelowfinalarabic 16#fefa
-/lamalefhamzabelowisolatedarabic 16#fef9
-/lamalefisolatedarabic 16#fefb
-/lamalefmaddaabovefinalarabic 16#fef6
-/lamalefmaddaaboveisolatedarabic 16#fef5
-/lamarabic 16#0644
-/lambda 16#03bb
-/lambdastroke 16#019b
-/lamed 16#05dc
-/lameddagesh 16#fb3c
-/lameddageshhebrew 16#fb3c
-/lamedhebrew 16#05dc
-/lamfinalarabic 16#fede
-/lamhahinitialarabic 16#fcca
-/laminitialarabic 16#fedf
-/lamjeeminitialarabic 16#fcc9
-/lamkhahinitialarabic 16#fccb
-/lamlamhehisolatedarabic 16#fdf2
-/lammedialarabic 16#fee0
-/lammeemhahinitialarabic 16#fd88
-/lammeeminitialarabic 16#fccc
-/largecircle 16#25ef
-/lbar 16#019a
-/lbelt 16#026c
-/lbopomofo 16#310c
-/lcaron 16#013e
-/lcedilla 16#013c
-/lcircle 16#24db
-/lcircumflexbelow 16#1e3d
-/lcommaaccent 16#013c
-/ldot 16#0140
-/ldotaccent 16#0140
-/ldotbelow 16#1e37
-/ldotbelowmacron 16#1e39
-/leftangleabovecmb 16#031a
-/lefttackbelowcmb 16#0318
-/less 16#003c
-/lessequal 16#2264
-/lessequalorgreater 16#22da
-/lessmonospace 16#ff1c
-/lessorequivalent 16#2272
-/lessorgreater 16#2276
-/lessoverequal 16#2266
-/lesssmall 16#fe64
-/lezh 16#026e
-/lfblock 16#258c
-/lhookretroflex 16#026d
-/lira 16#20a4
-/liwnarmenian 16#056c
-/lj 16#01c9
-/ljecyrillic 16#0459
-/ll 16#f6c0
-/lladeva 16#0933
-/llagujarati 16#0ab3
-/llinebelow 16#1e3b
-/llladeva 16#0934
-/llvocalicbengali 16#09e1
-/llvocalicdeva 16#0961
-/llvocalicvowelsignbengali 16#09e3
-/llvocalicvowelsigndeva 16#0963
-/lmiddletilde 16#026b
-/lmonospace 16#ff4c
-/lmsquare 16#33d0
-/lochulathai 16#0e2c
-/logicaland 16#2227
-/logicalnot 16#00ac
-/logicalnotreversed 16#2310
-/logicalor 16#2228
-/lolingthai 16#0e25
-/longs 16#017f
-/lowlinecenterline 16#fe4e
-/lowlinecmb 16#0332
-/lowlinedashed 16#fe4d
-/lozenge 16#25ca
-/lparen 16#24a7
-/lslash 16#0142
-/lsquare 16#2113
-/lsuperior 16#f6ee
-/ltshade 16#2591
-/luthai 16#0e26
-/lvocalicbengali 16#098c
-/lvocalicdeva 16#090c
-/lvocalicvowelsignbengali 16#09e2
-/lvocalicvowelsigndeva 16#0962
-/lxsquare 16#33d3
-/m 16#006d
-/mabengali 16#09ae
-/macron 16#00af
-/macronbelowcmb 16#0331
-/macroncmb 16#0304
-/macronlowmod 16#02cd
-/macronmonospace 16#ffe3
-/macute 16#1e3f
-/madeva 16#092e
-/magujarati 16#0aae
-/magurmukhi 16#0a2e
-/mahapakhhebrew 16#05a4
-/mahapakhlefthebrew 16#05a4
-/mahiragana 16#307e
-/maichattawalowleftthai 16#f895
-/maichattawalowrightthai 16#f894
-/maichattawathai 16#0e4b
-/maichattawaupperleftthai 16#f893
-/maieklowleftthai 16#f88c
-/maieklowrightthai 16#f88b
-/maiekthai 16#0e48
-/maiekupperleftthai 16#f88a
-/maihanakatleftthai 16#f884
-/maihanakatthai 16#0e31
-/maitaikhuleftthai 16#f889
-/maitaikhuthai 16#0e47
-/maitholowleftthai 16#f88f
-/maitholowrightthai 16#f88e
-/maithothai 16#0e49
-/maithoupperleftthai 16#f88d
-/maitrilowleftthai 16#f892
-/maitrilowrightthai 16#f891
-/maitrithai 16#0e4a
-/maitriupperleftthai 16#f890
-/maiyamokthai 16#0e46
-/makatakana 16#30de
-/makatakanahalfwidth 16#ff8f
-/male 16#2642
-/mansyonsquare 16#3347
-/maqafhebrew 16#05be
-/mars 16#2642
-/masoracirclehebrew 16#05af
-/masquare 16#3383
-/mbopomofo 16#3107
-/mbsquare 16#33d4
-/mcircle 16#24dc
-/mcubedsquare 16#33a5
-/mdotaccent 16#1e41
-/mdotbelow 16#1e43
-/meemarabic 16#0645
-/meemfinalarabic 16#fee2
-/meeminitialarabic 16#fee3
-/meemmedialarabic 16#fee4
-/meemmeeminitialarabic 16#fcd1
-/meemmeemisolatedarabic 16#fc48
-/meetorusquare 16#334d
-/mehiragana 16#3081
-/meizierasquare 16#337e
-/mekatakana 16#30e1
-/mekatakanahalfwidth 16#ff92
-/mem 16#05de
-/memdagesh 16#fb3e
-/memdageshhebrew 16#fb3e
-/memhebrew 16#05de
-/menarmenian 16#0574
-/merkhahebrew 16#05a5
-/merkhakefulahebrew 16#05a6
-/merkhakefulalefthebrew 16#05a6
-/merkhalefthebrew 16#05a5
-/mhook 16#0271
-/mhzsquare 16#3392
-/middledotkatakanahalfwidth 16#ff65
-/middot 16#00b7
-/mieumacirclekorean 16#3272
-/mieumaparenkorean 16#3212
-/mieumcirclekorean 16#3264
-/mieumkorean 16#3141
-/mieumpansioskorean 16#3170
-/mieumparenkorean 16#3204
-/mieumpieupkorean 16#316e
-/mieumsioskorean 16#316f
-/mihiragana 16#307f
-/mikatakana 16#30df
-/mikatakanahalfwidth 16#ff90
-/minus 16#2212
-/minusbelowcmb 16#0320
-/minuscircle 16#2296
-/minusmod 16#02d7
-/minusplus 16#2213
-/minute 16#2032
-/miribaarusquare 16#334a
-/mirisquare 16#3349
-/mlonglegturned 16#0270
-/mlsquare 16#3396
-/mmcubedsquare 16#33a3
-/mmonospace 16#ff4d
-/mmsquaredsquare 16#339f
-/mohiragana 16#3082
-/mohmsquare 16#33c1
-/mokatakana 16#30e2
-/mokatakanahalfwidth 16#ff93
-/molsquare 16#33d6
-/momathai 16#0e21
-/moverssquare 16#33a7
-/moverssquaredsquare 16#33a8
-/mparen 16#24a8
-/mpasquare 16#33ab
-/mssquare 16#33b3
-/msuperior 16#f6ef
-/mturned 16#026f
-/mu 16#00b5
-/mu1 16#00b5
-/muasquare 16#3382
-/muchgreater 16#226b
-/muchless 16#226a
-/mufsquare 16#338c
-/mugreek 16#03bc
-/mugsquare 16#338d
-/muhiragana 16#3080
-/mukatakana 16#30e0
-/mukatakanahalfwidth 16#ff91
-/mulsquare 16#3395
-/multiply 16#00d7
-/mumsquare 16#339b
-/munahhebrew 16#05a3
-/munahlefthebrew 16#05a3
-/musicalnote 16#266a
-/musicalnotedbl 16#266b
-/musicflatsign 16#266d
-/musicsharpsign 16#266f
-/mussquare 16#33b2
-/muvsquare 16#33b6
-/muwsquare 16#33bc
-/mvmegasquare 16#33b9
-/mvsquare 16#33b7
-/mwmegasquare 16#33bf
-/mwsquare 16#33bd
-/n 16#006e
-/nabengali 16#09a8
-/nabla 16#2207
-/nacute 16#0144
-/nadeva 16#0928
-/nagujarati 16#0aa8
-/nagurmukhi 16#0a28
-/nahiragana 16#306a
-/nakatakana 16#30ca
-/nakatakanahalfwidth 16#ff85
-/napostrophe 16#0149
-/nasquare 16#3381
-/nbopomofo 16#310b
-/nbspace 16#00a0
-/ncaron 16#0148
-/ncedilla 16#0146
-/ncircle 16#24dd
-/ncircumflexbelow 16#1e4b
-/ncommaaccent 16#0146
-/ndotaccent 16#1e45
-/ndotbelow 16#1e47
-/nehiragana 16#306d
-/nekatakana 16#30cd
-/nekatakanahalfwidth 16#ff88
-/newsheqelsign 16#20aa
-/nfsquare 16#338b
-/ngabengali 16#0999
-/ngadeva 16#0919
-/ngagujarati 16#0a99
-/ngagurmukhi 16#0a19
-/ngonguthai 16#0e07
-/nhiragana 16#3093
-/nhookleft 16#0272
-/nhookretroflex 16#0273
-/nieunacirclekorean 16#326f
-/nieunaparenkorean 16#320f
-/nieuncieuckorean 16#3135
-/nieuncirclekorean 16#3261
-/nieunhieuhkorean 16#3136
-/nieunkorean 16#3134
-/nieunpansioskorean 16#3168
-/nieunparenkorean 16#3201
-/nieunsioskorean 16#3167
-/nieuntikeutkorean 16#3166
-/nihiragana 16#306b
-/nikatakana 16#30cb
-/nikatakanahalfwidth 16#ff86
-/nikhahitleftthai 16#f899
-/nikhahitthai 16#0e4d
-/nine 16#0039
-/ninearabic 16#0669
-/ninebengali 16#09ef
-/ninecircle 16#2468
-/ninecircleinversesansserif 16#2792
-/ninedeva 16#096f
-/ninegujarati 16#0aef
-/ninegurmukhi 16#0a6f
-/ninehackarabic 16#0669
-/ninehangzhou 16#3029
-/nineideographicparen 16#3228
-/nineinferior 16#2089
-/ninemonospace 16#ff19
-/nineoldstyle 16#f739
-/nineparen 16#247c
-/nineperiod 16#2490
-/ninepersian 16#06f9
-/nineroman 16#2178
-/ninesuperior 16#2079
-/nineteencircle 16#2472
-/nineteenparen 16#2486
-/nineteenperiod 16#249a
-/ninethai 16#0e59
-/nj 16#01cc
-/njecyrillic 16#045a
-/nkatakana 16#30f3
-/nkatakanahalfwidth 16#ff9d
-/nlegrightlong 16#019e
-/nlinebelow 16#1e49
-/nmonospace 16#ff4e
-/nmsquare 16#339a
-/nnabengali 16#09a3
-/nnadeva 16#0923
-/nnagujarati 16#0aa3
-/nnagurmukhi 16#0a23
-/nnnadeva 16#0929
-/nohiragana 16#306e
-/nokatakana 16#30ce
-/nokatakanahalfwidth 16#ff89
-/nonbreakingspace 16#00a0
-/nonenthai 16#0e13
-/nonuthai 16#0e19
-/noonarabic 16#0646
-/noonfinalarabic 16#fee6
-/noonghunnaarabic 16#06ba
-/noonghunnafinalarabic 16#fb9f
-/nooninitialarabic 16#fee7
-/noonjeeminitialarabic 16#fcd2
-/noonjeemisolatedarabic 16#fc4b
-/noonmedialarabic 16#fee8
-/noonmeeminitialarabic 16#fcd5
-/noonmeemisolatedarabic 16#fc4e
-/noonnoonfinalarabic 16#fc8d
-/notcontains 16#220c
-/notelement 16#2209
-/notelementof 16#2209
-/notequal 16#2260
-/notgreater 16#226f
-/notgreaternorequal 16#2271
-/notgreaternorless 16#2279
-/notidentical 16#2262
-/notless 16#226e
-/notlessnorequal 16#2270
-/notparallel 16#2226
-/notprecedes 16#2280
-/notsubset 16#2284
-/notsucceeds 16#2281
-/notsuperset 16#2285
-/nowarmenian 16#0576
-/nparen 16#24a9
-/nssquare 16#33b1
-/nsuperior 16#207f
-/ntilde 16#00f1
-/nu 16#03bd
-/nuhiragana 16#306c
-/nukatakana 16#30cc
-/nukatakanahalfwidth 16#ff87
-/nuktabengali 16#09bc
-/nuktadeva 16#093c
-/nuktagujarati 16#0abc
-/nuktagurmukhi 16#0a3c
-/numbersign 16#0023
-/numbersignmonospace 16#ff03
-/numbersignsmall 16#fe5f
-/numeralsigngreek 16#0374
-/numeralsignlowergreek 16#0375
-/numero 16#2116
-/nun 16#05e0
-/nundagesh 16#fb40
-/nundageshhebrew 16#fb40
-/nunhebrew 16#05e0
-/nvsquare 16#33b5
-/nwsquare 16#33bb
-/nyabengali 16#099e
-/nyadeva 16#091e
-/nyagujarati 16#0a9e
-/nyagurmukhi 16#0a1e
-/o 16#006f
-/oacute 16#00f3
-/oangthai 16#0e2d
-/obarred 16#0275
-/obarredcyrillic 16#04e9
-/obarreddieresiscyrillic 16#04eb
-/obengali 16#0993
-/obopomofo 16#311b
-/obreve 16#014f
-/ocandradeva 16#0911
-/ocandragujarati 16#0a91
-/ocandravowelsigndeva 16#0949
-/ocandravowelsigngujarati 16#0ac9
-/ocaron 16#01d2
-/ocircle 16#24de
-/ocircumflex 16#00f4
-/ocircumflexacute 16#1ed1
-/ocircumflexdotbelow 16#1ed9
-/ocircumflexgrave 16#1ed3
-/ocircumflexhookabove 16#1ed5
-/ocircumflextilde 16#1ed7
-/ocyrillic 16#043e
-/odblacute 16#0151
-/odblgrave 16#020d
-/odeva 16#0913
-/odieresis 16#00f6
-/odieresiscyrillic 16#04e7
-/odotbelow 16#1ecd
-/oe 16#0153
-/oekorean 16#315a
-/ogonek 16#02db
-/ogonekcmb 16#0328
-/ograve 16#00f2
-/ogujarati 16#0a93
-/oharmenian 16#0585
-/ohiragana 16#304a
-/ohookabove 16#1ecf
-/ohorn 16#01a1
-/ohornacute 16#1edb
-/ohorndotbelow 16#1ee3
-/ohorngrave 16#1edd
-/ohornhookabove 16#1edf
-/ohorntilde 16#1ee1
-/ohungarumlaut 16#0151
-/oi 16#01a3
-/oinvertedbreve 16#020f
-/okatakana 16#30aa
-/okatakanahalfwidth 16#ff75
-/okorean 16#3157
-/olehebrew 16#05ab
-/omacron 16#014d
-/omacronacute 16#1e53
-/omacrongrave 16#1e51
-/omdeva 16#0950
-/omega 16#03c9
-/omega1 16#03d6
-/omegacyrillic 16#0461
-/omegalatinclosed 16#0277
-/omegaroundcyrillic 16#047b
-/omegatitlocyrillic 16#047d
-/omegatonos 16#03ce
-/omgujarati 16#0ad0
-/omicron 16#03bf
-/omicrontonos 16#03cc
-/omonospace 16#ff4f
-/one 16#0031
-/onearabic 16#0661
-/onebengali 16#09e7
-/onecircle 16#2460
-/onecircleinversesansserif 16#278a
-/onedeva 16#0967
-/onedotenleader 16#2024
-/oneeighth 16#215b
-/onefitted 16#f6dc
-/onegujarati 16#0ae7
-/onegurmukhi 16#0a67
-/onehackarabic 16#0661
-/onehalf 16#00bd
-/onehangzhou 16#3021
-/oneideographicparen 16#3220
-/oneinferior 16#2081
-/onemonospace 16#ff11
-/onenumeratorbengali 16#09f4
-/oneoldstyle 16#f731
-/oneparen 16#2474
-/oneperiod 16#2488
-/onepersian 16#06f1
-/onequarter 16#00bc
-/oneroman 16#2170
-/onesuperior 16#00b9
-/onethai 16#0e51
-/onethird 16#2153
-/oogonek 16#01eb
-/oogonekmacron 16#01ed
-/oogurmukhi 16#0a13
-/oomatragurmukhi 16#0a4b
-/oopen 16#0254
-/oparen 16#24aa
-/openbullet 16#25e6
-/option 16#2325
-/ordfeminine 16#00aa
-/ordmasculine 16#00ba
-/orthogonal 16#221f
-/oshortdeva 16#0912
-/oshortvowelsigndeva 16#094a
-/oslash 16#00f8
-/oslashacute 16#01ff
-/osmallhiragana 16#3049
-/osmallkatakana 16#30a9
-/osmallkatakanahalfwidth 16#ff6b
-/ostrokeacute 16#01ff
-/osuperior 16#f6f0
-/otcyrillic 16#047f
-/otilde 16#00f5
-/otildeacute 16#1e4d
-/otildedieresis 16#1e4f
-/oubopomofo 16#3121
-/overline 16#203e
-/overlinecenterline 16#fe4a
-/overlinecmb 16#0305
-/overlinedashed 16#fe49
-/overlinedblwavy 16#fe4c
-/overlinewavy 16#fe4b
-/overscore 16#00af
-/ovowelsignbengali 16#09cb
-/ovowelsigndeva 16#094b
-/ovowelsigngujarati 16#0acb
-/p 16#0070
-/paampssquare 16#3380
-/paasentosquare 16#332b
-/pabengali 16#09aa
-/pacute 16#1e55
-/padeva 16#092a
-/pagedown 16#21df
-/pageup 16#21de
-/pagujarati 16#0aaa
-/pagurmukhi 16#0a2a
-/pahiragana 16#3071
-/paiyannoithai 16#0e2f
-/pakatakana 16#30d1
-/palatalizationcyrilliccmb 16#0484
-/palochkacyrillic 16#04c0
-/pansioskorean 16#317f
-/paragraph 16#00b6
-/parallel 16#2225
-/parenleft 16#0028
-/parenleftaltonearabic 16#fd3e
-/parenleftbt 16#f8ed
-/parenleftex 16#f8ec
-/parenleftinferior 16#208d
-/parenleftmonospace 16#ff08
-/parenleftsmall 16#fe59
-/parenleftsuperior 16#207d
-/parenlefttp 16#f8eb
-/parenleftvertical 16#fe35
-/parenright 16#0029
-/parenrightaltonearabic 16#fd3f
-/parenrightbt 16#f8f8
-/parenrightex 16#f8f7
-/parenrightinferior 16#208e
-/parenrightmonospace 16#ff09
-/parenrightsmall 16#fe5a
-/parenrightsuperior 16#207e
-/parenrighttp 16#f8f6
-/parenrightvertical 16#fe36
-/partialdiff 16#2202
-/paseqhebrew 16#05c0
-/pashtahebrew 16#0599
-/pasquare 16#33a9
-/patah 16#05b7
-/patah11 16#05b7
-/patah1d 16#05b7
-/patah2a 16#05b7
-/patahhebrew 16#05b7
-/patahnarrowhebrew 16#05b7
-/patahquarterhebrew 16#05b7
-/patahwidehebrew 16#05b7
-/pazerhebrew 16#05a1
-/pbopomofo 16#3106
-/pcircle 16#24df
-/pdotaccent 16#1e57
-/pe 16#05e4
-/pecyrillic 16#043f
-/pedagesh 16#fb44
-/pedageshhebrew 16#fb44
-/peezisquare 16#333b
-/pefinaldageshhebrew 16#fb43
-/peharabic 16#067e
-/peharmenian 16#057a
-/pehebrew 16#05e4
-/pehfinalarabic 16#fb57
-/pehinitialarabic 16#fb58
-/pehiragana 16#307a
-/pehmedialarabic 16#fb59
-/pekatakana 16#30da
-/pemiddlehookcyrillic 16#04a7
-/perafehebrew 16#fb4e
-/percent 16#0025
-/percentarabic 16#066a
-/percentmonospace 16#ff05
-/percentsmall 16#fe6a
-/period 16#002e
-/periodarmenian 16#0589
-/periodcentered 16#00b7
-/periodhalfwidth 16#ff61
-/periodinferior 16#f6e7
-/periodmonospace 16#ff0e
-/periodsmall 16#fe52
-/periodsuperior 16#f6e8
-/perispomenigreekcmb 16#0342
-/perpendicular 16#22a5
-/perthousand 16#2030
-/peseta 16#20a7
-/pfsquare 16#338a
-/phabengali 16#09ab
-/phadeva 16#092b
-/phagujarati 16#0aab
-/phagurmukhi 16#0a2b
-/phi 16#03c6
-/phi1 16#03d5
-/phieuphacirclekorean 16#327a
-/phieuphaparenkorean 16#321a
-/phieuphcirclekorean 16#326c
-/phieuphkorean 16#314d
-/phieuphparenkorean 16#320c
-/philatin 16#0278
-/phinthuthai 16#0e3a
-/phisymbolgreek 16#03d5
-/phook 16#01a5
-/phophanthai 16#0e1e
-/phophungthai 16#0e1c
-/phosamphaothai 16#0e20
-/pi 16#03c0
-/pieupacirclekorean 16#3273
-/pieupaparenkorean 16#3213
-/pieupcieuckorean 16#3176
-/pieupcirclekorean 16#3265
-/pieupkiyeokkorean 16#3172
-/pieupkorean 16#3142
-/pieupparenkorean 16#3205
-/pieupsioskiyeokkorean 16#3174
-/pieupsioskorean 16#3144
-/pieupsiostikeutkorean 16#3175
-/pieupthieuthkorean 16#3177
-/pieuptikeutkorean 16#3173
-/pihiragana 16#3074
-/pikatakana 16#30d4
-/pisymbolgreek 16#03d6
-/piwrarmenian 16#0583
-/plus 16#002b
-/plusbelowcmb 16#031f
-/pluscircle 16#2295
-/plusminus 16#00b1
-/plusmod 16#02d6
-/plusmonospace 16#ff0b
-/plussmall 16#fe62
-/plussuperior 16#207a
-/pmonospace 16#ff50
-/pmsquare 16#33d8
-/pohiragana 16#307d
-/pointingindexdownwhite 16#261f
-/pointingindexleftwhite 16#261c
-/pointingindexrightwhite 16#261e
-/pointingindexupwhite 16#261d
-/pokatakana 16#30dd
-/poplathai 16#0e1b
-/postalmark 16#3012
-/postalmarkface 16#3020
-/pparen 16#24ab
-/precedes 16#227a
-/prescription 16#211e
-/primemod 16#02b9
-/primereversed 16#2035
-/product 16#220f
-/projective 16#2305
-/prolongedkana 16#30fc
-/propellor 16#2318
-/propersubset 16#2282
-/propersuperset 16#2283
-/proportion 16#2237
-/proportional 16#221d
-/psi 16#03c8
-/psicyrillic 16#0471
-/psilipneumatacyrilliccmb 16#0486
-/pssquare 16#33b0
-/puhiragana 16#3077
-/pukatakana 16#30d7
-/pvsquare 16#33b4
-/pwsquare 16#33ba
-/q 16#0071
-/qadeva 16#0958
-/qadmahebrew 16#05a8
-/qafarabic 16#0642
-/qaffinalarabic 16#fed6
-/qafinitialarabic 16#fed7
-/qafmedialarabic 16#fed8
-/qamats 16#05b8
-/qamats10 16#05b8
-/qamats1a 16#05b8
-/qamats1c 16#05b8
-/qamats27 16#05b8
-/qamats29 16#05b8
-/qamats33 16#05b8
-/qamatsde 16#05b8
-/qamatshebrew 16#05b8
-/qamatsnarrowhebrew 16#05b8
-/qamatsqatanhebrew 16#05b8
-/qamatsqatannarrowhebrew 16#05b8
-/qamatsqatanquarterhebrew 16#05b8
-/qamatsqatanwidehebrew 16#05b8
-/qamatsquarterhebrew 16#05b8
-/qamatswidehebrew 16#05b8
-/qarneyparahebrew 16#059f
-/qbopomofo 16#3111
-/qcircle 16#24e0
-/qhook 16#02a0
-/qmonospace 16#ff51
-/qof 16#05e7
-/qofdagesh 16#fb47
-/qofdageshhebrew 16#fb47
-/qofhebrew 16#05e7
-/qparen 16#24ac
-/quarternote 16#2669
-/qubuts 16#05bb
-/qubuts18 16#05bb
-/qubuts25 16#05bb
-/qubuts31 16#05bb
-/qubutshebrew 16#05bb
-/qubutsnarrowhebrew 16#05bb
-/qubutsquarterhebrew 16#05bb
-/qubutswidehebrew 16#05bb
-/question 16#003f
-/questionarabic 16#061f
-/questionarmenian 16#055e
-/questiondown 16#00bf
-/questiondownsmall 16#f7bf
-/questiongreek 16#037e
-/questionmonospace 16#ff1f
-/questionsmall 16#f73f
-/quotedbl 16#0022
-/quotedblbase 16#201e
-/quotedblleft 16#201c
-/quotedblmonospace 16#ff02
-/quotedblprime 16#301e
-/quotedblprimereversed 16#301d
-/quotedblright 16#201d
-/quoteleft 16#2018
-/quoteleftreversed 16#201b
-/quotereversed 16#201b
-/quoteright 16#2019
-/quoterightn 16#0149
-/quotesinglbase 16#201a
-/quotesingle 16#0027
-/quotesinglemonospace 16#ff07
-/r 16#0072
-/raarmenian 16#057c
-/rabengali 16#09b0
-/racute 16#0155
-/radeva 16#0930
-/radical 16#221a
-/radicalex 16#f8e5
-/radoverssquare 16#33ae
-/radoverssquaredsquare 16#33af
-/radsquare 16#33ad
-/rafe 16#05bf
-/rafehebrew 16#05bf
-/ragujarati 16#0ab0
-/ragurmukhi 16#0a30
-/rahiragana 16#3089
-/rakatakana 16#30e9
-/rakatakanahalfwidth 16#ff97
-/ralowerdiagonalbengali 16#09f1
-/ramiddlediagonalbengali 16#09f0
-/ramshorn 16#0264
-/ratio 16#2236
-/rbopomofo 16#3116
-/rcaron 16#0159
-/rcedilla 16#0157
-/rcircle 16#24e1
-/rcommaaccent 16#0157
-/rdblgrave 16#0211
-/rdotaccent 16#1e59
-/rdotbelow 16#1e5b
-/rdotbelowmacron 16#1e5d
-/referencemark 16#203b
-/reflexsubset 16#2286
-/reflexsuperset 16#2287
-/registered 16#00ae
-/registersans 16#f8e8
-/registerserif 16#f6da
-/reharabic 16#0631
-/reharmenian 16#0580
-/rehfinalarabic 16#feae
-/rehiragana 16#308c
-/rekatakana 16#30ec
-/rekatakanahalfwidth 16#ff9a
-/resh 16#05e8
-/reshdageshhebrew 16#fb48
-/reshhebrew 16#05e8
-/reversedtilde 16#223d
-/reviahebrew 16#0597
-/reviamugrashhebrew 16#0597
-/revlogicalnot 16#2310
-/rfishhook 16#027e
-/rfishhookreversed 16#027f
-/rhabengali 16#09dd
-/rhadeva 16#095d
-/rho 16#03c1
-/rhook 16#027d
-/rhookturned 16#027b
-/rhookturnedsuperior 16#02b5
-/rhosymbolgreek 16#03f1
-/rhotichookmod 16#02de
-/rieulacirclekorean 16#3271
-/rieulaparenkorean 16#3211
-/rieulcirclekorean 16#3263
-/rieulhieuhkorean 16#3140
-/rieulkiyeokkorean 16#313a
-/rieulkiyeoksioskorean 16#3169
-/rieulkorean 16#3139
-/rieulmieumkorean 16#313b
-/rieulpansioskorean 16#316c
-/rieulparenkorean 16#3203
-/rieulphieuphkorean 16#313f
-/rieulpieupkorean 16#313c
-/rieulpieupsioskorean 16#316b
-/rieulsioskorean 16#313d
-/rieulthieuthkorean 16#313e
-/rieultikeutkorean 16#316a
-/rieulyeorinhieuhkorean 16#316d
-/rightangle 16#221f
-/righttackbelowcmb 16#0319
-/righttriangle 16#22bf
-/rihiragana 16#308a
-/rikatakana 16#30ea
-/rikatakanahalfwidth 16#ff98
-/ring 16#02da
-/ringbelowcmb 16#0325
-/ringcmb 16#030a
-/ringhalfleft 16#02bf
-/ringhalfleftarmenian 16#0559
-/ringhalfleftbelowcmb 16#031c
-/ringhalfleftcentered 16#02d3
-/ringhalfright 16#02be
-/ringhalfrightbelowcmb 16#0339
-/ringhalfrightcentered 16#02d2
-/rinvertedbreve 16#0213
-/rittorusquare 16#3351
-/rlinebelow 16#1e5f
-/rlongleg 16#027c
-/rlonglegturned 16#027a
-/rmonospace 16#ff52
-/rohiragana 16#308d
-/rokatakana 16#30ed
-/rokatakanahalfwidth 16#ff9b
-/roruathai 16#0e23
-/rparen 16#24ad
-/rrabengali 16#09dc
-/rradeva 16#0931
-/rragurmukhi 16#0a5c
-/rreharabic 16#0691
-/rrehfinalarabic 16#fb8d
-/rrvocalicbengali 16#09e0
-/rrvocalicdeva 16#0960
-/rrvocalicgujarati 16#0ae0
-/rrvocalicvowelsignbengali 16#09c4
-/rrvocalicvowelsigndeva 16#0944
-/rrvocalicvowelsigngujarati 16#0ac4
-/rsuperior 16#f6f1
-/rtblock 16#2590
-/rturned 16#0279
-/rturnedsuperior 16#02b4
-/ruhiragana 16#308b
-/rukatakana 16#30eb
-/rukatakanahalfwidth 16#ff99
-/rupeemarkbengali 16#09f2
-/rupeesignbengali 16#09f3
-/rupiah 16#f6dd
-/ruthai 16#0e24
-/rvocalicbengali 16#098b
-/rvocalicdeva 16#090b
-/rvocalicgujarati 16#0a8b
-/rvocalicvowelsignbengali 16#09c3
-/rvocalicvowelsigndeva 16#0943
-/rvocalicvowelsigngujarati 16#0ac3
-/s 16#0073
-/sabengali 16#09b8
-/sacute 16#015b
-/sacutedotaccent 16#1e65
-/sadarabic 16#0635
-/sadeva 16#0938
-/sadfinalarabic 16#feba
-/sadinitialarabic 16#febb
-/sadmedialarabic 16#febc
-/sagujarati 16#0ab8
-/sagurmukhi 16#0a38
-/sahiragana 16#3055
-/sakatakana 16#30b5
-/sakatakanahalfwidth 16#ff7b
-/sallallahoualayhewasallamarabic 16#fdfa
-/samekh 16#05e1
-/samekhdagesh 16#fb41
-/samekhdageshhebrew 16#fb41
-/samekhhebrew 16#05e1
-/saraaathai 16#0e32
-/saraaethai 16#0e41
-/saraaimaimalaithai 16#0e44
-/saraaimaimuanthai 16#0e43
-/saraamthai 16#0e33
-/saraathai 16#0e30
-/saraethai 16#0e40
-/saraiileftthai 16#f886
-/saraiithai 16#0e35
-/saraileftthai 16#f885
-/saraithai 16#0e34
-/saraothai 16#0e42
-/saraueeleftthai 16#f888
-/saraueethai 16#0e37
-/saraueleftthai 16#f887
-/sarauethai 16#0e36
-/sarauthai 16#0e38
-/sarauuthai 16#0e39
-/sbopomofo 16#3119
-/scaron 16#0161
-/scarondotaccent 16#1e67
-/scedilla 16#015f
-/schwa 16#0259
-/schwacyrillic 16#04d9
-/schwadieresiscyrillic 16#04db
-/schwahook 16#025a
-/scircle 16#24e2
-/scircumflex 16#015d
-/scommaaccent 16#0219
-/sdotaccent 16#1e61
-/sdotbelow 16#1e63
-/sdotbelowdotaccent 16#1e69
-/seagullbelowcmb 16#033c
-/second 16#2033
-/secondtonechinese 16#02ca
-/section 16#00a7
-/seenarabic 16#0633
-/seenfinalarabic 16#feb2
-/seeninitialarabic 16#feb3
-/seenmedialarabic 16#feb4
-/segol 16#05b6
-/segol13 16#05b6
-/segol1f 16#05b6
-/segol2c 16#05b6
-/segolhebrew 16#05b6
-/segolnarrowhebrew 16#05b6
-/segolquarterhebrew 16#05b6
-/segoltahebrew 16#0592
-/segolwidehebrew 16#05b6
-/seharmenian 16#057d
-/sehiragana 16#305b
-/sekatakana 16#30bb
-/sekatakanahalfwidth 16#ff7e
-/semicolon 16#003b
-/semicolonarabic 16#061b
-/semicolonmonospace 16#ff1b
-/semicolonsmall 16#fe54
-/semivoicedmarkkana 16#309c
-/semivoicedmarkkanahalfwidth 16#ff9f
-/sentisquare 16#3322
-/sentosquare 16#3323
-/seven 16#0037
-/sevenarabic 16#0667
-/sevenbengali 16#09ed
-/sevencircle 16#2466
-/sevencircleinversesansserif 16#2790
-/sevendeva 16#096d
-/seveneighths 16#215e
-/sevengujarati 16#0aed
-/sevengurmukhi 16#0a6d
-/sevenhackarabic 16#0667
-/sevenhangzhou 16#3027
-/sevenideographicparen 16#3226
-/seveninferior 16#2087
-/sevenmonospace 16#ff17
-/sevenoldstyle 16#f737
-/sevenparen 16#247a
-/sevenperiod 16#248e
-/sevenpersian 16#06f7
-/sevenroman 16#2176
-/sevensuperior 16#2077
-/seventeencircle 16#2470
-/seventeenparen 16#2484
-/seventeenperiod 16#2498
-/seventhai 16#0e57
-/sfthyphen 16#00ad
-/shaarmenian 16#0577
-/shabengali 16#09b6
-/shacyrillic 16#0448
-/shaddaarabic 16#0651
-/shaddadammaarabic 16#fc61
-/shaddadammatanarabic 16#fc5e
-/shaddafathaarabic 16#fc60
-/shaddakasraarabic 16#fc62
-/shaddakasratanarabic 16#fc5f
-/shade 16#2592
-/shadedark 16#2593
-/shadelight 16#2591
-/shademedium 16#2592
-/shadeva 16#0936
-/shagujarati 16#0ab6
-/shagurmukhi 16#0a36
-/shalshelethebrew 16#0593
-/shbopomofo 16#3115
-/shchacyrillic 16#0449
-/sheenarabic 16#0634
-/sheenfinalarabic 16#feb6
-/sheeninitialarabic 16#feb7
-/sheenmedialarabic 16#feb8
-/sheicoptic 16#03e3
-/sheqel 16#20aa
-/sheqelhebrew 16#20aa
-/sheva 16#05b0
-/sheva115 16#05b0
-/sheva15 16#05b0
-/sheva22 16#05b0
-/sheva2e 16#05b0
-/shevahebrew 16#05b0
-/shevanarrowhebrew 16#05b0
-/shevaquarterhebrew 16#05b0
-/shevawidehebrew 16#05b0
-/shhacyrillic 16#04bb
-/shimacoptic 16#03ed
-/shin 16#05e9
-/shindagesh 16#fb49
-/shindageshhebrew 16#fb49
-/shindageshshindot 16#fb2c
-/shindageshshindothebrew 16#fb2c
-/shindageshsindot 16#fb2d
-/shindageshsindothebrew 16#fb2d
-/shindothebrew 16#05c1
-/shinhebrew 16#05e9
-/shinshindot 16#fb2a
-/shinshindothebrew 16#fb2a
-/shinsindot 16#fb2b
-/shinsindothebrew 16#fb2b
-/shook 16#0282
-/sigma 16#03c3
-/sigma1 16#03c2
-/sigmafinal 16#03c2
-/sigmalunatesymbolgreek 16#03f2
-/sihiragana 16#3057
-/sikatakana 16#30b7
-/sikatakanahalfwidth 16#ff7c
-/siluqhebrew 16#05bd
-/siluqlefthebrew 16#05bd
-/similar 16#223c
-/sindothebrew 16#05c2
-/siosacirclekorean 16#3274
-/siosaparenkorean 16#3214
-/sioscieuckorean 16#317e
-/sioscirclekorean 16#3266
-/sioskiyeokkorean 16#317a
-/sioskorean 16#3145
-/siosnieunkorean 16#317b
-/siosparenkorean 16#3206
-/siospieupkorean 16#317d
-/siostikeutkorean 16#317c
-/six 16#0036
-/sixarabic 16#0666
-/sixbengali 16#09ec
-/sixcircle 16#2465
-/sixcircleinversesansserif 16#278f
-/sixdeva 16#096c
-/sixgujarati 16#0aec
-/sixgurmukhi 16#0a6c
-/sixhackarabic 16#0666
-/sixhangzhou 16#3026
-/sixideographicparen 16#3225
-/sixinferior 16#2086
-/sixmonospace 16#ff16
-/sixoldstyle 16#f736
-/sixparen 16#2479
-/sixperiod 16#248d
-/sixpersian 16#06f6
-/sixroman 16#2175
-/sixsuperior 16#2076
-/sixteencircle 16#246f
-/sixteencurrencydenominatorbengali 16#09f9
-/sixteenparen 16#2483
-/sixteenperiod 16#2497
-/sixthai 16#0e56
-/slash 16#002f
-/slashmonospace 16#ff0f
-/slong 16#017f
-/slongdotaccent 16#1e9b
-/smileface 16#263a
-/smonospace 16#ff53
-/sofpasuqhebrew 16#05c3
-/softhyphen 16#00ad
-/softsigncyrillic 16#044c
-/sohiragana 16#305d
-/sokatakana 16#30bd
-/sokatakanahalfwidth 16#ff7f
-/soliduslongoverlaycmb 16#0338
-/solidusshortoverlaycmb 16#0337
-/sorusithai 16#0e29
-/sosalathai 16#0e28
-/sosothai 16#0e0b
-/sosuathai 16#0e2a
-/space 16#0020
-/spacehackarabic 16#0020
-/spade 16#2660
-/spadesuitblack 16#2660
-/spadesuitwhite 16#2664
-/sparen 16#24ae
-/squarebelowcmb 16#033b
-/squarecc 16#33c4
-/squarecm 16#339d
-/squarediagonalcrosshatchfill 16#25a9
-/squarehorizontalfill 16#25a4
-/squarekg 16#338f
-/squarekm 16#339e
-/squarekmcapital 16#33ce
-/squareln 16#33d1
-/squarelog 16#33d2
-/squaremg 16#338e
-/squaremil 16#33d5
-/squaremm 16#339c
-/squaremsquared 16#33a1
-/squareorthogonalcrosshatchfill 16#25a6
-/squareupperlefttolowerrightfill 16#25a7
-/squareupperrighttolowerleftfill 16#25a8
-/squareverticalfill 16#25a5
-/squarewhitewithsmallblack 16#25a3
-/srsquare 16#33db
-/ssabengali 16#09b7
-/ssadeva 16#0937
-/ssagujarati 16#0ab7
-/ssangcieuckorean 16#3149
-/ssanghieuhkorean 16#3185
-/ssangieungkorean 16#3180
-/ssangkiyeokkorean 16#3132
-/ssangnieunkorean 16#3165
-/ssangpieupkorean 16#3143
-/ssangsioskorean 16#3146
-/ssangtikeutkorean 16#3138
-/ssuperior 16#f6f2
-/sterling 16#00a3
-/sterlingmonospace 16#ffe1
-/strokelongoverlaycmb 16#0336
-/strokeshortoverlaycmb 16#0335
-/subset 16#2282
-/subsetnotequal 16#228a
-/subsetorequal 16#2286
-/succeeds 16#227b
-/suchthat 16#220b
-/suhiragana 16#3059
-/sukatakana 16#30b9
-/sukatakanahalfwidth 16#ff7d
-/sukunarabic 16#0652
-/summation 16#2211
-/sun 16#263c
-/superset 16#2283
-/supersetnotequal 16#228b
-/supersetorequal 16#2287
-/svsquare 16#33dc
-/syouwaerasquare 16#337c
-/t 16#0074
-/tabengali 16#09a4
-/tackdown 16#22a4
-/tackleft 16#22a3
-/tadeva 16#0924
-/tagujarati 16#0aa4
-/tagurmukhi 16#0a24
-/taharabic 16#0637
-/tahfinalarabic 16#fec2
-/tahinitialarabic 16#fec3
-/tahiragana 16#305f
-/tahmedialarabic 16#fec4
-/taisyouerasquare 16#337d
-/takatakana 16#30bf
-/takatakanahalfwidth 16#ff80
-/tatweelarabic 16#0640
-/tau 16#03c4
-/tav 16#05ea
-/tavdages 16#fb4a
-/tavdagesh 16#fb4a
-/tavdageshhebrew 16#fb4a
-/tavhebrew 16#05ea
-/tbar 16#0167
-/tbopomofo 16#310a
-/tcaron 16#0165
-/tccurl 16#02a8
-/tcedilla 16#0163
-/tcheharabic 16#0686
-/tchehfinalarabic 16#fb7b
-/tchehinitialarabic 16#fb7c
-/tchehmedialarabic 16#fb7d
-/tcircle 16#24e3
-/tcircumflexbelow 16#1e71
-/tcommaaccent 16#0163
-/tdieresis 16#1e97
-/tdotaccent 16#1e6b
-/tdotbelow 16#1e6d
-/tecyrillic 16#0442
-/tedescendercyrillic 16#04ad
-/teharabic 16#062a
-/tehfinalarabic 16#fe96
-/tehhahinitialarabic 16#fca2
-/tehhahisolatedarabic 16#fc0c
-/tehinitialarabic 16#fe97
-/tehiragana 16#3066
-/tehjeeminitialarabic 16#fca1
-/tehjeemisolatedarabic 16#fc0b
-/tehmarbutaarabic 16#0629
-/tehmarbutafinalarabic 16#fe94
-/tehmedialarabic 16#fe98
-/tehmeeminitialarabic 16#fca4
-/tehmeemisolatedarabic 16#fc0e
-/tehnoonfinalarabic 16#fc73
-/tekatakana 16#30c6
-/tekatakanahalfwidth 16#ff83
-/telephone 16#2121
-/telephoneblack 16#260e
-/telishagedolahebrew 16#05a0
-/telishaqetanahebrew 16#05a9
-/tencircle 16#2469
-/tenideographicparen 16#3229
-/tenparen 16#247d
-/tenperiod 16#2491
-/tenroman 16#2179
-/tesh 16#02a7
-/tet 16#05d8
-/tetdagesh 16#fb38
-/tetdageshhebrew 16#fb38
-/tethebrew 16#05d8
-/tetsecyrillic 16#04b5
-/tevirhebrew 16#059b
-/tevirlefthebrew 16#059b
-/thabengali 16#09a5
-/thadeva 16#0925
-/thagujarati 16#0aa5
-/thagurmukhi 16#0a25
-/thalarabic 16#0630
-/thalfinalarabic 16#feac
-/thanthakhatlowleftthai 16#f898
-/thanthakhatlowrightthai 16#f897
-/thanthakhatthai 16#0e4c
-/thanthakhatupperleftthai 16#f896
-/theharabic 16#062b
-/thehfinalarabic 16#fe9a
-/thehinitialarabic 16#fe9b
-/thehmedialarabic 16#fe9c
-/thereexists 16#2203
-/therefore 16#2234
-/theta 16#03b8
-/theta1 16#03d1
-/thetasymbolgreek 16#03d1
-/thieuthacirclekorean 16#3279
-/thieuthaparenkorean 16#3219
-/thieuthcirclekorean 16#326b
-/thieuthkorean 16#314c
-/thieuthparenkorean 16#320b
-/thirteencircle 16#246c
-/thirteenparen 16#2480
-/thirteenperiod 16#2494
-/thonangmonthothai 16#0e11
-/thook 16#01ad
-/thophuthaothai 16#0e12
-/thorn 16#00fe
-/thothahanthai 16#0e17
-/thothanthai 16#0e10
-/thothongthai 16#0e18
-/thothungthai 16#0e16
-/thousandcyrillic 16#0482
-/thousandsseparatorarabic 16#066c
-/thousandsseparatorpersian 16#066c
-/three 16#0033
-/threearabic 16#0663
-/threebengali 16#09e9
-/threecircle 16#2462
-/threecircleinversesansserif 16#278c
-/threedeva 16#0969
-/threeeighths 16#215c
-/threegujarati 16#0ae9
-/threegurmukhi 16#0a69
-/threehackarabic 16#0663
-/threehangzhou 16#3023
-/threeideographicparen 16#3222
-/threeinferior 16#2083
-/threemonospace 16#ff13
-/threenumeratorbengali 16#09f6
-/threeoldstyle 16#f733
-/threeparen 16#2476
-/threeperiod 16#248a
-/threepersian 16#06f3
-/threequarters 16#00be
-/threequartersemdash 16#f6de
-/threeroman 16#2172
-/threesuperior 16#00b3
-/threethai 16#0e53
-/thzsquare 16#3394
-/tihiragana 16#3061
-/tikatakana 16#30c1
-/tikatakanahalfwidth 16#ff81
-/tikeutacirclekorean 16#3270
-/tikeutaparenkorean 16#3210
-/tikeutcirclekorean 16#3262
-/tikeutkorean 16#3137
-/tikeutparenkorean 16#3202
-/tilde 16#02dc
-/tildebelowcmb 16#0330
-/tildecmb 16#0303
-/tildecomb 16#0303
-/tildedoublecmb 16#0360
-/tildeoperator 16#223c
-/tildeoverlaycmb 16#0334
-/tildeverticalcmb 16#033e
-/timescircle 16#2297
-/tipehahebrew 16#0596
-/tipehalefthebrew 16#0596
-/tippigurmukhi 16#0a70
-/titlocyrilliccmb 16#0483
-/tiwnarmenian 16#057f
-/tlinebelow 16#1e6f
-/tmonospace 16#ff54
-/toarmenian 16#0569
-/tohiragana 16#3068
-/tokatakana 16#30c8
-/tokatakanahalfwidth 16#ff84
-/tonebarextrahighmod 16#02e5
-/tonebarextralowmod 16#02e9
-/tonebarhighmod 16#02e6
-/tonebarlowmod 16#02e8
-/tonebarmidmod 16#02e7
-/tonefive 16#01bd
-/tonesix 16#0185
-/tonetwo 16#01a8
-/tonos 16#0384
-/tonsquare 16#3327
-/topatakthai 16#0e0f
-/tortoiseshellbracketleft 16#3014
-/tortoiseshellbracketleftsmall 16#fe5d
-/tortoiseshellbracketleftvertical 16#fe39
-/tortoiseshellbracketright 16#3015
-/tortoiseshellbracketrightsmall 16#fe5e
-/tortoiseshellbracketrightvertical 16#fe3a
-/totaothai 16#0e15
-/tpalatalhook 16#01ab
-/tparen 16#24af
-/trademark 16#2122
-/trademarksans 16#f8ea
-/trademarkserif 16#f6db
-/tretroflexhook 16#0288
-/triagdn 16#25bc
-/triaglf 16#25c4
-/triagrt 16#25ba
-/triagup 16#25b2
-/ts 16#02a6
-/tsadi 16#05e6
-/tsadidagesh 16#fb46
-/tsadidageshhebrew 16#fb46
-/tsadihebrew 16#05e6
-/tsecyrillic 16#0446
-/tsere 16#05b5
-/tsere12 16#05b5
-/tsere1e 16#05b5
-/tsere2b 16#05b5
-/tserehebrew 16#05b5
-/tserenarrowhebrew 16#05b5
-/tserequarterhebrew 16#05b5
-/tserewidehebrew 16#05b5
-/tshecyrillic 16#045b
-/tsuperior 16#f6f3
-/ttabengali 16#099f
-/ttadeva 16#091f
-/ttagujarati 16#0a9f
-/ttagurmukhi 16#0a1f
-/tteharabic 16#0679
-/ttehfinalarabic 16#fb67
-/ttehinitialarabic 16#fb68
-/ttehmedialarabic 16#fb69
-/tthabengali 16#09a0
-/tthadeva 16#0920
-/tthagujarati 16#0aa0
-/tthagurmukhi 16#0a20
-/tturned 16#0287
-/tuhiragana 16#3064
-/tukatakana 16#30c4
-/tukatakanahalfwidth 16#ff82
-/tusmallhiragana 16#3063
-/tusmallkatakana 16#30c3
-/tusmallkatakanahalfwidth 16#ff6f
-/twelvecircle 16#246b
-/twelveparen 16#247f
-/twelveperiod 16#2493
-/twelveroman 16#217b
-/twentycircle 16#2473
-/twentyhangzhou 16#5344
-/twentyparen 16#2487
-/twentyperiod 16#249b
-/two 16#0032
-/twoarabic 16#0662
-/twobengali 16#09e8
-/twocircle 16#2461
-/twocircleinversesansserif 16#278b
-/twodeva 16#0968
-/twodotenleader 16#2025
-/twodotleader 16#2025
-/twodotleadervertical 16#fe30
-/twogujarati 16#0ae8
-/twogurmukhi 16#0a68
-/twohackarabic 16#0662
-/twohangzhou 16#3022
-/twoideographicparen 16#3221
-/twoinferior 16#2082
-/twomonospace 16#ff12
-/twonumeratorbengali 16#09f5
-/twooldstyle 16#f732
-/twoparen 16#2475
-/twoperiod 16#2489
-/twopersian 16#06f2
-/tworoman 16#2171
-/twostroke 16#01bb
-/twosuperior 16#00b2
-/twothai 16#0e52
-/twothirds 16#2154
-/u 16#0075
-/uacute 16#00fa
-/ubar 16#0289
-/ubengali 16#0989
-/ubopomofo 16#3128
-/ubreve 16#016d
-/ucaron 16#01d4
-/ucircle 16#24e4
-/ucircumflex 16#00fb
-/ucircumflexbelow 16#1e77
-/ucyrillic 16#0443
-/udattadeva 16#0951
-/udblacute 16#0171
-/udblgrave 16#0215
-/udeva 16#0909
-/udieresis 16#00fc
-/udieresisacute 16#01d8
-/udieresisbelow 16#1e73
-/udieresiscaron 16#01da
-/udieresiscyrillic 16#04f1
-/udieresisgrave 16#01dc
-/udieresismacron 16#01d6
-/udotbelow 16#1ee5
-/ugrave 16#00f9
-/ugujarati 16#0a89
-/ugurmukhi 16#0a09
-/uhiragana 16#3046
-/uhookabove 16#1ee7
-/uhorn 16#01b0
-/uhornacute 16#1ee9
-/uhorndotbelow 16#1ef1
-/uhorngrave 16#1eeb
-/uhornhookabove 16#1eed
-/uhorntilde 16#1eef
-/uhungarumlaut 16#0171
-/uhungarumlautcyrillic 16#04f3
-/uinvertedbreve 16#0217
-/ukatakana 16#30a6
-/ukatakanahalfwidth 16#ff73
-/ukcyrillic 16#0479
-/ukorean 16#315c
-/umacron 16#016b
-/umacroncyrillic 16#04ef
-/umacrondieresis 16#1e7b
-/umatragurmukhi 16#0a41
-/umonospace 16#ff55
-/underscore 16#005f
-/underscoredbl 16#2017
-/underscoremonospace 16#ff3f
-/underscorevertical 16#fe33
-/underscorewavy 16#fe4f
-/union 16#222a
-/universal 16#2200
-/uogonek 16#0173
-/uparen 16#24b0
-/upblock 16#2580
-/upperdothebrew 16#05c4
-/upsilon 16#03c5
-/upsilondieresis 16#03cb
-/upsilondieresistonos 16#03b0
-/upsilonlatin 16#028a
-/upsilontonos 16#03cd
-/uptackbelowcmb 16#031d
-/uptackmod 16#02d4
-/uragurmukhi 16#0a73
-/uring 16#016f
-/ushortcyrillic 16#045e
-/usmallhiragana 16#3045
-/usmallkatakana 16#30a5
-/usmallkatakanahalfwidth 16#ff69
-/ustraightcyrillic 16#04af
-/ustraightstrokecyrillic 16#04b1
-/utilde 16#0169
-/utildeacute 16#1e79
-/utildebelow 16#1e75
-/uubengali 16#098a
-/uudeva 16#090a
-/uugujarati 16#0a8a
-/uugurmukhi 16#0a0a
-/uumatragurmukhi 16#0a42
-/uuvowelsignbengali 16#09c2
-/uuvowelsigndeva 16#0942
-/uuvowelsigngujarati 16#0ac2
-/uvowelsignbengali 16#09c1
-/uvowelsigndeva 16#0941
-/uvowelsigngujarati 16#0ac1
-/v 16#0076
-/vadeva 16#0935
-/vagujarati 16#0ab5
-/vagurmukhi 16#0a35
-/vakatakana 16#30f7
-/vav 16#05d5
-/vavdagesh 16#fb35
-/vavdagesh65 16#fb35
-/vavdageshhebrew 16#fb35
-/vavhebrew 16#05d5
-/vavholam 16#fb4b
-/vavholamhebrew 16#fb4b
-/vavvavhebrew 16#05f0
-/vavyodhebrew 16#05f1
-/vcircle 16#24e5
-/vdotbelow 16#1e7f
-/vecyrillic 16#0432
-/veharabic 16#06a4
-/vehfinalarabic 16#fb6b
-/vehinitialarabic 16#fb6c
-/vehmedialarabic 16#fb6d
-/vekatakana 16#30f9
-/venus 16#2640
-/verticalbar 16#007c
-/verticallineabovecmb 16#030d
-/verticallinebelowcmb 16#0329
-/verticallinelowmod 16#02cc
-/verticallinemod 16#02c8
-/vewarmenian 16#057e
-/vhook 16#028b
-/vikatakana 16#30f8
-/viramabengali 16#09cd
-/viramadeva 16#094d
-/viramagujarati 16#0acd
-/visargabengali 16#0983
-/visargadeva 16#0903
-/visargagujarati 16#0a83
-/vmonospace 16#ff56
-/voarmenian 16#0578
-/voicediterationhiragana 16#309e
-/voicediterationkatakana 16#30fe
-/voicedmarkkana 16#309b
-/voicedmarkkanahalfwidth 16#ff9e
-/vokatakana 16#30fa
-/vparen 16#24b1
-/vtilde 16#1e7d
-/vturned 16#028c
-/vuhiragana 16#3094
-/vukatakana 16#30f4
-/w 16#0077
-/wacute 16#1e83
-/waekorean 16#3159
-/wahiragana 16#308f
-/wakatakana 16#30ef
-/wakatakanahalfwidth 16#ff9c
-/wakorean 16#3158
-/wasmallhiragana 16#308e
-/wasmallkatakana 16#30ee
-/wattosquare 16#3357
-/wavedash 16#301c
-/wavyunderscorevertical 16#fe34
-/wawarabic 16#0648
-/wawfinalarabic 16#feee
-/wawhamzaabovearabic 16#0624
-/wawhamzaabovefinalarabic 16#fe86
-/wbsquare 16#33dd
-/wcircle 16#24e6
-/wcircumflex 16#0175
-/wdieresis 16#1e85
-/wdotaccent 16#1e87
-/wdotbelow 16#1e89
-/wehiragana 16#3091
-/weierstrass 16#2118
-/wekatakana 16#30f1
-/wekorean 16#315e
-/weokorean 16#315d
-/wgrave 16#1e81
-/whitebullet 16#25e6
-/whitecircle 16#25cb
-/whitecircleinverse 16#25d9
-/whitecornerbracketleft 16#300e
-/whitecornerbracketleftvertical 16#fe43
-/whitecornerbracketright 16#300f
-/whitecornerbracketrightvertical 16#fe44
-/whitediamond 16#25c7
-/whitediamondcontainingblacksmalldiamond 16#25c8
-/whitedownpointingsmalltriangle 16#25bf
-/whitedownpointingtriangle 16#25bd
-/whiteleftpointingsmalltriangle 16#25c3
-/whiteleftpointingtriangle 16#25c1
-/whitelenticularbracketleft 16#3016
-/whitelenticularbracketright 16#3017
-/whiterightpointingsmalltriangle 16#25b9
-/whiterightpointingtriangle 16#25b7
-/whitesmallsquare 16#25ab
-/whitesmilingface 16#263a
-/whitesquare 16#25a1
-/whitestar 16#2606
-/whitetelephone 16#260f
-/whitetortoiseshellbracketleft 16#3018
-/whitetortoiseshellbracketright 16#3019
-/whiteuppointingsmalltriangle 16#25b5
-/whiteuppointingtriangle 16#25b3
-/wihiragana 16#3090
-/wikatakana 16#30f0
-/wikorean 16#315f
-/wmonospace 16#ff57
-/wohiragana 16#3092
-/wokatakana 16#30f2
-/wokatakanahalfwidth 16#ff66
-/won 16#20a9
-/wonmonospace 16#ffe6
-/wowaenthai 16#0e27
-/wparen 16#24b2
-/wring 16#1e98
-/wsuperior 16#02b7
-/wturned 16#028d
-/wynn 16#01bf
-/x 16#0078
-/xabovecmb 16#033d
-/xbopomofo 16#3112
-/xcircle 16#24e7
-/xdieresis 16#1e8d
-/xdotaccent 16#1e8b
-/xeharmenian 16#056d
-/xi 16#03be
-/xmonospace 16#ff58
-/xparen 16#24b3
-/xsuperior 16#02e3
-/y 16#0079
-/yaadosquare 16#334e
-/yabengali 16#09af
-/yacute 16#00fd
-/yadeva 16#092f
-/yaekorean 16#3152
-/yagujarati 16#0aaf
-/yagurmukhi 16#0a2f
-/yahiragana 16#3084
-/yakatakana 16#30e4
-/yakatakanahalfwidth 16#ff94
-/yakorean 16#3151
-/yamakkanthai 16#0e4e
-/yasmallhiragana 16#3083
-/yasmallkatakana 16#30e3
-/yasmallkatakanahalfwidth 16#ff6c
-/yatcyrillic 16#0463
-/ycircle 16#24e8
-/ycircumflex 16#0177
-/ydieresis 16#00ff
-/ydotaccent 16#1e8f
-/ydotbelow 16#1ef5
-/yeharabic 16#064a
-/yehbarreearabic 16#06d2
-/yehbarreefinalarabic 16#fbaf
-/yehfinalarabic 16#fef2
-/yehhamzaabovearabic 16#0626
-/yehhamzaabovefinalarabic 16#fe8a
-/yehhamzaaboveinitialarabic 16#fe8b
-/yehhamzaabovemedialarabic 16#fe8c
-/yehinitialarabic 16#fef3
-/yehmedialarabic 16#fef4
-/yehmeeminitialarabic 16#fcdd
-/yehmeemisolatedarabic 16#fc58
-/yehnoonfinalarabic 16#fc94
-/yehthreedotsbelowarabic 16#06d1
-/yekorean 16#3156
-/yen 16#00a5
-/yenmonospace 16#ffe5
-/yeokorean 16#3155
-/yeorinhieuhkorean 16#3186
-/yerahbenyomohebrew 16#05aa
-/yerahbenyomolefthebrew 16#05aa
-/yericyrillic 16#044b
-/yerudieresiscyrillic 16#04f9
-/yesieungkorean 16#3181
-/yesieungpansioskorean 16#3183
-/yesieungsioskorean 16#3182
-/yetivhebrew 16#059a
-/ygrave 16#1ef3
-/yhook 16#01b4
-/yhookabove 16#1ef7
-/yiarmenian 16#0575
-/yicyrillic 16#0457
-/yikorean 16#3162
-/yinyang 16#262f
-/yiwnarmenian 16#0582
-/ymonospace 16#ff59
-/yod 16#05d9
-/yoddagesh 16#fb39
-/yoddageshhebrew 16#fb39
-/yodhebrew 16#05d9
-/yodyodhebrew 16#05f2
-/yodyodpatahhebrew 16#fb1f
-/yohiragana 16#3088
-/yoikorean 16#3189
-/yokatakana 16#30e8
-/yokatakanahalfwidth 16#ff96
-/yokorean 16#315b
-/yosmallhiragana 16#3087
-/yosmallkatakana 16#30e7
-/yosmallkatakanahalfwidth 16#ff6e
-/yotgreek 16#03f3
-/yoyaekorean 16#3188
-/yoyakorean 16#3187
-/yoyakthai 16#0e22
-/yoyingthai 16#0e0d
-/yparen 16#24b4
-/ypogegrammeni 16#037a
-/ypogegrammenigreekcmb 16#0345
-/yr 16#01a6
-/yring 16#1e99
-/ysuperior 16#02b8
-/ytilde 16#1ef9
-/yturned 16#028e
-/yuhiragana 16#3086
-/yuikorean 16#318c
-/yukatakana 16#30e6
-/yukatakanahalfwidth 16#ff95
-/yukorean 16#3160
-/yusbigcyrillic 16#046b
-/yusbigiotifiedcyrillic 16#046d
-/yuslittlecyrillic 16#0467
-/yuslittleiotifiedcyrillic 16#0469
-/yusmallhiragana 16#3085
-/yusmallkatakana 16#30e5
-/yusmallkatakanahalfwidth 16#ff6d
-/yuyekorean 16#318b
-/yuyeokorean 16#318a
-/yyabengali 16#09df
-/yyadeva 16#095f
-/z 16#007a
-/zaarmenian 16#0566
-/zacute 16#017a
-/zadeva 16#095b
-/zagurmukhi 16#0a5b
-/zaharabic 16#0638
-/zahfinalarabic 16#fec6
-/zahinitialarabic 16#fec7
-/zahiragana 16#3056
-/zahmedialarabic 16#fec8
-/zainarabic 16#0632
-/zainfinalarabic 16#feb0
-/zakatakana 16#30b6
-/zaqefgadolhebrew 16#0595
-/zaqefqatanhebrew 16#0594
-/zarqahebrew 16#0598
-/zayin 16#05d6
-/zayindagesh 16#fb36
-/zayindageshhebrew 16#fb36
-/zayinhebrew 16#05d6
-/zbopomofo 16#3117
-/zcaron 16#017e
-/zcircle 16#24e9
-/zcircumflex 16#1e91
-/zcurl 16#0291
-/zdot 16#017c
-/zdotaccent 16#017c
-/zdotbelow 16#1e93
-/zecyrillic 16#0437
-/zedescendercyrillic 16#0499
-/zedieresiscyrillic 16#04df
-/zehiragana 16#305c
-/zekatakana 16#30bc
-/zero 16#0030
-/zeroarabic 16#0660
-/zerobengali 16#09e6
-/zerodeva 16#0966
-/zerogujarati 16#0ae6
-/zerogurmukhi 16#0a66
-/zerohackarabic 16#0660
-/zeroinferior 16#2080
-/zeromonospace 16#ff10
-/zerooldstyle 16#f730
-/zeropersian 16#06f0
-/zerosuperior 16#2070
-/zerothai 16#0e50
-/zerowidthjoiner 16#feff
-/zerowidthnonjoiner 16#200c
-/zerowidthspace 16#200b
-/zeta 16#03b6
-/zhbopomofo 16#3113
-/zhearmenian 16#056a
-/zhebrevecyrillic 16#04c2
-/zhecyrillic 16#0436
-/zhedescendercyrillic 16#0497
-/zhedieresiscyrillic 16#04dd
-/zihiragana 16#3058
-/zikatakana 16#30b8
-/zinorhebrew 16#05ae
-/zlinebelow 16#1e95
-/zmonospace 16#ff5a
-/zohiragana 16#305e
-/zokatakana 16#30be
-/zparen 16#24b5
-/zretroflexhook 16#0290
-/zstroke 16#01b6
-/zuhiragana 16#305a
-/zukatakana 16#30ba
-.dicttomark readonly def
-/currentglobal where
-{pop currentglobal{setglobal}true setglobal}
-{{}}
-ifelse
-/MacRomanEncoding .findencoding
-/MacGlyphEncoding
-/.notdef/.null/CR
-4 index 32 95 getinterval aload pop
-99 index 128 45 getinterval aload pop
-/notequal/AE
-/Oslash/infinity/plusminus/lessequal/greaterequal
-/yen/mu1/partialdiff/summation/product
-/pi/integral/ordfeminine/ordmasculine/Ohm
-/ae/oslash/questiondown/exclamdown/logicalnot
-/radical/florin/approxequal/increment/guillemotleft
-/guillemotright/ellipsis/nbspace
-174 index 203 12 getinterval aload pop
-/lozenge
-187 index 216 24 getinterval aload pop
-/applelogo
-212 index 241 7 getinterval aload pop
-/overscore
-220 index 249 7 getinterval aload pop
-/Lslash/lslash/Scaron/scaron
-/Zcaron/zcaron/brokenbar/Eth/eth
-/Yacute/yacute/Thorn/thorn/minus
-/multiply/onesuperior/twosuperior/threesuperior/onehalf
-/onequarter/threequarters/franc/Gbreve/gbreve
-/Idotaccent/Scedilla/scedilla/Cacute/cacute
-/Ccaron/ccaron/dmacron
-260 -1 roll pop
-258 packedarray
-7 1 index .registerencoding
-.defineencoding
-exec
-%%BeginResource: file (PDF CharProc obj_7)
-7 0 obj
-<</Length 844   >>stream
-260 0 19 -175 247 19 d1
-228 0 0 194 19 -175 cm
-BI
-/IM true
-/W 228
-/H 194
-/BPC 1
-/D[1
-0]
-/F[/A85
-/CCF]
-/DP[null
-<</K -1
-/Columns 228
-/EndOfBlock false>>]
-ID
--D?M.A8l(4qq"X9s'1-6&U=K2O!)YTE),nTo_gZ9n))mnr',r62t,_?&)mK%&+0.A&+07C*k)$T
-fRCt..-+`GBGC:PO`9%<3E-EjCjLR?qtke+L\C]Fq[`)kqt;#\05[EkV/>9%.IGLbJ9YtQ/SV].
-)fOKG%H"W"iOMbfS3&%u>IPf-Xi#/;rP&g:Do6LJr&<TL%Jp[R&)6g?U[LT"QLmFrNUdrQ=F20s
-VYGT,pV2(LL[@]a,i^3POn'h.^.Q5Do!/CC^\iaJi>R79S03:lcp'h2%S.[9Sd#u>817^/K0fh`
-'m>REZ:TYnd0:Hh2M(AUa;u8\G9T:sArpDl%"[?la)Y&_L*(FA#EXAVQnpqfA-j?`Adt<Ag&ZEP
-(]Ngi%(NKW61PEk"6:-s&8dbAj;"IS$mGiO>KA\c5l5;9+F%C,&Ge\`i,%'KMLa1/<X6>P>=6t,
-nCWd-VZr`K5g/YGJc(E-4tMG)pbEi0&GU\@j;g=,7$o_m&[5="MZUNKa>3+c6'*AEVZoDYAGB[N
-[N>p/k%14,*\b;FA/H@?k--r]&+-O at 0i,#A?tjsV=D%LDTJ$446U0Y1&j`R)U_IWtE%VhsZ3R\8
-)8n]PHm%:mI=sslC:k_t>:A,l)7E=KL`R at C@=fVH2qb?"\o>g52Fo[7A7.*1%H at RQ?#S>!?"'Z~>
-EI
-endstream
-endobj
-%%EndResource
-%%BeginResource: file (PDF CharProc obj_8)
-8 0 obj
-<</Length 663   >>stream
-260 0 14 -167 249 13 d1
-235 0 0 180 14 -167 cm
-BI
-/IM true
-/W 235
-/H 180
-/BPC 1
-/D[1
-0]
-/F[/A85
-/CCF]
-/DP[null
-<</K -1
-/Columns 235
-/EndOfBlock false>>]
-ID
--D5T at RKc*OHp/WuIK+fshuE`Vs8W+Ks8W,6s5\:kJbfW at IY%DZJ`>q3_#rWb61FB9%g3r)iBA:r
-i:'NtJp\MjpcK5Jn5"\XCRT3f%6`T1E6Vo32a2H$?9l6tg"F8)+ND7h]#(a9NU[hBpYU>l\$G28
-)o90/#%T%uD at FW0CZHDpS:[(uCJ'6f%:hBXCQN,\/jQ1CGlts4JRf9)H=RNqMg5E at W(RPT"2NdE
-s8?I8q='%3I\&i7S^@L,rSW=qa=;abJq$%<r"K!aE)1>uXo>'p:YPf3lo"S8VuQ_!hu:Cjs*t%u
-TNujfJ9YbuO:McG"n97?^Xg1"^].S+pg4?m\qKV_K1Y,]$N^hB5k(HYTKEV4'nAC`Kh#aJGa1d0
-"#WD,&-We=AAM'7HGe;TSbipoI5'Q?DmL?ihdeM9%q1REg3sld0Q41Eh-mi2'8G_*Jp;2R*jQ]`
-IR at s\/:eoqA/9l#+F=0kJ`8(N+F#$T#-/26_J9Pp at N*sN~>
-EI
-endstream
-endobj
-%%EndResource
-%%BeginResource: file (PDF CharProc obj_10)
-10 0 obj
-<</Length 565   >>stream
-260 0 20 -168 249 10 d1
-229 0 0 178 20 -168 cm
-BI
-/IM true
-/W 229
-/H 178
-/BPC 1
-/D[1
-0]
-/F[/A85
-/CCF]
-/DP[null
-<</K -1
-/Columns 229
-/EndOfBlock false>>]
-ID
--D?M+#(`m"O:8,X5k'EC%mf/;#H*4rSjP`?O?n[b&LIa6A'd())L;U?ctVb%%6bfr1`pqZ:VT2n
-h<f1[Y2Ho^IO6$NBGYX"9=,K\"E:o=&C<$A!p+C26*q"2DAF0VYhB88i3:oC%g@^7>A+ckKsm9f
-"h+kV/[Q97[a85mDd-m,dbCn2[nCQA]ksUW>A8"]V7KlFDdB3N>A8CfV70csg0VCf[[5S0G*_IH
-94GKiXff/!XfpI"1l#1$?n1eJ")?3b%:u7\)I>kKTkK_r=-0Z=Zq3Q5.:F#7O?>K$a:q_$_*]b:
-$h(h0^YAbfp]&t)Aq[T(0X/@q1=S0j5t%W44?(rZ5k)Ana;t[H.?HY1[M');TMr1!Bc2K^j4F<\
-s8Vurs7cQns8W,rs'+l-@>+~>
-EI
-endstream
-endobj
-%%EndResource
-%%BeginResource: file (PDF CharProc obj_11)
-11 0 obj
-<</Length 824   >>stream
-260 0 17 -167 248 11 d1
-231 0 0 178 17 -167 cm
-BI
-/IM true
-/W 231
-/H 178
-/BPC 1
-/D[1
-0]
-/F[/A85
-/CCF]
-/DP[null
-<</K -1
-/Columns 231
-/EndOfBlock false>>]
-ID
--D5Tt*s9?J5k&I9+F"_VO?=(M+F'_b-\?S=$/n$3_7Y?[WK94j/jSo2Y98('(W[X$`A.[Q at +Gj@
-HgeGXs1dt#s1eR45k:h75HDU*OG at KsKF\4X%ghG@'@:u"5i"U7$0WEHK>B`E6(SbN/.1?"8H@`X
-U6H(j:S!LbE*d`Be6nn1cnf2?m[WV\BOhD*SEsoY6gR;Tp\jLZHTj(q*IT[\CS)a"+X7<S25Dp\
->'tptW'a]*"[/98=8;p2WWU<`HPHdI4:'b<5k*3"a;u8Bp:&Yfo_[!]Hp'TIZ5R at AkV.R^1Cm1^
-5m%Y)*<u0'-6HnTTnhD[R!sU^(k'5PY[eL/ig=-ZhSFm<8e"#;C%oO>W-A/(]=[r+rQamLGO/Q.
-hp5'p@"WCMKAVH5_=+UTiK2RB;gj:*%"iH5gYn7Kf`h?<1(*nu^)7)3QM<3="dblm&&`i4hLVhe
-^gm]@PSjSem*mdT40UgSr9ds;.J_hNGW'_g0FnT2L/&"ti-9C$%/U5pUO at b+Z5[fka=G?0+K$A6
-)3V3WAjZYYb_Q]jb6)NA1Bq#+!ZdU2SId#Ye:W23O?^#n1j*IR?+h_+?&,T>Wl*Fskpm9M]iDam
-dRh,PqHMKWf@"$Sp9j-dH:qsR$nA?1\pgpg)*t?/K"-.p[>#G^nC=$~>
-EI
-endstream
-endobj
-%%EndResource
-%%BeginResource: font (PDF Font obj_12)
-12 0 obj
-<</R9
-9 0 R>>
-endobj
-%%EndResource
-%%BeginResource: font (PDF Font obj_9)
-9 0 obj
-<</Type/Font
-/Encoding 6 0 R/CharProcs <</a17 11 0 R
-/a7 10 0 R
-/a9 8 0 R
-/a14 7 0 R
->>/FontMatrix[1 0 0 1 0 0]/FontBBox[0 0 235 175]/FirstChar 7/LastChar 17/Widths[ 260 0 260 0 0 0 0 260 0
-0 260]
-/Subtype/Type3>>
-endobj
-%%EndResource
-%%BeginResource: encoding (PDF Encoding obj_6)
-6 0 obj
-<</Type/Encoding/Differences[0
-/a0/a1/a2/a3/a4/a5/a6/a7/a8/a9/a10/a11/a12/a13/a14/a15
-/a16/a17
-] >>
-endobj
-%%EndResource
-%%BeginResource: file (PDF object obj_1)
-1 0 obj
-<<>>endobj
-%%EndResource
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 131 21
-%%BeginPageSetup
-/pagesave save def
-4 0 obj
-<</Type/Page/MediaBox [0 0 131 21]
-/Parent 3 0 R
-/Resources<</ProcSet[/PDF]
-/Font 12 0 R
->>
-/Contents 5 0 R
->>
-endobj
-%%EndPageSetup
-5 0 obj
-<</Length 147>>stream
-q 0.1 0 0 0.1 0 0 cm
-0 G
-0 g
-q
-10 0 0 10 0 0 cm BT
-/R9 1 Tf
-0.1 0 0 -0.1 -1.9 2.5 Tm
-<0E>Tj
-359 0 Td
-<09>Tj
-360 0 Td
-<07>Tj
-360 0 Td
-<11>Tj
-ET
-Q
-Q
-endstream
-endobj
-pagesave restore
-%%PageTrailer
-%%Trailer
-end
-%%Trailer
-cleartomark
-countdictstack
-exch sub { end } repeat
-restore
-%%EOF

Added: trunk/Master/texmf-dist/source/latex/thuthesis/Makefile
===================================================================
--- trunk/Master/texmf-dist/source/latex/thuthesis/Makefile	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/thuthesis/Makefile	2019-05-02 22:31:15 UTC (rev 50932)
@@ -0,0 +1,82 @@
+# Makefile for ThuThesis
+
+# Set opts for latexmk if you use it
+LATEXMKOPTS = -xelatex -file-line-error -halt-on-error -interaction=nonstopmode
+# Basename of thesis
+THESISMAIN = main
+# Basename of shuji
+SHUJIMAIN = shuji
+
+PACKAGE=thuthesis
+SOURCES=$(PACKAGE).ins $(PACKAGE).dtx
+THESISCONTENTS=$(THESISMAIN).tex data/*.tex $(FIGURES)
+# NOTE: update this to reflect your local file types.
+FIGURES=$(wildcard figures/*.pdf)
+BIBFILE=ref/*.bib
+BSTFILE=*.bst
+SHUJICONTENTS=$(SHUJIMAIN).tex
+CLSFILES=dtx-style.sty $(PACKAGE).cls
+
+# make deletion work on Windows
+ifdef SystemRoot
+	RM = del /Q
+	OPEN = start
+else
+	RM = rm -f
+	OPEN = open
+endif
+
+.PHONY: all clean distclean dist thesis viewthesis shuji viewshuji doc viewdoc cls check FORCE_MAKE
+
+all: doc thesis shuji
+
+cls: $(CLSFILES)
+
+$(CLSFILES): $(SOURCES)
+	xetex $(PACKAGE).ins
+
+viewdoc: doc
+	$(OPEN) $(PACKAGE).pdf
+
+doc: $(PACKAGE).pdf
+
+viewthesis: thesis
+	$(OPEN) $(THESISMAIN).pdf
+
+thesis: $(THESISMAIN).pdf
+
+viewshuji: shuji
+	$(OPEN) $(SHUJIMAIN).pdf
+
+shuji: $(SHUJIMAIN).pdf
+
+$(PACKAGE).pdf: $(CLSFILES) $(THESISMAIN).tex FORCE_MAKE
+	latexmk $(LATEXMKOPTS) $(PACKAGE).dtx
+
+$(THESISMAIN).pdf: $(CLSFILES) $(BSTFILE) FORCE_MAKE
+	latexmk $(LATEXMKOPTS) $(THESISMAIN)
+
+$(SHUJIMAIN).pdf: $(CLSFILES) FORCE_MAKE
+	latexmk $(LATEXMKOPTS) $(SHUJIMAIN)
+
+clean:
+	latexmk -c $(PACKAGE).dtx $(THESISMAIN) $(SHUJIMAIN)
+	-@$(RM) *~
+
+cleanall: clean
+	-@$(RM) $(PACKAGE).pdf $(THESISMAIN).pdf $(SHUJIMAIN).pdf
+
+distclean: cleanall
+	-@$(RM) $(CLSFILES)
+	-@$(RM) -r dist
+
+check: FORCE_MAKE
+ifeq ($(version),)
+	@echo "Error: version missing: \"make [check|dist] version=X.Y.Z\""; exit 1
+else
+	@[[ $(shell grep -E -c '$(version) Tsinghua University Thesis Template|\\def\\version\{$(version)\}' thuthesis.dtx) -eq 3 ]] || (echo "update version in thuthesis.dtx before release"; exit 1)
+	@[[ $(shell grep -E -c '"version": "$(version)"' package.json) -eq 1 ]] || (echo "update version in package.json before release"; exit 1)
+endif
+
+dist: check all
+	npm run build -- --version=$(version)


Property changes on: trunk/Master/texmf-dist/source/latex/thuthesis/Makefile
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx	2019-05-02 22:31:15 UTC (rev 50932)
@@ -1,6 +1,6 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 2005-2018 by Ruini Xue <xueruini at gmail.com>
+% Copyright (C) 2005-2019 by Ruini Xue <xueruini at gmail.com>
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License, either version 1.3
@@ -16,7 +16,7 @@
 %
 % \iffalse
 %<*driver>
-\ProvidesFile{thuthesis.dtx}[2018/05/17 5.4.5 Tsinghua University Thesis Template]
+\ProvidesFile{thuthesis.dtx}[2019/04/27 5.5.2 Tsinghua University Thesis Template]
 \documentclass{ltxdoc}
 \usepackage{dtx-style}
 
@@ -30,24 +30,6 @@
 %</driver>
 % \fi
 %
-% \CheckSum{0}
-%
-% \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         \~}
-%
 % \DoNotIndex{\newenvironment,\@bsphack,\@empty,\@esphack,\sfcode}
 % \DoNotIndex{\addtocounter,\label,\let,\linewidth,\newcounter}
 % \DoNotIndex{\noindent,\normalfont,\par,\parskip,\phantomsection}
@@ -174,9 +156,13 @@
 % \begin{enumerate}
 % \item 本模板的发布遵守 \LaTeX\ Project Public License,使用前请认真阅读协议内
 %   容。
-% \item 本模板为作者根据清华大学教务处颁发的《综合论文训练写作指南》,清华大学研
-%   究生院颁发的《研究生学位论文写作指南》,清华大学《编写“清华大学博士后研究报
-%   告”参考意见》编写而成,旨在供清华大学毕业生撰写学位论文使用。
+% \item 本模板为作者根据清华大学教务处颁发的《综合论文训练写作指南》,
+%   清华大学研究生院颁发的
+%   \href{http://yjsy.cic.tsinghua.edu.cn/docinfo/board/boarddetail.jsp?columnId=001050603&parentColumnId=0010506&itemSeq=5365}{《研究生学位论文写作指南》},
+%   清华大学
+%   \href{http://postdoctor.tsinghua.edu.cn/info/czxz/1283}{%
+%     《编写“清华大学博士后研究报告”参考意见》}
+%   编写而成,旨在供清华大学毕业生撰写学位论文使用。
 % \item 清华大学教务处和研究生院只提供毕业论文写作指南,不提供官方模板,也不会授
 %   权第三方模板为官方模板,所以此模板仅为写作指南的参考实现,不保证格式审查老师
 %   不提意见。任何由于使用本模板而引起的论文格式审查问题均与本模板作者无关。
@@ -239,11 +225,9 @@
 % thuthesis.ins & \textsc{DocStrip} 驱动文件(开发用) \\
 % thuthesis.dtx & \textsc{DocStrip} 源文件(开发用)\\\midrule
 % thuthesis.cls & 模板类文件\\
-% thuthesis.cfg & 模板配置文件\\
 % thuthesis-numeric.bst & 参考文献样式文件\\
 % thuthesis-author-year.bst & 参考文献样式文件\\
-% tsinghua.pdf & 校名 logo,系统无隶书字体时使用 \\
-% tsinghua.eps & 同上 \\\midrule
+% tsinghua.pdf & 校名 logo,系统无隶书字体时使用 \\\midrule
 % main.tex & 示例文档主文件\\
 % shuji.tex & 书脊示例文档\\
 % ref/ & 示例文档参考文献目录\\
@@ -258,9 +242,9 @@
 %
 % 几点说明:
 % \begin{itemize}
-% \item \file{thuthesis.cls} 和 \file{thuthesis.cfg} 可由 \file{thuthesis.ins}
+% \item \file{thuthesis.cls} 可由 \file{thuthesis.ins}
 %   和 \file{thuthesis.dtx} 生成,但为了降低新手用户的使用难度,故
-%   将 \file{thuthesis.cls} 和 \file{thuthesis.cfg} 文件一起发布。
+%   将 \file{thuthesis.cls} 文件一起发布。
 % \item 使用前阅读文档:\file{thuthesis.pdf}。
 % \end{itemize}
 %
@@ -280,8 +264,8 @@
 %
 % \begin{shell}
 % $ cd thuthesis-vX.Y.Z
-% # 生成 thuthesis.cls 和 thuthesis.cfg
-% $ latex thuthesis.ins
+% # 生成 thuthesis.cls
+% $ xetex thuthesis.ins
 %
 % # 下面的命令用来生成用户手册,可以不执行
 % $ xelatex thuthesis.dtx
@@ -312,15 +296,6 @@
 % $ xelatex main   # 此时生成完整的 pdf 文件
 % \end{shell}
 %
-% \subsubsection{PDF\LaTeX}
-% \label{sec:pdflatex}
-% 如果使用 PDF\LaTeX,按照第~\ref{sec:xelatex} 节的顺序执行即可,只是将命令中
-% \texttt{xelatex} 替换为 \texttt{pdflatex}。
-%
-% 需要注意的是 PDF\LaTeX\ 不能处理常见的 EPS 图形,需要先用 \texttt{epstopdf} 将其转化
-% 成 PDF。不过 PDF\LaTeX\ 增加了对 png,jpg 等格式的支持,比较方便。\TeX Live
-% 自从 2010 版本起自动调用 \texttt{epstopdf} 将 EPS 图形转化为 PDF。
-%
 % \subsubsection{latexmk}
 % \label{sec:latexmk}
 % \texttt{latexmk} 命令支持全自动生成 \LaTeX\ 编写的文档,并且支持使用不同的工具
@@ -341,7 +316,7 @@
 %
 % \begin{shell}
 % $ make clean
-% $ make cls       # 生成 thuthesis.cls 和 thuthesis.cfg
+% $ make cls       # 生成 thuthesis.cls
 % $ make doc       # 生成说明文档 thuthesis.pdf
 % $ make thesis    # 生成示例文档 main.pdf
 % $ make shuji     # 生成书脊 shuji.pdf
@@ -348,7 +323,7 @@
 % \end{shell}
 %
 % \thuthesis\ 的 \file{Makefile} 默认用 \texttt{latexmk} 调用\texttt{xelatex} 编
-% 译,此外还支持直接用 \texttt{xelatex} 和\texttt{pdflatex} 编译。如有需要可修
+% 译。如有需要可修
 % 改 \file{Makefile} 开头的参数或通过命令行传递参数(请参看 \file{README.md}),
 % 进一步还可以修改 \file{latexmkrc} 进行定制。
 %
@@ -356,15 +331,15 @@
 % \label{sec:updgrade}
 % \thuthesis\ 升级非常简单,可以通过 \TeX\ 发行版的包管理工具自动更新发行版,也可
 % 以下载最新的开发版,
-% 将 \file{thuthesis.ins},\file{thuthesis.dtx},\file{tsinghua.pdf},\file{tsinghua.eps},
+% 将 \file{thuthesis.ins},\file{thuthesis.dtx},\file{tsinghua.pdf},
 % \file{thuthesis-author-year.bst} 和 \file{thuthesis-numeric.bst} 拷贝至工作目录覆盖相应
 % 的文件,然后运行:
 % \begin{shell}
-% $ latex thuthesis.ins
+% $ xetex thuthesis.ins
 % \end{shell}
 %
 % 生成新的类文件和配置文件即可。也可以直接拷
-% 贝 \file{thuthesis.cls},\file{thuthesis.cfg},免去上面命令的执行。
+% 贝 \file{thuthesis.cls},免去上面命令的执行。
 %
 %
 % \section{使用说明}
@@ -384,10 +359,10 @@
 %
 % \subsection{示例文件}
 % \label{sec:userguide}
-
+%
 % 模板核心文件
-% 有:\file{thuthesis.cls},\file{thuthesis.cfg},\file{thuthesis-numeric.bst},
-% \file{thuthesis-author-year.bst},\file{tsinghua.pdf} 和 \file{tsinghua.eps},
+% 有:\file{thuthesis.cls},\file{thuthesis-numeric.bst},
+% \file{thuthesis-author-year.bst} 和 \file{tsinghua.pdf},
 % 但如果没有示例文档会很难下手,所以推荐从模板自带的示例文档入手,其中包括了论文
 % 写作用到的所有命令及其使用方法,只需要用自己的内容进行相应替换就可以。对于不清
 % 楚的命令可以查阅本手册。下面的例子描述了模板中章节的组织形式,来自于示例文档,
@@ -410,10 +385,12 @@
 % \documentclass[degree=master]{thuthesis}
 % \end{latex}
 %
+% \DescribeOption{language}
+% 论文的主要语言(默认:中文)。可选:\option{chinese},\option{english}。
+%
 % \DescribeOption{secret}
-%   涉秘论文开关(默认:关闭)。第 \ref{sec:setup-secret} 节两个配置(或命
-%   令)\cs{secretlevel}\marg{级别} 和 \cs{secretyear}\marg{年数} 分别用来指定保
-%   密级别和时限。若不设置,则二者取默认值,分别为“\textbf{秘密}”和当前年份。
+% 涉秘论文开关(默认:关闭)。第 \ref{sec:setup-secret} 节两个配置分别用来指定保
+% 密级别和时限。若不设置,则二者取默认值,分别为“\textbf{秘密}”和当前年份。
 % \begin{latex}
 % \documentclass[secret]{thuthesis} % 打开保密
 % \documentclass[secret=false]{thuthesis} % 关闭保密
@@ -422,20 +399,8 @@
 %   secretlevel=公开,
 %   secretyear=10
 % }
-% % 或者
-% \secretlevel{保密}
-% \secretyear{10}
 % \end{latex}
 %
-% \DescribeOption{pifootnote}
-% 是否使用 \pkg{pifont} 的带圈字符标记脚注编号。默认关闭,即使用\cs{textcircled}
-% 命令,效果不太好,但是符合学校样式要求。不管使用哪种方式,一页的脚注建议控制
-% 在 9 个以内,否则大于 10的数字带圈的效果不太好。建议使用时打开此选项,脚注编号
-% 很漂亮,如下:
-% \begin{latex}
-% \documentclass[pifootnote]{thuthesis}
-% \end{latex}
-%
 % \DescribeOption{openany}
 % \DescribeOption{openright}
 % 正规出版物的章节出现在奇数页,也就是右手边的页面,这就是 \option{openright},也
@@ -474,44 +439,46 @@
 % 模式使用远比正文模式频繁,所以为了符合使用习惯,上标模式仍然用常规
 % 的 \cs{cite}\marg{key},而 \cs{inlinecite}\marg{key} 则用来生成正文模式。
 %
-% 关于参考文献模板推荐使用 \BibTeX,关于中文参考文献需要额外增加一个 Entry:
-% \texttt{language},将其设置为 \texttt{chinese} 用来指示此参考文献为中文。如:
+% 关于参考文献表推荐使用 \BibTeX,默认情况下可以自动识别文献语言,
+% 并自动处理文献类型和载体类型标识,也可以手动指定,如:
 % \begin{latex}
-% @INPROCEEDINGS{cnproceed,
-%   author    = {王重阳 and 黄药师 and 欧阳峰 and 洪七公 and 段皇帝},
-%   title     = {武林高手从入门到精通},
-%   booktitle = {第~$N$~次华山论剑},
-%   year      = 2006,
-%   address   = {西安, 中国},
-%   month     = sep,
-%   language  = "chinese",
-% }
-%
-% @ARTICLE{cnarticle,
-%   author    = "贾宝玉 and 林黛玉 and 薛宝钗 and 贾探春",
-%   title     = "论刘姥姥食量大如牛之现实意义",
-%   journal   = "红楼梦杂谈",
-%   pages     = "260--266",
-%   volume    = "224",
-%   year      = "1800",
-%   language  = "chinese",
-% }
+% @misc{citekey,
+%   language = {japanese},
+%   mark     = {Z},
+%   medium   = {DK},
+%   ...
 % \end{latex}
+% 可选的语言有 english, chinese, japanese, russian。
 %
 % 注意如果不需要引用参考文献,请删除 \file{main.tex} 中 \cs{bibliography} 开头的两行,
 % 以避免可能的编译错误。
 %
+% 国标规定参考文献表采用著者-出版年制组织时,各篇文献首先按文种集中,
+% 然后按著者字顺和出版年排列;
+% 中文文献可以按著者汉语拼音字顺排列,也可以按著者的笔画笔顺排列。
+% 然而由于 \BibTeX{} 功能的局限性,无法自动获取著者姓名的拼音或笔画笔顺,
+% 所以\emph{必须}在 bib 数据库中的 key 域手动录入著者姓名的拼音,如:
+% \begin{latex}
+% @book{capital,
+%   author = {马克思 and 恩格斯},
+%   key    = {ma3 ke4 si1   en1 ge2 si1},
+%   ...
+% \end{latex}
+%
+% \BibTeX{} 对自定义样式的支持比较有限,
+% 所以用户只能通过修改 \file{bst} 文件来修改文献列表的格式。
+% 本宏包提供了一些接口供用户更方便地修改,
+% 在 \file{bst} 文件开始处的 |load.config| 函数中,
+% 有一组配置参数用来控制样式。
+% 若变量被设为 |#1| 则表示该项被启用,设为 |#0| 则不启用。
+% 默认的值是严格遵循学校规定的配置。
+%
+%
 % \subsection{中文字体}
 % \label{sec:chinese-fonts}
 %
 % \subsubsection{字体配置}
 % \label{sec:font-config}
-% 正确配置中文字体是使用模板的第一步。模板调用 \CTeX\ 宏包,提供如下字体使用方式:
-% \begin{itemize}
-%   \item 基于传统 \pkg{CJK} 包,使用 \LaTeX、PDF\LaTeX\ 编译。
-%   \item 基于 \pkg{xeCJK} 包,使用 \XeLaTeX\ 编译。(推荐方法)
-% \end{itemize}
-%
 % 模板默认使用 \CTeX\ 的字体配置。关于中文字体安装、配置的所有问题不在本模板讨论
 % 范围。
 %
@@ -591,68 +558,44 @@
 %
 % \subsubsection{密级}
 % \label{sec:setup-secret}
-% \DescribeMacro{\secretlevel}
-% \DescribeMacro{\secretyear}
 % 定义秘密级别和年限,需要打开论文的 \option{secret} 选项。
 % \begin{latex}
 % \thusetup{
-%   secretyear=10,
-%   secretlevel={内部},
+%   secretyear  = 10,
+%   secretlevel = {内部},
 % }
-% % 以下命令方式与上面的等价:
-% \secretyear{10}
-% \secretlevel{内部}
 % \end{latex}
 %
 % \subsubsection{博士后专用参数}
-% \DescribeMacro{\id}
-% \DescribeMacro{\udc}
-% \DescribeMacro{\catalognumber}
 % 只见过,没用过,不知道具体是什么意思。
 % \begin{latex}
 % \thusetup{
-%   catalognumber={分类号},
-%   udc={udc},
-%   id={id}
+%   catalognumber = {分类号},
+%   udc           = {udc},
+%   id            = {id},
 % }
-% % 等价:
-% \catalognumber{分类号}
-% \udc{udc}
-% \id{编号}
 % \end{latex}
 %
 % \subsubsection{论文标题}
-% \DescribeMacro{\ctitle}
-% \DescribeMacro{\etitle}
 % 中英文标题。可以在标题内部使用换行|\\|。
 % \begin{latex}
 % \thusetup{
-%   ctitle={论文中文题目},
-%   etitle={Thesis English Title}
+%   ctitle = {论文中文题目},
+%   etitle = {Thesis English Title},
 % }
-% % 等价:
-% \ctitle{论文中文题目}
-% \etitle{Thesis English Title}
 % \end{latex}
 %
 % \subsubsection{作者姓名}
-% \DescribeMacro{\cauthor}
-% \DescribeMacro{\eauthor}
 % 作者姓名。
 % \begin{latex}
 % \thusetup{
-%   cauthor={中文姓名},
-%   eauthor={Name in Pinyin}
+%   cauthor = {中文姓名},
+%   eauthor = {Name in Pinyin},
 % }
-% % 等价:
-% \cauthor{中文姓名}
-% \eauthor{Name in PinYin}
 % \end{latex}
 %
 % \subsubsection{申请学位名称}
 % \label{sec:degree}
-% \DescribeMacro{\cdegree}
-% \DescribeMacro{\edegree}
 % 学位和专业的设置比想象的要复杂一些:
 %
 % \begin{longtable}{p{2cm}p{8cm}p{4cm}}
@@ -673,113 +616,75 @@
 %
 % \begin{latex}
 % \thusetup{
-%   cdegree={您要申请什么学位},
-%   edegree={degree in English}
+%   cdegree = {您要申请什么学位},
+%   edegree = {Degree in English},
 % }
-% % 等价:
-% \cdegree{您要申请什么学位}
-% \edegree{degree in English}
 % \end{latex}
 %
 % \subsubsection{院系名称}
-% \DescribeMacro{\cdepartment}
-% \DescribeMacro{\edepartment}
 % 院系名称。
 % \begin{latex}
 % \thusetup{
-%   cdepartment={系名全称},
-%   edepartment={Deparment of CS}
+%   cdepartment = {系名全称},
+%   edepartment = {Deparment of CS},
 % }
-% % 等价:
-% \cdepartment{系名全称}
-% \edepartment{Department of CS}
 % \end{latex}
 %
 % \subsubsection{专业名称}
-% \DescribeMacro{\cmajor}
-% \DescribeMacro{\emajor}
 % 参见第 \ref{sec:degree} 节。
 % \begin{latex}
 % \thusetup{
-%   cmajor={专业名称},
-%   emajor={Major in English}
+%   cmajor = {专业名称},
+%   emajor = {Major in English},
 % }
-% % 等价:
-% \cmajor{专业名称}
-% \emajor{Major in English}
 % \end{latex}
 %
-% \DescribeMacro{\cfirstdiscipline}
-% \DescribeMacro{\cseconddiscipline}
 % 博士后专用。
 % \begin{latex}
 % \thusetup{
-%   cfirstdiscipline={博士后一级学科},
-%   cseconddiscipline={博士后二级学科}
+%   cfirstdiscipline  = {流动站(一级学科)名称},
+%   cseconddiscipline = {专业(二级学科)名称},
 % }
-% % 等价:
-% \cfirstdiscipline{博士后一级学科}
-% \cseconddiscipline{博士后二级学科}
 % \end{latex}
 %
 % \subsubsection{导师}
 % \myentry{导师}
-% \DescribeMacro{\csupervisor}
-% \DescribeMacro{\esupervisor}
 % 直接导师。
 % \begin{latex}
 % \thusetup{
-%   csupervisor={导师~教授},
-%   esupervisor={Supervisor}
+%   csupervisor = {导师~教授},
+%   esupervisor = {Supervisor},
 % }
-% % 等价:
-% \csupervisor{导师~教授}
-% \esupervisor{Supervisor}
 % \end{latex}
 %
 % \myentry{副导师}
-% \DescribeMacro{\cassosupervisor}
-% \DescribeMacro{\eassosupervisor}
 % 本科生的辅导教师,硕士的副指导教师。
 % \begin{latex}
 % \thusetup{
-%   cassosupervisor={副导师~副教授},
-%   eassosupervisor={2nd Boss}
+%   cassosupervisor = {副导师~副教授},
+%   eassosupervisor = {2nd Boss},
 % }
-% % 等价:
-% \cassosupervisor{副导师~副教授}
-% \eassosupervisor{2nd Boss}
 % \end{latex}
 %
 % \myentry{联合导师}
-% \DescribeMacro{\ccosupervisor}
-% \DescribeMacro{\ecosupervisor}
 % 硕士生联合指导教师,博士生联合导师。
 % \begin{latex}
 % \thusetup{
-%   ccosupervisor={联合导师~教授},
-%   ecosupervisor={3rd Boss}
+%   ccosupervisor = {联合导师~教授},
+%   ecosupervisor = {3rd Boss},
 % }
-% % 等价:
-% \ccosupervisor{联合导师~教授}
-% \ecosupervisor{3rd Boss}
 % \end{latex}
 %
 % \subsubsection{成文日期}
-% \DescribeMacro{\cdate}
-% \DescribeMacro{\edate}
-% \DescribeMacro{\postdoctordate}
 % 默认为当前时间,也可以自己指定。
 % \begin{latex}
 % \thusetup{
-%   cdate={中文日期},
-%   edate={English Date},
-%   postdoctordate={2009年7月——2011年7月} % 博士后研究起止日期
+%   cdate            = {中文日期},
+%   edate            = {English Date},
+%   postdoctordate   = {2009 年 7 月——2011 年 7 月},  % 博士后工作完成日期
+%   postdocstartdate = {2009 年 7 月 1 日},  % 博士后研究工作起始时间
+%   postdocenddate   = {2011 年 7 月 1 日},  % 博士后研究工作期满时间
 % }
-% % 等价:
-% \cdate{中文日期}
-% \edate{English Date}
-% \postdoctordate{2009年7月——2011年7月} % 博士后研究起止日期
 % \end{latex}
 %
 % \subsubsection{摘要}
@@ -799,18 +704,13 @@
 % \end{latex}
 %
 % \myentry{关键词}
-% \DescribeMacro{\ckeywords}
-% \DescribeMacro{\ekeywords}
 % 关键词用英文逗号分割写入相应的命令中,模板会解析各关键词并生成符合不同论文格式
 % 要求的关键词格式。
 % \begin{latex}
 % \thusetup{
-%   ckeywords={关键词 1, 关键词 2},
-%   ekeywords={keyword 1, keyword 2}
+%   ckeywords = {关键词 1, 关键词 2},
+%   ekeywords = {keyword 1, keyword 2},
 % }
-% % 等价:
-% \ckeywords{关键词 1, 关键词 2}
-% \ekeywords{keyword 1, keyword 2}
 % \end{latex}
 %
 % \myentry{生成封面}
@@ -846,6 +746,18 @@
 % \end{denotation}
 % \end{latex}
 %
+% 另外一种方法是调用 \pkg{nomencl} 宏包,需要在导言区设置:
+% \begin{latex}
+% \usepackage{nomencl}
+% \makenomenclature
+% \end{latex}
+% 然后在正文中任意位置使用 \cs{nomenclature} 声明需要添加到主要符号表的符号:
+% \begin{latex}
+% \nomenclature{$m$}{The mass of one angel}
+% \end{latex}
+% 最后使用 \cs{printnomenclature} 命令生成符号表。
+% 更详细的使用方法参见 \pkg{nomencl} 宏包的文档。
+%
 % \subsection{目录和索引表}
 % 目录、插图、表格和公式等索引命令分别如下,将其插入到期望的位置即可(带星号的命令表
 % 示对应的索引表不会出现在目录中):
@@ -1096,10 +1008,6 @@
 % 缩。一方面清除了多余空间,另一方面用户可以自己指定列表环境的样式(如标签符号,
 % 缩进等)。细节请参看 \pkg{enumitem} 文档,此处不再赘述。
 %
-% \subsection{其它}
-% 模板的配置文件 \file{thuthesis.cfg} 中定义了很多固定词汇,一般无须修改。如果有特殊需求,
-% 推荐在导言区使用 \cs{renewcommand}。
-%
 % \section{致谢}
 % \label{sec:thanks}
 % 感谢这些年来一直陪伴 \thuthesis\ 成长的新老同学!
@@ -1115,10 +1023,18 @@
 %    \begin{macrocode}
 %<cls>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
 %<cls>\ProvidesClass{thuthesis}
-%<cfg>\ProvidesFile{thuthesis.cfg}
-%<cls|cfg>[2018/05/17 5.4.5 Tsinghua University Thesis Template]
+%<cls>[2019/04/27 5.5.2 Tsinghua University Thesis Template]
 %    \end{macrocode}
 %
+% 检查编译引擎,要求使用 XeLaTeX。
+%    \begin{macrocode}
+\RequirePackage{ifxetex}
+\ifxetex\else
+  \ClassError{thuthesis}{You should use XeLaTeX}{}
+  \end{document}
+\fi
+%    \end{macrocode}
+%
 % \subsection{定义选项}
 % \label{sec:defoption}
 % 定义论文类型以及是否涉密
@@ -1134,9 +1050,8 @@
 %    \begin{macrocode}
 %<*cls>
 \hyphenation{Thu-Thesis}
-\def\thuthesis{\textsc{ThuThesis}}
-\def\version{5.4.5}
-
+\def\thuthesis{ThuThesis}
+\def\version{5.5.2}
 \RequirePackage{kvoptions}
 \SetupKeyvalOptions{
   family=thu,
@@ -1148,28 +1063,15 @@
 % \changes{v5.0.0}{2015/12/13}{使用 \pkg{kvoptions} 简化选项 type。}
 % \changes{v5.4.2}{2017/12/18}{使用 degree 取代 type 选项。}
 %    \begin{macrocode}
-\newif\ifthu at bachelor
-\newif\ifthu at master
-\newif\ifthu at doctor
-\newif\ifthu at postdoctor
-\define at key{thu}{degree}{%
-  \thu at bachelorfalse
-  \thu at masterfalse
-  \thu at doctorfalse
-  \thu at postdoctorfalse
-  \expandafter\csname thu@#1true\endcsname}
-\define at key{thu}{type}{%
-  \ClassError{thuthesis}{'type' is deprecated, \MessageBreak
-                         please use 'degree=#1' instead}{}}
-\def\thu at deprecated@degree at option{%
-  \ClassError{thuthesis}{Option '\CurrentOption' is deprecated, \MessageBreak
-                         please use 'degree=\CurrentOption' instead}{}}
-\DeclareVoidOption{bachelor}{\thu at deprecated@degree at option}
-\DeclareVoidOption{master}{\thu at deprecated@degree at option}
-\DeclareVoidOption{doctor}{\thu at deprecated@degree at option}
-\DeclareVoidOption{postdoctor}{\thu at deprecated@degree at option}
+\DeclareStringOption[doctor]{degree}[doctor]
 %    \end{macrocode}
 %
+% 论文是使用英文。
+% \changes{v5.5.0}{2018/12/09}{增加选项使用英文模板。}
+%    \begin{macrocode}
+\DeclareStringOption[chinese]{language}[chinese]
+%    \end{macrocode}
+%
 % 论文是否保密。
 %    \begin{macrocode}
 \DeclareBoolOption{secret}
@@ -1187,14 +1089,9 @@
 % \changes{v4.8}{2013/03/05}{增加 noraggedbottom 选项。}
 % \changes{v5.0.0}{2015/12/13}{norggedbottom 选项修改为 raggedbottom。}
 %    \begin{macrocode}
-\DeclareBoolOption{raggedbottom}
+\DeclareBoolOption[true]{raggedbottom}
 %    \end{macrocode}
 %
-% 在脚注标记中使用 \pkg{pifont} 的带圈数字(默认关闭)
-%    \begin{macrocode}
-\DeclareBoolOption{pifootnote}
-%    \end{macrocode}
-%
 % 将选项传递给 \pkg{ctexbook}。
 %    \begin{macrocode}
 \DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}}
@@ -1204,38 +1101,30 @@
 % \changes{v2.5.1}{2006/05/26}{本科 openright,研究生 openany。}
 % \changes{v3.1}{2007/10/09}{本科的目录又不要 arial 字体了。}
 % \changes{v4.8}{2013/05/29}{添加 nocap 选项,恢复默认标题样式,模板会进一步定制。}
-% 打开默认选项。
-%    \begin{macrocode}
-\kvsetkeys{thu}{%
-  raggedbottom}
-%    \end{macrocode}
-%
 % 解析用户传递过来的选项,并加载 \pkg{ctexbook}。
 %    \begin{macrocode}
 \ProcessKeyvalOptions*
-\ifthu at bachelor\relax\else
-  \ifthu at master\relax\else
-    \ifthu at doctor\relax\else
-      \ifthu at postdoctor\relax\else
-        \ClassError{thuthesis}%
-                   {Please specify thesis degree in option: \MessageBreak
-                    degree=[bachelor | master | doctor | postdoctor]}{}
-      \fi
-    \fi
-  \fi
-\fi
+\newcommand\thu at validate@key[1]{%
+  \@ifundefined{thu@\csname thu@#1\endcsname true}{%
+    \ClassError{thuthesis}{Invalid value '\csname thu@#1\endcsname'}{}%
+  }{%
+    \csname thu@\csname thu@#1\endcsname true\endcsname
+  }%
+}
+\newif\ifthu at bachelor
+\newif\ifthu at master
+\newif\ifthu at doctor
+\newif\ifthu at postdoctor
+\thu at validate@key{degree}
+\newif\ifthu at chinese
+\newif\ifthu at english
+\thu at validate@key{language}
 %    \end{macrocode}
 %
-% 使用 \XeTeX\ 引擎时,\pkg{fontspec} 宏包会被 \pkg{xeCJK} 自动调用。传递
-% 给 \pkg{fontspec} 宏包 \option{no-math} 选项,避免部分数学符号字体自动调整
-% 为 CMR。其他引擎下没有这个问题,这一行会被无视。
-%    \begin{macrocode}
-\PassOptionsToPackage{no-math}{fontspec}
-%    \end{macrocode}
-%
 % \changes{v5.3.1}{2016/03/20}{使用 \CTeX\ 默认中文字体配置,支持不同引擎。}
 % 使用 \pkg{ctexbook} 类,优于调用 \pkg{ctex} 宏包。
 %    \begin{macrocode}
+\PassOptionsToPackage{quiet}{xeCJK}
 \LoadClass[a4paper,openany,UTF8,zihao=-4,scheme=plain]{ctexbook}
 %    \end{macrocode}
 %
@@ -1246,7 +1135,6 @@
 % 引用的宏包和相应的定义。
 %    \begin{macrocode}
 \RequirePackage{etoolbox}
-\RequirePackage{ifxetex}
 \RequirePackage{xparse}
 %    \end{macrocode}
 %
@@ -1256,23 +1144,15 @@
 \RequirePackage{amsmath}
 %    \end{macrocode}
 %
-% \pkg{newtx} 设置 Times New Roman,Helvetica。
+% 使用 \pkg{unicode-math} 处理数学字体。
 % \changes{v3.1}{2007/06/16}{replace \pkg{mathptmx} with \pkg{txfonts}.}
 % \changes{v5.2.1}{2016/01/14}{使用 \pkg{newtx} 替换 \pkg{txfonts}。}
 % \changes{v5.2.2}{2016/02/01}{不希望 \pkg{newtx} 修改 \cs{@makefnmark}。 }
+% \changes{v5.5.0}{2018/07/07}{使用 \pkg{unicode-math} 处理数学字体。}
 %    \begin{macrocode}
-\RequirePackage[defaultsups]{newtxtext}
-\RequirePackage{newtxmath}
+\RequirePackage{unicode-math}
 %    \end{macrocode}
 %
-% \pkg{newtx} 的 Mono 字体虽然很好看,但在论文中不常见。学校虽未要求 Mono 字体,
-% 还是选择常见的 Courier 字体。由于比较新的实现 \TeX\ Gyre Cursor 会修
-% 改\cs{bfdefault},导致中文加粗出问题,所以选用标准 \pkg{courier}。
-% \changes{v5.3.2}{2016/5/24}{替换 \pkg{tgcursor} 为 \pkg{courier}。}
-%    \begin{macrocode}
-\RequirePackage{courier}
-%    \end{macrocode}
-%
 % 图形支持宏包。
 %    \begin{macrocode}
 \RequirePackage{graphicx}
@@ -1312,11 +1192,6 @@
 \fi
 %    \end{macrocode}
 %
-%    \begin{macrocode}
-\ifthu at pifootnote
-  \RequirePackage{pifont}
-\fi
-%    \end{macrocode}
 % 利用 \pkg{CJKfntef} 实现汉字的下划线和盒子内两段对齐,并可以避免
 % \cs{makebox}\oarg{width}\oarg{s} 可能产生的 underful boxes。
 %    \begin{macrocode}
@@ -1360,33 +1235,40 @@
 % \changes{v5.2.2}{2016/01/25}{目录中标题和页码都是链接。}
 %    \begin{macrocode}
 \RequirePackage{hyperref}
-\ifxetex
-  \hypersetup{%
-    CJKbookmarks=true}
-\else
-  \hypersetup{%
-    unicode=true,
-    CJKbookmarks=false}
-\fi
-\hypersetup{%
-  linktoc=all,
-  bookmarksnumbered=true,
-  bookmarksopen=true,
-  bookmarksopenlevel=1,
-  breaklinks=true,
-  colorlinks=false,
-  plainpages=false,
-  pdfborder=0 0 0}
+\hypersetup{
+  linktoc            = all,
+  bookmarksnumbered  = true,
+  bookmarksopen      = true,
+  bookmarksopenlevel = 1,
+  breaklinks         = true,
+  plainpages         = false,
+  hidelinks,
+}
+\pdfstringdefDisableCommands{
+  \let\\\@empty
+  \let\hspace\@gobble
+}
 %    \end{macrocode}
 %
-% dvips 模式下网址断字有问题,请手工加载 \pkg{breakurl} 宏包解决之。
-%
 % 设置 url 样式,与上下文一致
 %    \begin{macrocode}
 \urlstyle{same}
 %    \end{macrocode}
 %
+% 使用 \pkg{xurl} 的方法,增加 URL 可断行的位置。
+%    \begin{macrocode}
+\def\UrlBreaks{%
+  \do\/%
+  \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k\do\l%
+     \do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z%
+  \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L%
+     \do\M\do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\Y\do\Z%
+  \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9\do=\do/\do.\do:%
+  \do\*\do\-\do\~\do\'\do\"\do\-}
+\Urlmuskip=0mu plus 0.1mu
+%    \end{macrocode}
 %
+%
 % \subsection{页面设置}
 % \label{sec:layout}
 % 本来这部分应该是最容易设置的,但根据格式规定出来的结果跟学校的 WORD 样例相差很
@@ -1433,7 +1315,6 @@
 % \changes{v5.4.4}{2018/04/13}{让目录中的引用不影响正文中引用序号。}
 %    \begin{macrocode}
 \RequirePackage{notoccite}
-%</cls>
 %    \end{macrocode}
 %
 % \subsection{主文档格式}
@@ -1444,7 +1325,6 @@
 % 对于 \textsl{openright} 选项,必须保证章首页右开,且如果前章末页无内容须
 % 清空其页眉页脚。
 %    \begin{macrocode}
-%<*cls>
 \let\thu at cleardoublepage\cleardoublepage
 \newcommand{\thu at clearemptydoublepage}{%
   \clearpage{\pagestyle{thu at empty}\thu at cleardoublepage}}
@@ -1465,7 +1345,7 @@
 \renewcommand\frontmatter{%
   \if at openright\cleardoublepage\else\clearpage\fi
   \@mainmatterfalse
-  \pagenumbering{Roman}
+  \pagenumbering{Alph}
   \pagestyle{thu at empty}}
 \renewcommand\mainmatter{%
   \if at openright\cleardoublepage\else\clearpage\fi
@@ -1475,7 +1355,6 @@
 \renewcommand\backmatter{%
   \if at openright\cleardoublepage\else\clearpage\fi
   \@mainmattertrue}
-%</cls>
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1483,18 +1362,85 @@
 %
 % \subsubsection{字体}
 % \label{sec:font}
+% 使用 \pkg{fontspec} 配置字体。
+%    \begin{macrocode}
+\newcommand\thu at fontset{\csname g__ctex_fontset_tl\endcsname}
+\ifthenelse{\equal{\thu at fontset}{fandol}}{
+  \setmainfont[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+  ]{texgyretermes}
+  \setsansfont[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+  ]{texgyreheros}
+  \setmonofont[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+    Scale          = MatchLowercase,
+  ]{texgyrecursor}
+}{
+  \setmainfont{Times New Roman}
+  \setsansfont{Arial}
+  \ifthenelse{\equal{\thu at fontset}{mac}}{
+    \setmonofont[Scale=MatchLowercase]{Menlo}
+  }{
+    \setmonofont[Scale=MatchLowercase]{Courier New}
+  }
+}
+%    \end{macrocode}
+%
+% 使用 \pkg{unicode-math} 配置数学字体
+% \changes{v5.5.2}{2019/04/21}{使用 XITS 数学字体。}
+%    \begin{macrocode}
+\unimathsetup{
+  math-style = ISO,
+  bold-style = ISO,
+  nabla      = upright,
+  partial    = upright,
+}
+\IfFontExistsTF{XITSMath-Regular.otf}{
+  \setmathfont[
+    Extension    = .otf,
+    BoldFont     = XITSMath-Bold,
+    StylisticSet = 8,
+  ]{XITSMath-Regular}
+  \setmathfont[range={cal,bfcal},StylisticSet=1]{XITSMath-Regular.otf}
+}{
+  \setmathfont[
+    Extension    = .otf,
+    BoldFont     = *bold,
+    StylisticSet = 8,
+  ]{xits-math}
+  \setmathfont[range={cal,bfcal},StylisticSet=1]{xits-math.otf}
+}
+%    \end{macrocode}
+%
 % 在使用 Windows Vista 或之后版本的系统时,\pkg{ctex} 宏包会默认使用微软雅黑字体,
-% 这可能会导致审查不合格。 下面设置适合印刷的黑体,同时保持跨平台兼容性。
+% 这可能会导致审查不合格。下面设置适合印刷的黑体,同时保持跨平台兼容性。
+% \changes{v5.5.0}{2019/01/06}{Windows 的中文字体开启伪粗。}
 %    \begin{macrocode}
-%<*cls>
-\newcommand\thu at fontset{\csname g__ctex_fontset_tl\endcsname}
 \ifthenelse{\equal{\thu at fontset}{windows}}{
-  \ifxetex
-    \setCJKsansfont{SimHei}
-  \else
-    \setCJKsansfont{simhei.ttf}
-    \csname ctex_punct_map_family:nn\endcsname{\CJKsfdefault}{zhhei}
-  \fi
+  \xeCJKsetup{EmboldenFactor=2}
+  \IfFileExists{C:/bootfont.bin}{
+    \setCJKmainfont[AutoFakeBold,ItalicFont=KaiTi_GB2312]{SimSun}
+    \setCJKfamilyfont{zhkai}[AutoFakeBold]{KaiTi_GB2312}
+  }{
+    \setCJKmainfont[AutoFakeBold,ItalicFont=KaiTi]{SimSun}
+    \setCJKfamilyfont{zhkai}[AutoFakeBold]{KaiTi}
+  }
+  \setCJKsansfont[AutoFakeBold]{SimHei}
+  \setCJKfamilyfont{zhsong}[AutoFakeBold]{SimSun}
+  \setCJKfamilyfont{zhhei}[AutoFakeBold]{SimHei}
 }{}
 %    \end{macrocode}
 %
@@ -1505,15 +1451,16 @@
          UprightFont = * Light,
             BoldFont = * Bold,
           ItalicFont = Kaiti SC,
-      BoldItalicFont = Kaiti SC Bold
+      BoldItalicFont = Kaiti SC Bold,
     ]{Songti SC}
-  \setCJKsansfont{Heiti SC}
+  \setCJKsansfont[BoldFont=* Medium]{Heiti SC}
   \setCJKfamilyfont{zhsong}[
          UprightFont = * Light,
             BoldFont = * Bold,
     ]{Songti SC}
-  \setCJKfamilyfont{zhhei}{Heiti SC}
-  \setCJKfamilyfont{zhkai}{Kaiti SC}
+  \setCJKfamilyfont{zhhei}[BoldFont=* Medium]{Heiti SC}
+  \setCJKfamilyfont{zhkai}[BoldFont=* Bold]{Kaiti SC}
+  \xeCJKsetwidth{‘’“”}{1em}
 }{}
 %    \end{macrocode}
 %
@@ -1606,7 +1553,6 @@
 \thu at def@fontsize{xiaoliu}{6.5bp}
 \thu at def@fontsize{qihao}{5.5bp}
 \thu at def@fontsize{bahao}{5bp}
-%</cls>
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1628,6 +1574,119 @@
 % \end{macro}
 %
 %
+% \subsubsection{语言设置}
+%
+% \newcommand\unicodechar[1]{U+#1(\symbol{"#1})}
+% 由于 Unicode 的一些标点符号是中西文混用的:
+% \unicodechar{00B7}、
+% \unicodechar{2013}、
+% \unicodechar{2014}、
+% \unicodechar{2018}、
+% \unicodechar{2019}、
+% \unicodechar{201C}、
+% \unicodechar{201D}、
+% \unicodechar{2025}、
+% \unicodechar{2026}、
+% \unicodechar{2E3A},
+% 所以要根据语言设置正确的字体。
+% \footnote{\url{https://github.com/CTeX-org/ctex-kit/issues/389}}
+% 所以要根据语言设置正确的字体。
+%    \begin{macrocode}
+\newcommand\thu at setchinese{%
+  \xeCJKResetPunctClass
+}
+\newcommand\thu at setenglish{%
+  \xeCJKDeclareCharClass{HalfLeft}{"2018, "201C}%
+  \xeCJKDeclareCharClass{HalfRight}{
+    "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A,
+  }%
+}
+\newcommand\thu at setdefaultlanguage{%
+  \ifthu at chinese
+    \thu at setchinese
+  \else
+    \thu at setenglish
+  \fi
+}
+%    \end{macrocode}
+%
+% 中英文翻译:
+%    \begin{macrocode}
+\ifthu at chinese
+  \ctexset{
+    chapter/name   = {第,章},
+    appendixname   = 附录,
+    contentsname   = {目\hspace{\ccwd}录},
+    listfigurename = 插图索引,
+    listtablename  = 表格索引,
+    figurename     = 图,
+    tablename      = 表,
+    bibname        = 参考文献,
+    indexname      = 索引,
+  }
+  \newcommand\thu at denotation@name{主要符号对照表}
+  \newcommand\listequationname{公式索引}
+  \newcommand\equationname{公式}
+  \newcommand\thu at assumption@name{假设}
+  \newcommand\thu at definition@name{定义}
+  \newcommand\thu at proposition@name{命题}
+  \newcommand\thu at lemma@name{引理}
+  \newcommand\thu at theorem@name{定理}
+  \newcommand\thu at axiom@name{公理}
+  \newcommand\thu at corollary@name{推论}
+  \newcommand\thu at exercise@name{练习}
+  \newcommand\thu at example@name{例}
+  \newcommand\thu at remark@name{注释}
+  \newcommand\thu at problem@name{问题}
+  \newcommand\thu at conjecture@name{猜想}
+  \newcommand\thu at proof@name{证明}
+  \newcommand\thu at theorem@separator{:}
+  \newcommand\thu at ack@name{致\hspace{\ccwd}谢}
+  \ifthu at bachelor
+    \newcommand\thu at resume@title{在学期间参加课题的研究成果}
+  \else
+    \ifthu at postdoctor
+      \newcommand\thu at resume@title{个人简历、发表的学术论文与科研成果}
+    \else
+      \newcommand\thu at resume@title{个人简历、在学期间发表的学术论文与研究成果}
+    \fi
+  \fi
+\else
+  \newcommand\thu at denotation@name{Nomenclature}
+  \newcommand\listequationname{List of Equations}
+  \newcommand\equationname{Equation}
+  \newcommand\thu at assumption@name{Assumption}
+  \newcommand\thu at definition@name{Definition}
+  \newcommand\thu at proposition@name{Proposition}
+  \newcommand\thu at lemma@name{Lemma}
+  \newcommand\thu at theorem@name{Theorem}
+  \newcommand\thu at axiom@name{Axiom}
+  \newcommand\thu at corollary@name{Corollary}
+  \newcommand\thu at exercise@name{Exercise}
+  \newcommand\thu at example@name{Example}
+  \newcommand\thu at remark@name{Remark}
+  \newcommand\thu at problem@name{Problem}
+  \newcommand\thu at conjecture@name{Conjecture}
+  \newcommand\thu at proof@name{proof}
+  \newcommand\thu at theorem@separator{: }
+  \newcommand\thu at ack@name{Acknowledgments}
+  \ifthu at bachelor
+    \newcommand\thu at resume@title{Research Achievements}
+  \else
+    \ifthu at postdoctor
+      \newcommand\thu at resume@title{%
+        Resume, Publications and Research Achievements%
+      }
+    \else
+      \newcommand\thu at resume@title{%
+        Resume, Publications and Research Achievements%
+      }
+    \fi
+  \fi
+\fi
+%    \end{macrocode}
+%
+%
 % \subsubsection{页眉页脚}
 % \label{sec:headerfooter}
 %
@@ -1649,7 +1708,6 @@
 % \item \texttt{thu at headings}:页眉页脚同时显示
 % \end{itemize}
 %    \begin{macrocode}
-%<*cls>
 \fancypagestyle{thu at empty}{%
   \fancyhf{}
   \renewcommand{\headrulewidth}{0pt}
@@ -1666,7 +1724,6 @@
   \fancyfoot[C]{\wuhao\thepage}
   \renewcommand{\headrulewidth}{0.4pt}
   \renewcommand{\footrulewidth}{0pt}}
-%</cls>
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1678,7 +1735,6 @@
 %
 % 全文首行缩进 2 字符,标点符号用全角
 %    \begin{macrocode}
-%<*cls>
 \ctexset{%
   punct=quanjiao,
   space=auto,
@@ -1689,7 +1745,6 @@
 % \changes{v2.5.2}{2006/06/01}{更改默认列表距离。}
 %    \begin{macrocode}
 \setlist{nosep}
-%</cls>
 %    \end{macrocode}
 %
 %
@@ -1701,19 +1756,30 @@
 % \begin{macro}{\thu at textcircled}
 % \changes{v2.5.1}{2006/05/21}{脚注编号使用 \cs{textcircled} 命令,每页允许至多 99 个。}
 % \changes{v5.2.2}{2016/02/01}{脚注编号每页允许至多 9 个。}
+% \changes{v5.5.0}{2018/12/10}{去掉 \option{pifootnote} 选项。}
+% \changes{v5.5.1}{2019/04/16}{修复 minipage 中 footnote 编号问题。}
 % 生成带圈的脚注数字,最多处理到 10。
 %    \begin{macrocode}
-%<*cls>
+\ifthenelse{\equal{\thu at fontset}{mac}}{
+  \newfontfamily\thu at circlefont{Songti SC Light}
+}{
+  \ifthenelse{\equal{\thu at fontset}{windows}}{
+    \newfontfamily\thu at circlefont{SimSun}
+  }{
+    \IfFontExistsTF{XITS-Regular.otf}{
+      \newfontfamily\thu at circlefont{XITS-Regular.otf}
+    }{
+      \newfontfamily\thu at circlefont{xits-regular.otf}
+    }
+  }
+}
 \def\thu at textcircled#1{%
-  \ifnum\value{#1} >9
+  \ifnum\value{#1} >9%
     \ClassError{thuthesis}%
-      {Too many footnotes in this page.}{Keep footnote less than 10.}
+      {Too many footnotes in this page.}{Keep footnote less than 10.}%
   \fi
-  \ifthu at pifootnote%
-    \ding{\the\numexpr\value{#1}+171\relax}%
-  \else%
-    \textcircled{\xiaoliu\arabic{#1}}%
-  \fi}
+  {\thu at circlefont\symbol{\the\numexpr\value{#1}+"245F\relax}}%
+}
 \renewcommand{\thefootnote}{\thu at textcircled{footnote}}
 \renewcommand{\thempfootnote}{\thu at textcircled{mpfootnote}}
 %    \end{macrocode}
@@ -1737,15 +1803,92 @@
 \def\thu@@makefnmark{\hbox{{\normalfont\@thefnmark}}}
 \pretocmd{\@makefntext}{\let\@makefnmark\thu@@makefnmark}{}{}
 \apptocmd{\@makefntext}{\let\@makefnmark\thu at makefnmark}{}{}
-%</cls>
 %    \end{macrocode}
 %
 %
 % \subsubsection{数学相关}
 % \label{sec:equation}
+% \begin{macro}{\ldots}
+% 省略号一律居中,所以 \cs{ldots} 不再居于底部。
+%    \begin{macrocode}
+\ifthu at chinese
+  \def\mathellipsis{\cdots}
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\le}
+% \begin{macro}{\ge}
+% \begin{macro}{\leq}
+% \begin{macro}{\geq}
+% 小于等于号要使用倾斜的形式。
+%    \begin{macrocode}
+\protected\def\le{\leqslant}
+\protected\def\ge{\geqslant}
+\AtBeginDocument{%
+  \renewcommand\leq{\leqslant}%
+  \renewcommand\geq{\geqslant}%
+}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\int}
+% 积分号 \cs{int} 使用正体,并且上下限默认置于积分号上下两侧。
+%    \begin{macrocode}
+\removenolimits{%
+  \int\iint\iiint\iiiint\oint\oiint\oiiint
+  \intclockwise\varointclockwise\ointctrclockwise\sumint
+  \intbar\intBar\fint\cirfnint\awint\rppolint
+  \scpolint\npolint\pointint\sqint\intlarhk\intx
+  \intcap\intcup\upint\lowint
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Re}
+% \begin{macro}{\Im}
+% 实部、虚部操作符使用罗马体 $\mathrm{Re}$、$\mathrm{Im}$ 而不是 fraktur 体
+% $\Re$、$\Im$。
+%    \begin{macrocode}
+\AtBeginDocument{%
+  \renewcommand{\Re}{\operatorname{Re}}%
+  \renewcommand{\Im}{\operatorname{Im}}%
+}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\nabla}
+% \cs{nabla} 使用粗正体。
+%    \begin{macrocode}
+\AtBeginDocument{%
+  \renewcommand\nabla{\mbfnabla}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bm}
+% \begin{macro}{\boldsymbol}
+% 兼容旧的粗体命令:\pkg{bm} 的 \cs{bm} 和 \pkg{amsmath} 的 \cs{boldsymbol}。
+%    \begin{macrocode}
+\newcommand\bm{\symbf}
+\renewcommand\boldsymbol{\symbf}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\square}
+% 兼容 \pkg{amssymb} 中的命令。
+%    \begin{macrocode}
+\newcommand\square{\mdlgwhtsquare}
+%    \end{macrocode}
+% \end{macro}
+%
 % 允许太长的公式断行、分页等。
 %    \begin{macrocode}
-%<*cls>
 \allowdisplaybreaks[4]
 \renewcommand\theequation{\ifnum \c at chapter>\z@ \thechapter-\fi\@arabic\c at equation}
 %    \end{macrocode}
@@ -1787,7 +1930,6 @@
 % 修改 \cs{tagform} 会影响 \cs{eqref}。
 %    \begin{macrocode}
 \renewcommand{\eqref}[1]{\textup{(\ref{#1})}}
-%</cls>
 %    \end{macrocode}
 %
 % 定理标题使用黑体,正文使用宋体,冒号隔开。
@@ -1795,28 +1937,27 @@
 % \changes{v4.2}{2008/03/07}{调整证明环境的编号和结尾的方块。}
 % \changes{v5.0.0}{2015/04/18}{修正定理字样为黑体 (\#104)。}
 % \changes{v5.3.2}{2017/05/01}{定理环境格式设置(环境标题和环境正文字体设置)统一放置到 .cfg 文件中。}
+% \changes{v5.5.0}{2019/01/08}{移除 cfg 文件。}
 %    \begin{macrocode}
-%<*cfg>
 \theorembodyfont{\normalfont}
-\theoremheaderfont{\normalfont\heiti}
+\theoremheaderfont{\normalfont\sffamily}
 \theoremsymbol{\ensuremath{\square}}
-\newtheorem*{proof}{证明}
+\newtheorem*{proof}{\thu at proof@name}
 \theoremstyle{plain}
 \theoremsymbol{}
-\theoremseparator{:}
-\newtheorem{assumption}{假设}[chapter]
-\newtheorem{definition}{定义}[chapter]
-\newtheorem{proposition}{命题}[chapter]
-\newtheorem{lemma}{引理}[chapter]
-\newtheorem{theorem}{定理}[chapter]
-\newtheorem{axiom}{公理}[chapter]
-\newtheorem{corollary}{推论}[chapter]
-\newtheorem{exercise}{练习}[chapter]
-\newtheorem{example}{例}[chapter]
-\newtheorem{remark}{注释}[chapter]
-\newtheorem{problem}{问题}[chapter]
-\newtheorem{conjecture}{猜想}[chapter]
-%</cfg>
+\theoremseparator{\thu at theorem@separator}
+\newtheorem{assumption}{\thu at assumption@name}[chapter]
+\newtheorem{definition}{\thu at definition@name}[chapter]
+\newtheorem{proposition}{\thu at proposition@name}[chapter]
+\newtheorem{lemma}{\thu at lemma@name}[chapter]
+\newtheorem{theorem}{\thu at theorem@name}[chapter]
+\newtheorem{axiom}{\thu at axiom@name}[chapter]
+\newtheorem{corollary}{\thu at corollary@name}[chapter]
+\newtheorem{exercise}{\thu at exercise@name}[chapter]
+\newtheorem{example}{\thu at example@name}[chapter]
+\newtheorem{remark}{\thu at remark@name}[chapter]
+\newtheorem{problem}{\thu at problem@name}[chapter]
+\newtheorem{conjecture}{\thu at conjecture@name}[chapter]
 %    \end{macrocode}
 %
 % \subsubsection{浮动对象以及表格}
@@ -1823,11 +1964,11 @@
 % \label{sec:float}
 % 设置浮动对象和文字之间的距离
 % \changes{v2.6}{2006/06/09}{增加 \cs{floatsep},\cs{@fptop},\cs{@fpsep} 和 \cs{@fpbot}。}
+% \changes{v5.5.0}{2019/03/15}{修正图表标题与文字之间的距离。}
 %    \begin{macrocode}
-%<*cls>
-\setlength{\floatsep}{20bp \@plus4pt \@minus1pt}
-\setlength{\intextsep}{20bp \@plus4pt \@minus2pt}
-\setlength{\textfloatsep}{20bp \@plus4pt \@minus2pt}
+\setlength{\floatsep}{12bp \@plus 2bp \@minus 4bp}
+\setlength{\textfloatsep}{12bp}
+\setlength{\intextsep}{12bp}
 \setlength{\@fptop}{0bp \@plus1.0fil}
 \setlength{\@fpsep}{12bp \@plus2.0fil}
 \setlength{\@fpbot}{0bp \@plus1.0fil}
@@ -1864,12 +2005,15 @@
 \fi
 \let\old at tabular\@tabular
 \def\thu at tabular{\dawu[1.5]\old at tabular}
-\DeclareCaptionLabelFormat{thu}{{\dawu[1.5]\normalfont #1~#2}}
-\DeclareCaptionLabelSeparator{thu}{\hspace{1em}}
-\DeclareCaptionFont{thu}{\dawu[1.5]}
-\captionsetup{labelformat=thu,labelsep=thu,font=thu,skip=6bp}
-\captionsetup[table]{position=top}
-\captionsetup[figure]{position=bottom}
+\DeclareCaptionFont{thu}{\dawu[1.3]}
+\DeclareCaptionLabelSeparator{thu}{\hspace{\ccwd}}
+\captionsetup{
+  font           = thu,
+  labelsep       = thu,
+  skip           = 6bp,
+  figureposition = bottom,
+  tableposition  = top,
+}
 \captionsetup[sub]{font=thu}
 \renewcommand{\thesubfigure}{(\alph{subfigure})}
 \renewcommand{\thesubtable}{(\alph{subtable})}
@@ -1891,7 +2035,6 @@
 \def\hlinewd#1{%
   \noalign{\ifnum0=`}\fi\hrule \@height #1 \futurelet
     \reserved at a\@xhline}
-%</cls>
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1900,20 +2043,6 @@
 % \label{sec:theor}
 % \changes{v2.5}{2006/05/19}{增加索引名称定义。}
 %    \begin{macrocode}
-%<*cfg>
-\ctexset{%
-  chapter/name={第,章},
-  appendixname=附录,
-  contentsname={目\hspace{\ccwd}录},
-  listfigurename=插图索引,
-  listtablename=表格索引,
-  figurename=图,
-  tablename=表,
-  bibname=参考文献,
-  indexname=索引,
-}
-\newcommand\listequationname{公式索引}
-\newcommand\equationname{公式}
 \ifthu at bachelor
   \newcommand{\cabstractname}{中文摘要}
   \newcommand{\eabstractname}{ABSTRACT}
@@ -1933,7 +2062,6 @@
     \or\def\CJK at today{\CJK at todaysmall}
     \or\def\CJK at today{\CJK at todaybig}
   \fi}
-%</cfg>
 %    \end{macrocode}
 %
 % \pkg{fancyhdr} 定义页眉页脚很方便,但是有一个非常隐蔽的坑。通过 \pkg{fancyhdr}
@@ -1960,7 +2088,6 @@
 % 而覆盖我们的 \cs{chaptermark} 定义(后续样式再激活不会重复覆盖)。所以我们采用如下
 % 方法解决:
 %    \begin{macrocode}
-%<*cls>
 \AtBeginDocument{%
   \pagestyle{thu at empty}
   \renewcommand{\chaptermark}[1]{\@mkboth{\CTEXthechapter\hskip\ccwd#1}{}}}
@@ -2081,7 +2208,6 @@
     \@mkboth{#3}{#3}
   }
 }
-%</cls>
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2093,7 +2219,6 @@
 % \changes{v3.1}{2007/10/09}{博士论文目录只出现到第 3 级标题即可。}
 % \changes{v5.0.0}{2015/05/21}{硕士博士论文目录只出现到第 3 级标题即可。其他未明确要求。}
 %    \begin{macrocode}
-%<*cls>
 \setcounter{secnumdepth}{3}
 \setcounter{tocdepth}{2}
 %    \end{macrocode}
@@ -2159,7 +2284,6 @@
   \@dottedtocline{2}{\ifthu at bachelor 1.5\ccwd\else 2\ccwd\fi}{3em}}
 \renewcommand*\l at subsubsection{%
   \@dottedtocline{3}{\ifthu at bachelor 2.4em\else 3.5em\fi}{3.8em}}
-%</cls>
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2171,7 +2295,6 @@
 % \changes{v2.6.2}{2006/06/18}{引入 \cs{thu at def@term} 定义封面命令。}
 % \changes{v3.1}{2006/06/16}{重新定义摘要为环境,long 选项不需要了。}
 %    \begin{macrocode}
-%<*cls>
 \def\thu at def@term#1{%
   \define at key{thu}{#1}{\csname #1\endcsname{##1}}
   \expandafter\gdef\csname #1\endcsname##1{%
@@ -2183,34 +2306,18 @@
 % \changes{v2.0}{2005/12/18}{增加了封面密级,增加博士封面支持}
 % \changes{v4.6}{2011/04/27}{增加博士后相关指令。}
 %
-% \begin{macro}{\secretlevel}
-% \begin{macro}{\secretyear}
 % 定义密级参数。
 %    \begin{macrocode}
 \thu at def@term{secretlevel}
 \thu at def@term{secretyear}
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
 %
-% \begin{macro}{\ctitle}
-% \begin{macro}{\etitle}
 % 论文中英文题目。
 %    \begin{macrocode}
 \thu at def@term{ctitle}
 \thu at def@term{etitle}
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
 %
-% \begin{macro}{\cauthor}
-% \begin{macro}{\eauthor}
-% \begin{macro}{\csupervisor}
-% \begin{macro}{\cassosupervisor}
-% \begin{macro}{\ccosupervisor}
-% \begin{macro}{\esupervisor}
-% \begin{macro}{\eassosupervisor}
-% \begin{macro}{\ecosupervisor}
 % 作者、导师、副导师、联合指导老师。
 %    \begin{macrocode}
 \thu at def@term{cauthor}
@@ -2222,79 +2329,33 @@
 \thu at def@term{eassosupervisor}
 \thu at def@term{ecosupervisor}
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
 %
-% \begin{macro}{\cdegree}
-% \begin{macro}{\edegree}
 % 学位中英文。
 %    \begin{macrocode}
 \thu at def@term{cdegree}
 \thu at def@term{edegree}
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
 %
-% \begin{macro}{\cdepartment}
-% \begin{macro}{\edepartment}
 % 院系中英文名称。
 %    \begin{macrocode}
 \thu at def@term{cdepartment}
-\def\caffil{% for compatibility
-  \ClassWarning{thuthesis}
-    {'\string\caffil' is deprecated, please use '\string\cdepartment' instead.}{}%
-  \cdepartment}
 \thu at def@term{edepartment}
-\def\eaffil{% for compability
-  \ClassWarning{thuthesis}
-    {'\string\eaffil' is deprecated, please use '\string\edepartment' instead.}{}%
-  \edepartment}
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
 %
-% \begin{macro}{\cmajor}
-% \begin{macro}{\emajor}
 % 学位中英文名称。
 % \changes{v2.5}{2006/05/20}{院系和专业分别改名用 department 和 major,代替原来
 % 的 affil 和 subject。}
 %    \begin{macrocode}
 \thu at def@term{cmajor}
-\def\csubject{% for compatibility
-  \ClassWarning{thuthesis}
-    {'\string\csubject' is deprecated, please use '\string\cmajor' instead.}{}%
-  \cmajor}
 \thu at def@term{emajor}
-\def\esubject{%for compability
-  \ClassWarning{thuthesis}
-    {'\string\esubject' is deprecated, please use '\string\emajor' instead.}{}%
-  \emajor}
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
 %
-% \begin{macro}{\cdate}
-% \begin{macro}{\edate}
 % 论文成文日期。
 %    \begin{macrocode}
 \thu at def@term{cdate}
 \thu at def@term{edate}
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
 %
-% \begin{macro}{\id}
-% \begin{macro}{\udc}
-% \begin{macro}{\catalognumber}
-% \begin{macro}{\cfirstdiscipline}
-% \begin{macro}{\cseconddiscipline}
-% \begin{macro}{\postdoctordate}
 % 博士后专用封面参数。
 %    \begin{macrocode}
 \thu at def@term{id}
@@ -2303,16 +2364,10 @@
 \thu at def@term{cfirstdiscipline}
 \thu at def@term{cseconddiscipline}
 \thu at def@term{postdoctordate}
+\thu at def@term{postdocstartdate}
+\thu at def@term{postdocenddate}
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
 %
-% \begin{environment}{cabstract}
-% \begin{environment}{eabstract}
 % 摘要最好以环境的形式出现(否则命令的形式会导致开始结束的括号距离太远,我不喜
 % 欢),这就必须让环境能够自己保存内容留待以后使用。使用 \pkg{environ} 的
 % \cs{Collect at Body} 来实现。
@@ -2324,8 +2379,6 @@
 \newcommand{\thu@@eabstract}[1]{\long\gdef\thu at eabstract{#1}}
 \newenvironment{eabstract}{\Collect at Body\thu@@eabstract}{}
 %    \end{macrocode}
-% \end{environment}
-% \end{environment}
 %
 % \begin{macro}{\thu at parse@keywords}
 %   不同论文格式关键词之间的分割不太相同,我们用 \cs{ckeywords} 和
@@ -2344,8 +2397,6 @@
         \expandafter\csname thu@#1\expandafter\endcsname\expandafter{\reserved at a}}}}
 %    \end{macrocode}
 % \end{macro}
-% \begin{macro}{\ckeywords}
-% \begin{macro}{\ekeywords}
 % 利用 \cs{thu at parse@keywords} 来定义,内部通过 \cs{thu at ckeywords} 和
 % \cs{thu at ekeywords} 来引用。
 % \changes{v3.1}{2007/06/16}{增强的关键词命令。}
@@ -2353,8 +2404,6 @@
 \thu at parse@keywords{ckeywords}
 \thu at parse@keywords{ekeywords}
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
 %
 % \begin{macro}{\thusetup}
 % \changes{v5.1.0}{2015/12/26}{通过 \cs{thusetup} 统一设置封面信息。}
@@ -2365,7 +2414,6 @@
 % 调用,所以此命令需要在 \cs{makecover} 之前被调用。
 %    \begin{macrocode}
 \def\thusetup{\kvsetkeys{thu}}
-%</cls>
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2384,11 +2432,8 @@
 % \changes{v5.3.0}{2016/03/11}{更新到研究生院 2016.3 指南。}
 % 定义封面用到的各种文字。
 %    \begin{macrocode}
-%<*cfg>
 \def\thu at ckeywords@separator{;}
 \def\thu at ekeywords@separator{;}
-\def\thu at catalog@number at title{分类号}
-\def\thu at id@title{编号}
 \def\thu at title@sep{:}
 \ifthu at postdoctor
   \def\thu at secretlevel{密级}
@@ -2397,7 +2442,6 @@
 \fi
 \def\thu at secretyear{\the\year}
 \def\thu at schoolname{清华大学}
-\def\thu at postdoctor@report at title{博士后研究报告}
 \def\thu at bachelor@subtitle{综合论文训练}
 \def\thu at bachelor@title at pre{题目}
 \def\thu at postdoctor@date at title{研究起止日期}
@@ -2436,7 +2480,7 @@
 \fi
 \def\thu at cosuper@title{%
   \ifthu at doctor 联合导师\else \ifthu at master 联合指导教师\fi\fi}
-\cdate{\ifthu at bachelor\CJK at todaysmall\else\CJK at todaybig@short\fi}
+\cdate{\ifthu at bachelor\CJK at todaysmall\else\ifthu at postdoctor\CJK at todaysmall@short\else\CJK at todaybig@short\fi\fi}
 \edate{\ifcase \month \or January\or February\or March\or April\or May%
        \or June\or July \or August\or September\or October\or November
        \or December\fi\unskip,\ \ \the\year}
@@ -2465,7 +2509,6 @@
 \newcommand{\thu at frontdate}{%
   日\ifthu at bachelor\hspace{1em}\else\hspace{2em}\fi 期:}
 \newcommand{\thu at ckeywords@title}{关键词:}
-%</cfg>
 %    \end{macrocode}
 %
 %
@@ -2483,67 +2526,80 @@
 % \changes{v4.7}{2011/11/28}{硕士中文封面不再需要英文标题。}
 % \changes{v4.7}{2012/05/30}{本科生题目下划线长度自动适应字数。}
 % \changes{v5.1.0}{2015/12/27}{利用 \env{CJKfilltwosides} 优化封面排版。}
+% \changes{v5.5.0}{2019/01/08}{修正博士后封面的格式。}
 %
 %    \begin{macrocode}
-%<*cls>
 \newcommand\thu at underline[2][6em]{\hskip1pt\underline{\hb at xt@ #1{\hss#2\hss}}\hskip3pt}
+\newcommand\thu at CJKunderline[2][6em]{\CJKunderline*{\hb at xt@ #1{\hss#2\hss}}}
 \newlength{\thu at title@width}
-\ifxetex % todo: ugly codes
-  \newcommand{\thu at put@title}[2][\thu at title@width]{%
+\newcommand{\thu at put@title}[2][\thu at title@width]{%
   \begin{CJKfilltwosides}[b]{#1}#2\end{CJKfilltwosides}}
-\else
-  \newcommand{\thu at put@title}[2][\thu at title@width]{%
-  \begin{CJKfilltwosides}{#1}#2\end{CJKfilltwosides}}
-\fi
 \def\thu at first@titlepage{%
   \ifthu at postdoctor\thu at first@titlepage at postdoctor\else\thu at first@titlepage at other\fi}
-\newcommand{\thu at first@titlepage at postdoctor}{
-  \begin{center}
-    \setlength{\thu at title@width}{3em}
-    \vspace*{0.7cm}
-    \begingroup\wuhao[1.5]%
-    \thu at put@title{\thu at catalog@number at title}\thu at underline\thu at catalognumber\hfill%
-    \thu at put@title{\thu at secretlevel}%
-      \expandafter\thu at underline\ifthu at secret\thu at secret@content\else\relax\fi\par
-    \thu at put@title{U D C}\thu at underline\thu at udc\hfill%
-    \thu at put@title{\thu at id@title}\thu at underline\thu at id\par\vskip3cm\endgroup
-    \begingroup\heiti
-      {\xiaochu\ziju{1}\thu at schoolname}\par\vskip2cm
-      {\xiaoyi\ziju{1}\thu at postdoctor@report at title}\par\vskip3cm
-      {\sanhao[1.5]\thu at ctitle}\par\vskip2cm
-      {\xiaoer\thu at cauthor}
-    \endgroup
-    \par\vskip3cm
-    {\xiaosan[1.5]\ziju{1}\thu at schoolname\par\vskip0.5em\CJK at todaysmall@short}
-  \end{center}
+\newcommand\thu at first@titlepage at postdoctor{%
+  \begin{center}%
+    \setlength{\thu at title@width}{3.5em}%
+    \renewcommand\ULthickness{0.7pt}%
+    \vspace*{0.35cm}%
+    {\sihao[2.6]%
+      \thu at put@title{分类号}\thu at underline[3.7cm]{\thu at catalognumber}\hfill
+      密级\thu at underline[3.7cm]{\ifthu at secret\thu at secret@content\fi}\par
+      \thu at put@title{U D C}\thu at underline[3.7cm]{\thu at udc}\hfill
+      编号\thu at underline[3.7cm]{\thu at id}\par
+    }%
+    \vskip 3.15cm%
+    {\sffamily\bfseries\xiaoer[2.6]%
+      {\ziju{1.5}\thu at schoolname\par}%
+      {\ziju{0.5}博士后研究工作报告\par}%
+    }%
+    \vskip 0.2cm%
+    \parbox[t][4.0cm][c]{\textwidth}{%
+      \centering\sihao[3.46]\CJKunderline*[depth=1em]{\thu at ctitle}\par
+    }\par
+    \vskip 0.4cm%
+    {\xiaosi\thu at cauthor\par}%
+    \vskip 1.4cm%
+    {\xiaosi[1.58]\xeCJKsetup{underline/depth=0.9em}%
+      工作完成日期\quad\thu at CJKunderline[5.9cm]{\thu at postdoctordate}\par
+      \vskip 0.55cm%
+      报告提交日期\quad\thu at CJKunderline[5.9cm]{\thu at cdate}\par
+    }%
+    \vskip 0.45cm%
+    {\xiaosi[2]{\ziju{1}\thu at schoolname}\quad (北京)\par}%
+    \vskip 0.25cm%
+    {\xiaosi[2]\thu at cdate\par}%
+  \end{center}%
   \cleardoublepage
-  \begin{center}
-    \vspace*{2cm}
-    {\sihao\heiti\thu at ctitle\par\thu at etitle}\par
-    \parbox[t][7cm][b]{\textwidth-6cm}{\sihao[1.5]%
-      \setlength{\thu at title@width}{11em}
-      \setlength{\extrarowheight}{6pt}
-      \ifxetex % todo: ugly codes
-        \begin{tabular}{p{\thu at title@width}@{}l@{\extracolsep{8pt}}l}
-      \else
-        \begin{tabular}{p{\thu at title@width}l@{}l}
-      \fi
-          \thu at put@title{\thu at author@title}
-            & \thu at title@sep
-            & \thu at cauthor \\
-          \thu at put@title{\thu at postdoctor@first at discipline@title}
-            & \thu at title@sep
-            & \thu at cfirstdiscipline\\
-          \thu at put@title{\thu at postdoctor@second at discipline@title}
-            & \thu at title@sep
-            & \thu at cseconddiscipline\\
-          \thu at put@title{\thu at supervisor@title}
-            & \thu at title@sep
-            & \thu at csupervisor\\
-        \end{tabular}}
-    \vskip2cm
-    {\sihao\thu at postdoctor@date at title\hskip1em\underline\thu at postdoctordate}
-  \end{center}}
+  \begin{center}%
+    \vspace*{1.5cm}%
+    \parbox[t][3cm][c]{\textwidth}{%
+      \centering\sanhao[1.95]\thu at ctitle\par
+    }\par
+    \vskip 0.15cm%
+    \parbox[t][3cm][c]{\textwidth}{%
+      \centering\sihao[1.36]\thu at etitle\par
+    }\par
+    \vskip 0.4cm%
+    {\xiaosi[2.6]%
+      \setlength{\thu at title@width}{11em}%
+      \begin{tabular}{l@{\quad}l}%
+        \thu at put@title{博士后姓名}                  & \thu at cauthor           \\
+        \thu at put@title{流动站(一级学科)名称}      & \thu at cfirstdiscipline  \\
+        \thu at put@title{专\quad{}业(二级学科)名称} & \thu at cseconddiscipline \\
+      \end{tabular}\par
+    }%
+    \vskip 2.7cm%
+    {\xiaosi[2.6]%
+      研究工作起始时间\quad\thu at postdocstartdate\par
+      \vskip 0.1cm%
+      研究工作期满时间\quad\thu at postdocenddate\par
+    }%
+    \vskip 2.1cm%
+    {\xiaosi[2.6]\thu at schoolname{}人事部(北京)\par}%
+    \vskip 0.6cm%
+    {\wuhao\thu at cdate\par}%
+  \end{center}%
+}
 \newcommand{\thu at first@titlepage at other}{
   \begin{center}
     \vspace*{-1.6cm}
@@ -2551,7 +2607,7 @@
       \ifthu at secret{\heiti\sanhao\thu at secretlevel\thu at secret@content}\else\rule{1cm}{0cm}\fi}
     \ifthu at bachelor
       \vskip0.65cm
-      {\ifcsname lishu\endcsname\yihao\lishu\ziju{0.5}\thu at schoolname\else\includegraphics{tsinghua}\fi}
+      {\ifcsname lishu\endcsname\yihao\lishu\ziju{0.5}\thu at schoolname\else\includegraphics{tsinghua.pdf}\fi}
       \par\vskip1.5cm
       {\xiaochu\heiti\ziju{0.5}\textbf\thu at bachelor@subtitle}
       \vskip2.2cm\hskip0.8cm
@@ -2560,11 +2616,7 @@
       \ignorespaces\yihao[1.51]%
       \renewcommand{\CJKunderlinebasesep}{0.25cm}%
       \renewcommand{\ULthickness}{1.3pt}%
-      \ifxetex
-        \xeCJKsetup{underline/format=\color{black}}%
-      \else
-        \def\CJKunderlinecolor{\color{black}}%
-      \fi
+      \xeCJKsetup{underline/format=\color{black}}%
       \CJKunderline*{\thu at ctitle}}%
       \vskip1.3cm
     \else
@@ -2599,11 +2651,7 @@
          \hspace*{1.9cm}
          \setlength{\thu at title@width}{4em}
          \setlength{\extrarowheight}{6pt}
-         \ifxetex % todo: ugly codes
-           \begin{tabular}{p{\thu at title@width}@{}l@{\extracolsep{8pt}}l}
-         \else
-           \begin{tabular}{p{\thu at title@width}l@{}l}
-         \fi
+         \begin{tabular}{p{\thu at title@width}@{}l@{\extracolsep{8pt}}l}
              \thu at put@title{\thu at department@title} & \thu at title@sep
                & \thu at cdepartment\\
              \thu at put@title{\thu at major@title}      & \thu at title@sep
@@ -2624,11 +2672,7 @@
         \begin{center}\fangsong
           \setlength{\thu at title@width}{5em}
           \setlength{\extrarowheight}{4pt}
-          \ifxetex % todo: ugly codes
-            \begin{tabular}{p{\thu at title@width}@{}c@{\extracolsep{8pt}}l}
-          \else
-            \begin{tabular}{p{\thu at title@width}c@{\extracolsep{4pt}}l}
-          \fi
+          \begin{tabular}{p{\thu at title@width}@{}c@{\extracolsep{8pt}}l}
               \thu at put@title{\thu at department@title}  & \thu at title@sep
                 & {\ziju{0.1875}\thu at cdepartment}\\
               \thu at put@title{\thu at major@title}       & \thu at title@sep
@@ -2666,7 +2710,6 @@
          \songti\thu at cdate}
      \end{center}
     \end{center}} % end of titlepage
-%</cls>
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2676,12 +2719,9 @@
 % \changes{v4.7}{2011/11/28}{硕士生新增英文封面。}
 % 研究生论文使用。
 %    \begin{macrocode}
-%<*cfg>
 \def\thu at master@art{Master of Arts}
 \def\thu at master@sci{Master of Science}
 \def\thu at doctor@phi{Doctor of Philosophy}
-%</cfg>
-%<*cls>
 \newcommand{\thu at engcover}{%
   \newif\ifthu at professional\thu at professionalfalse
   \ifthu at master
@@ -2785,11 +2825,22 @@
 \def\makecover{%
   \thu at setup@pdfinfo\thu at makecover}
 \def\thu at setup@pdfinfo{%
-  \hypersetup{%
-    pdftitle={\thu at ctitle},
-    pdfauthor={\thu at cauthor},
-    pdfsubject={\thu at cdegree},
-    pdfkeywords={\thu at ckeywords},
+  \ifthu at chinese
+    \hypersetup{
+      pdftitle    = \thu at ctitle,
+      pdfauthor   = \thu at cauthor,
+      pdfsubject  = \thu at cdegree,
+      pdfkeywords = \thu at ckeywords,
+    }%
+  \else
+    \hypersetup{
+      pdftitle    = \thu at etitle,
+      pdfauthor   = \thu at eauthor,
+      pdfsubject  = \thu at edegree,
+      pdfkeywords = \thu at ekeywords,
+    }%
+  \fi
+  \hypersetup{
     pdfcreator={\thuthesis-v\version}}}
 \NewDocumentCommand{\thu at makecover}{o}{
   \phantomsection
@@ -2849,7 +2900,6 @@
   \normalsize
   \thu at makeabstract
   \let\@tabular\thu at tabular}
-%</cls>
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2859,7 +2909,6 @@
 % \begin{macro}{\thu at put@keywords}
 % 排版关键字。
 %    \begin{macrocode}
-%<*cls>
 \newbox\thu at kw
 \newcommand\thu at put@keywords[2]{%
   \begingroup
@@ -2881,6 +2930,7 @@
 %    \begin{macrocode}
 \newcommand{\thu at makeabstract}{%
   \ifthu at bachelor\clearpage\else\cleardoublepage\fi
+  \thu at setchinese
   \thu at chapter*[]{\cabstractname} % no tocline
   \ifthu at bachelor
     \pagestyle{thu at plain}
@@ -2910,6 +2960,7 @@
 % 非常怪异:虽然正文前的封面部分为右开,但是英文摘要要跟中文摘要连
 % 续。\changes{v2.5.1}{2006/05/28}{研究生封面英文摘要连续。}
 %    \begin{macrocode}
+  \thu at setenglish
   \thu at chapter*[]{\eabstractname} % no tocline
 %    \end{macrocode}
 %
@@ -2931,8 +2982,9 @@
 %    \begin{macrocode}
   \ifthu at doctor\vfill\else\vskip12bp\fi
   \thu at put@keywords{%
-    \textbf{\ifthu at bachelor Keywords:\else Key Words:\fi\enskip}}{\thu at ekeywords}}
-%</cls>
+    \textbf{\ifthu at bachelor Keywords:\else Key Words:\fi\enskip}}{\thu at ekeywords}%
+  \thu at setdefaultlanguage
+}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2944,10 +2996,6 @@
 % \changes{v2.4}{2006/04/14}{为主要符号表环境增加一个可选参数,调节符号列的宽度。}
 % \changes{v5.2.1}{2016/01/11}{利用 \pkg{enumitem} 改造环境定义,更直观。}
 %    \begin{macrocode}
-%<*cfg>
-\newcommand{\thu at denotation@name}{主要符号对照表}
-%</cfg>
-%<*cls>
 \newenvironment{denotation}[1][2.5cm]{%
   \thu at chapter*[]{\thu at denotation@name} % no tocline
   \vskip-30bp\xiaosi[1.6]\begin{thu at denotation}[labelwidth=#1]
@@ -2965,7 +3013,6 @@
   labelsep*=0.5cm,
   itemindent=0pt,
 }
-%</cls>
 %    \end{macrocode}
 % \end{environment}
 %
@@ -2977,9 +3024,7 @@
 % 支持扫描文件替换。
 % \changes{v2.4}{2006/04/14}{调整\textbf{致谢}等中间的距离。}
 %    \begin{macrocode}
-%<*cfg>
-\newcommand{\thu at ackname}{致\hspace{1em}谢}
-\newcommand{\thu at declarename}{声\hspace{1em}明}
+\newcommand\thu at declarename{声\hspace{\ccwd}明}
 \newcommand{\thu at declaretext}{本人郑重声明:所呈交的学位论文,是本人在导师指导下
   ,独立进行研究工作所取得的成果。尽我所知,除文中已经注明引用的内容外,本学位论
   文的研究成果不包含任何他人享有著作权的内容。对本论文所涉及的研究工作做出贡献的
@@ -2986,7 +3031,6 @@
   其他个人和集体,均已在文中以明确方式标明。}
 \newcommand{\thu at signature}{签\hspace{1em}名:}
 \newcommand{\thu at backdate}{日\hspace{1em}期:}
-%</cfg>
 %    \end{macrocode}
 %
 % \changes{v2.0}{2005/12/19}{将致谢定义为一个环境更合适,里面也不用像以前段首需
@@ -3002,9 +3046,8 @@
 % \changes{v4.5.2}{2010/09/19}{研究生论文的致谢和声明终于分开了。}
 % \changes{v5.2.1}{2016/01/11}{用 \env{acknowledgement} 替换 \env{ack}。}
 %    \begin{macrocode}
-%<*cls>
 \NewDocumentEnvironment{acknowledgement}{o}{%
-    \thu at chapter*{\thu at ackname}
+    \thu at chapter*{\thu at ack@name}
   }
 %    \end{macrocode}
 %
@@ -3033,7 +3076,6 @@
 %    \begin{macrocode}
 \let\ack\acknowledgement
 \let\endack\endacknowledgement
-%</cls>
 %    \end{macrocode}
 % \end{environment}
 %
@@ -3051,7 +3093,6 @@
 % \changes{v4.5.1}{2009/01/06}{更优雅的插图/表格索引,避免跟 \pkg{caption} 包冲
 % 突。\cs{thu at listof} 相应修改。}
 %    \begin{macrocode}
-%<*cls>
 \def\thu at starttoc#1{% #1: float type, prepend type name in \listof*** entry.
   \let\oldnumberline\numberline
   \def\numberline##1{\oldnumberline{\csname #1name\endcsname\hskip.4em ##1}}
@@ -3103,7 +3144,6 @@
 %    \begin{macrocode}
 \newcommand\listofequations{\thu at listof{equation}}
 \let\l at equation\l at figure
-%</cls>
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -3119,12 +3159,10 @@
 % \changes{v5.0.0}{2015/11/23}{用 \cs{inlinecite} 替换 \cs{onlinecite}。为保证兼
 % 容性,\cs{onlinecite} 会保留。}
 %    \begin{macrocode}
-%<*cls>
 \newcommand\bibstyle at inline{\bibpunct{[}{]}{,}{n}{,}{,}}
 \DeclareRobustCommand\inlinecite{\@inlinecite}
 \def\@inlinecite#1{\begingroup\let\@cite\NAT at citenum\citep{#1}\endgroup}
 \let\onlinecite\inlinecite
-%</cls>
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3132,25 +3170,6 @@
 % 行距采用固定值 16 磅,段前空 3 磅,段后空 0 磅。
 % 本科生要求固定行距 17pt,段前后间距 3pt。
 %
-% \begin{macro}{\thumasterbib}
-% \begin{macro}{\thuphdbib}
-%   本科生和研究生模板要求外文硕士论文参考文献显示``[Master Thesis]'',而博士模板
-%   则于 2007 年冬要求显示为``[M]''。对应的外文博士论文参考文献分别显示为``[Phd
-%   Thesis]''和``[D]''。
-%   研究生写作指南(201109)要求:
-%   中文硕士学位论文标注``[硕士学位论文]'',
-%   中文博士学位论文标注``[博士学位论文]'',外文学位论文标注``[D]''。
-%   本科生写作指南未指定,参考文献著录格式文档中对中外文学位论文都标注``[D]''。
-% \changes{v4.7}{2012/05/29}{修改两个宏使其对应不同的中文论文需求。}
-%    \begin{macrocode}
-%<*cfg>
-\def\thumasterbib{\ifthu at bachelor D\else 硕士学位论文\fi}
-\def\thuphdbib{\ifthu at bachelor D\else 博士学位论文\fi}
-%</cfg>
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
 % 复用 \pkg{natbib} 的 \texttt{thebibliography} 环境,调整距离。
 % \changes{v2.4}{2006/04/15}{参考文献间距调小一点,label 长度增加一点,以便让超过
 %  100 的参考文献更好地对齐。}
@@ -3159,7 +3178,6 @@
 % \changes{v5.4.0}{2017/12/03}{基于 \pkg{natbib} 的环境调整距离兼容性更好。}
 % \changes{v5.4.4}{2018/04/14}{参考文献标号左对齐。}
 %    \begin{macrocode}
-%<*cls>
 \renewcommand\bibsection{\thu at chapter*{\bibname}}
 \renewcommand\bibfont{\ifthu at bachelor\wuhao[1.619]\else\wuhao[1.5]\fi}
 \setlength\bibhang{2\ccwd}
@@ -3234,7 +3252,6 @@
 }{%
   \def at NAT@last at yr{-\NAT at penalty}%
 }{}{}
-%</cls>
 %    \end{macrocode}
 %
 % \subsection{附录}
@@ -3242,7 +3259,6 @@
 % \begin{environment}{appendix}
 % 主要给本科做外文翻译用。
 %    \begin{macrocode}
-%<*cls>
 \let\thu at appendix\appendix
 \renewenvironment{appendix}{%
   \let\title\thu at appendix@title
@@ -3271,7 +3287,6 @@
 \newlist{translationbib}{enumerate}{1}
 \setlist[translationbib]{label=[\arabic*],align=left,nosep,itemsep=6bp,
   leftmargin=10mm,labelsep=!,before=\vspace{0.5\baselineskip}\wuhao[1.3]}
-%</cls>
 %    \end{macrocode}
 % \end{environment}
 %
@@ -3287,18 +3302,6 @@
 % \changes{v4.6}{2011/05/02}{支持可选参数,自己定义简历章节标题。}
 % 个人简历发表文章等。
 %    \begin{macrocode}
-%<*cfg>
-\ifthu at bachelor
-  \newcommand{\thu at resume@title}{在学期间参加课题的研究成果}
-\else
-  \ifthu at postdoctor
-    \newcommand{\thu at resume@title}{个人简历、发表的学术论文与科研成果}
-  \else
-    \newcommand{\thu at resume@title}{个人简历、在学期间发表的学术论文与研究成果}
-  \fi
-\fi
-%</cfg>
-%<*cls>
 \newenvironment{resume}[1][\thu at resume@title]{%
   \thu at chapter*{#1}}{}
 %    \end{macrocode}
@@ -3345,10 +3348,27 @@
 % 用 \cs{publicationskip}。
 %    \begin{macrocode}
 \def\publicationskip{\bigskip\bigskip}
-%</cls>
 %    \end{macrocode}
 % \end{macro}
 %
+% \subsection{其他宏包的设置}
+%
+% 这些宏包并非格式要求,但是为了方便同学们使用,在这里进行简单设置。
+%    \begin{macrocode}
+\newcommand\thu at atendpackage{\csname ctex_at_end_package:nn\endcsname}
+%    \end{macrocode}
+%
+% \subsubsection{\pkg{nomencl} 宏包}
+%
+% \changes{v5.5.0}{2018/12/09}{增加 \pkg{nomencl} 宏包的支持。}
+%    \begin{macrocode}
+\thu at atendpackage{nomencl}{
+  \let\nomname\thu at denotation@name
+  \def\thenomenclature{\begin{denotation}[\nom at tempdim]}
+  \def\endthenomenclature{\end{denotation}}
+}
+%    \end{macrocode}
+%
 % \subsection{书脊}
 % \label{sec:shuji}
 % \begin{macro}{\shuji}
@@ -3356,13 +3376,11 @@
 % \changes{v4.5}{2009/01/04}{简化代码,同时支持 \XeLaTeX。}
 % \changes{v5.0.0}{2015/12/21}{扩展 \cs{shuji}\oarg{标题}\oarg{作者}。}
 %    \begin{macrocode}
-%<*cls>
 \NewDocumentCommand{\shuji}{O{\thu at ctitle} O{\thu at cauthor}}{%
   \newpage\thispagestyle{empty}%
-  \fangsong\ifxetex\addCJKfontfeatures*{RawFeature={vertical:}}\fi
+  \fangsong\addCJKfontfeatures*{RawFeature={vertical:}}
   \xiaosan\ziju{0.4}%
   \noindent\hfill\rotatebox[origin=lt]{-90}{\makebox[\textheight]{#1\hfill#2}}}
-%</cls>
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3373,8 +3391,6 @@
 % 在模板文档结束时即装入配置文件,这样用户就能在导言区进行相应的修改。
 % \changes{v2.5}{2006/05/13}{不用 \cs{CJKcaption},在导言区直接引入配置文件。}
 %    \begin{macrocode}
-%<*cls>
-\AtEndOfClass{\input{thuthesis.cfg}}
 \AtEndOfClass{\sloppy}
 %</cls>
 %    \end{macrocode}
@@ -3385,6 +3401,7 @@
 %<*dtx-style>
 \ProvidesPackage{dtx-style}
 \RequirePackage{hypdoc}
+\RequirePackage{ifthen}
 \RequirePackage[UTF8,scheme=chinese]{ctex}
 \RequirePackage{newpxtext}
 \RequirePackage{newpxmath}
@@ -3400,6 +3417,10 @@
 \RequirePackage{etoolbox}
 \RequirePackage{metalogo}
 
+\ifthenelse{\equal{\@nameuse{g__ctex_fontset_tl}}{mac}}{%
+  \xeCJKsetwidth{‘’“”}{1em}
+}{}
+
 \colorlet{thu at macro}{blue!60!black}
 \colorlet{thu at env}{blue!70!black}
 \colorlet{thu at option}{purple}

Modified: trunk/Master/texmf-dist/source/latex/thuthesis/thuthesis.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/thuthesis/thuthesis.ins	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/source/latex/thuthesis/thuthesis.ins	2019-05-02 22:31:15 UTC (rev 50932)
@@ -1,5 +1,5 @@
 %%
-%% Copyright (C) 2005-2018 by Ruini Xue <xueruini at gmail.com>
+%% Copyright (C) 2005-2019 by Ruini Xue <xueruini at gmail.com>
 %%
 %% This file is part of the ThuThesis package project.
 %% ---------------------------------------------------
@@ -42,27 +42,7 @@
 
 \endpreamble
 
-\declarepreamble\cfgpreamble
-
-This is a generated file.
-
-Copyright (C) 2005-\the\year by Xue Ruini <xueruini at gmail.com>
-
-This work 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 2005/12/01 or later.
-
-This is the configuration file of the ThuThesis package with LaTeX2e.
-
-\endpreamble
-
 \generate{\file{\jobname.cls}{\from{\jobname.dtx}{cls}}
-          \usepreamble\cfgpreamble
-          \file{\jobname.cfg}{\from{\jobname.dtx}{cfg}}
           \usepreamble\defaultpreamble\usepostamble\defaultpostamble
           \file{dtx-style.sty}{\from{\jobname.dtx}{dtx-style}}}
 
@@ -75,7 +55,6 @@
   \Msg{* The recommended directory is TEXMF/tex/latex/thuthesis}
   \Msg{*}
   \Msg{* \space\space thuthesis.cls}
-  \Msg{* \space\space thuthesis.cfg}
   \Msg{* \space\space thuthesis-author-year.bst}
   \Msg{* \space\space thuthesis-numeric.bst}
   \Msg{*}

Deleted: trunk/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cfg	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cfg	2019-05-02 22:31:15 UTC (rev 50932)
@@ -1,182 +0,0 @@
-%%
-%% This is file `thuthesis.cfg',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% thuthesis.dtx  (with options: `cfg')
-%% 
-%% This is a generated file.
-%% 
-%% Copyright (C) 2005-2018 by Xue Ruini <xueruini at gmail.com>
-%% 
-%% This work 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 2005/12/01 or later.
-%% 
-%% This is the configuration file of the ThuThesis package with LaTeX2e.
-%% 
-
-\ProvidesFile{thuthesis.cfg}
-[2018/05/17 5.4.5 Tsinghua University Thesis Template]
-\theorembodyfont{\normalfont}
-\theoremheaderfont{\normalfont\heiti}
-\theoremsymbol{\ensuremath{\square}}
-\newtheorem*{proof}{证明}
-\theoremstyle{plain}
-\theoremsymbol{}
-\theoremseparator{:}
-\newtheorem{assumption}{假设}[chapter]
-\newtheorem{definition}{定义}[chapter]
-\newtheorem{proposition}{命题}[chapter]
-\newtheorem{lemma}{引理}[chapter]
-\newtheorem{theorem}{定理}[chapter]
-\newtheorem{axiom}{公理}[chapter]
-\newtheorem{corollary}{推论}[chapter]
-\newtheorem{exercise}{练习}[chapter]
-\newtheorem{example}{例}[chapter]
-\newtheorem{remark}{注释}[chapter]
-\newtheorem{problem}{问题}[chapter]
-\newtheorem{conjecture}{猜想}[chapter]
-\ctexset{%
-  chapter/name={第,章},
-  appendixname=附录,
-  contentsname={目\hspace{\ccwd}录},
-  listfigurename=插图索引,
-  listtablename=表格索引,
-  figurename=图,
-  tablename=表,
-  bibname=参考文献,
-  indexname=索引,
-}
-\newcommand\listequationname{公式索引}
-\newcommand\equationname{公式}
-\ifthu at bachelor
-  \newcommand{\cabstractname}{中文摘要}
-  \newcommand{\eabstractname}{ABSTRACT}
-\else
-  \newcommand{\cabstractname}{摘\hspace{\ccwd}要}
-  \newcommand{\eabstractname}{Abstract}
-\fi
-\let\CJK at todaysave=\today
-\def\CJK at todaysmall@short{\the\year 年 \the\month 月}
-\def\CJK at todaysmall{\the\year 年 \the\month 月 \the\day 日}
-\def\CJK at todaybig@short{\zhdigits{\the\year}年\zhnumber{\the\month}月}
-\def\CJK at todaybig{\zhdigits{\the\year}年\zhnumber{\the\month}月\zhnumber{\the\day}日}
-\def\CJK at today{\CJK at todaysmall}
-\renewcommand\today{\CJK at today}
-\newcommand\CJKtoday[1][1]{%
-  \ifcase#1\def\CJK at today{\CJK at todaysave}
-    \or\def\CJK at today{\CJK at todaysmall}
-    \or\def\CJK at today{\CJK at todaybig}
-  \fi}
-\def\thu at ckeywords@separator{;}
-\def\thu at ekeywords@separator{;}
-\def\thu at catalog@number at title{分类号}
-\def\thu at id@title{编号}
-\def\thu at title@sep{:}
-\ifthu at postdoctor
-  \def\thu at secretlevel{密级}
-\else
-  \def\thu at secretlevel{秘密}
-\fi
-\def\thu at secretyear{\the\year}
-\def\thu at schoolname{清华大学}
-\def\thu at postdoctor@report at title{博士后研究报告}
-\def\thu at bachelor@subtitle{综合论文训练}
-\def\thu at bachelor@title at pre{题目}
-\def\thu at postdoctor@date at title{研究起止日期}
-\ifthu at postdoctor
-  \def\thu at author@title{博士后姓名}
-\else
-  \ifthu at bachelor
-    \def\thu at author@title{姓名}
-  \else
-    \def\thu at author@title{研究生}
-  \fi
-\fi
-\def\thu at postdoctor@first at discipline@title{流动站(一级学科)名称}
-\def\thu at postdoctor@second at discipline@title{专\hspace{1em}业(二级学科)名称}
-\def\thu at secret@content{%
-  \unskip\ifthu at master$\bigstar$ \fi%
-  \ifthu at doctor$\bigstar$ \fi%
-  \thu at secretyear 年}
-\def\thu at apply{(申请清华大学\thu at cdegree 学位论文)}
-\ifthu at bachelor
-  \def\thu at department@title{系别}
-  \def\thu at major@title{专业}
-\else
-  \def\thu at department@title{培养单位}
-  \def\thu at major@title{学科}
-\fi
-\ifthu at postdoctor
-  \def\thu at supervisor@title{合作导师}
-\else
-  \def\thu at supervisor@title{指导教师}
-\fi
-\ifthu at bachelor
-  \def\thu at assosuper@title{辅导教师}
-\else
-  \def\thu at assosuper@title{副指导教师}
-\fi
-\def\thu at cosuper@title{%
-  \ifthu at doctor 联合导师\else \ifthu at master 联合指导教师\fi\fi}
-\cdate{\ifthu at bachelor\CJK at todaysmall\else\CJK at todaybig@short\fi}
-\edate{\ifcase \month \or January\or February\or March\or April\or May%
-       \or June\or July \or August\or September\or October\or November
-       \or December\fi\unskip,\ \ \the\year}
-\newcommand{\thu at authtitle}{关于学位论文使用授权的说明}
-\newcommand{\thu at authorization}{%
-\ifthu at bachelor
-本人完全了解清华大学有关保留、使用学位论文的规定,即:学校有权保留学位
-论文的复印件,允许该论文被查阅和借阅;学校可以公布该论文的全部或部分内
-容,可以采用影印、缩印或其他复制手段保存该论文。
-\else
-本人完全了解清华大学有关保留、使用学位论文的规定,即:
-
-清华大学拥有在著作权法规定范围内学位论文的使用权,其中包括:(1)已获学位的研究生
-必须按学校规定提交学位论文,学校可以采用影印、缩印或其他复制手段保存研究生上交的
-学位论文;(2)为教学和科研目的,学校可以将公开的学位论文作为资料在图书馆、资料
-室等场所供校内师生阅读,或在校园网上供校内师生浏览部分内容\ifthu at master 。\else ;
-(3)根据《中华人民共和国学位条例暂行实施办法》,向国家图书馆报送可以公开的学位
-论文。\fi
-
-本人保证遵守上述规定。
-\fi}
-\newcommand{\thu at authorizationaddon}{%
-  \ifthu at bachelor(涉密的学位论文在解密后应遵守此规定)\else (保密的论文在解密后应遵守此规定)\fi}
-\newcommand{\thu at authorsig}{\ifthu at bachelor 签\hskip1em名:\else 作者签名:\fi}
-\newcommand{\thu at teachersig}{导师签名:}
-\newcommand{\thu at frontdate}{%
-  日\ifthu at bachelor\hspace{1em}\else\hspace{2em}\fi 期:}
-\newcommand{\thu at ckeywords@title}{关键词:}
-\def\thu at master@art{Master of Arts}
-\def\thu at master@sci{Master of Science}
-\def\thu at doctor@phi{Doctor of Philosophy}
-\newcommand{\thu at denotation@name}{主要符号对照表}
-\newcommand{\thu at ackname}{致\hspace{1em}谢}
-\newcommand{\thu at declarename}{声\hspace{1em}明}
-\newcommand{\thu at declaretext}{本人郑重声明:所呈交的学位论文,是本人在导师指导下
-  ,独立进行研究工作所取得的成果。尽我所知,除文中已经注明引用的内容外,本学位论
-  文的研究成果不包含任何他人享有著作权的内容。对本论文所涉及的研究工作做出贡献的
-  其他个人和集体,均已在文中以明确方式标明。}
-\newcommand{\thu at signature}{签\hspace{1em}名:}
-\newcommand{\thu at backdate}{日\hspace{1em}期:}
-\def\thumasterbib{\ifthu at bachelor D\else 硕士学位论文\fi}
-\def\thuphdbib{\ifthu at bachelor D\else 博士学位论文\fi}
-\ifthu at bachelor
-  \newcommand{\thu at resume@title}{在学期间参加课题的研究成果}
-\else
-  \ifthu at postdoctor
-    \newcommand{\thu at resume@title}{个人简历、发表的学术论文与科研成果}
-  \else
-    \newcommand{\thu at resume@title}{个人简历、在学期间发表的学术论文与研究成果}
-  \fi
-\fi
-\endinput
-%%
-%% End of file `thuthesis.cfg'.

Modified: trunk/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls	2019-05-02 22:30:47 UTC (rev 50931)
+++ trunk/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls	2019-05-02 22:31:15 UTC (rev 50932)
@@ -8,7 +8,7 @@
 %% 
 %% This is a generated file.
 %% 
-%% Copyright (C) 2005-2018 by Ruini Xue <xueruini at gmail.com>
+%% Copyright (C) 2005-2019 by Ruini Xue <xueruini at gmail.com>
 %% 
 %% This work may be distributed and/or modified under the
 %% conditions of the LaTeX Project Public License, either version 1.3
@@ -21,69 +21,52 @@
 %% To produce the documentation run the original source files ending with `.dtx'
 %% through LaTeX.
 %% 
-
 \NeedsTeXFormat{LaTeX2e}[1999/12/01]
 \ProvidesClass{thuthesis}
-[2018/05/17 5.4.5 Tsinghua University Thesis Template]
+[2019/04/27 5.5.2 Tsinghua University Thesis Template]
+\RequirePackage{ifxetex}
+\ifxetex\else
+  \ClassError{thuthesis}{You should use XeLaTeX}{}
+  \end{document}
+\fi
 \hyphenation{Thu-Thesis}
-\def\thuthesis{\textsc{ThuThesis}}
-\def\version{5.4.5}
-
+\def\thuthesis{ThuThesis}
+\def\version{5.5.2}
 \RequirePackage{kvoptions}
 \SetupKeyvalOptions{
   family=thu,
   prefix=thu@,
   setkeys=\kvsetkeys}
-\newif\ifthu at bachelor
-\newif\ifthu at master
-\newif\ifthu at doctor
-\newif\ifthu at postdoctor
-\define at key{thu}{degree}{%
-  \thu at bachelorfalse
-  \thu at masterfalse
-  \thu at doctorfalse
-  \thu at postdoctorfalse
-  \expandafter\csname thu@#1true\endcsname}
-\define at key{thu}{type}{%
-  \ClassError{thuthesis}{'type' is deprecated, \MessageBreak
-                         please use 'degree=#1' instead}{}}
-\def\thu at deprecated@degree at option{%
-  \ClassError{thuthesis}{Option '\CurrentOption' is deprecated, \MessageBreak
-                         please use 'degree=\CurrentOption' instead}{}}
-\DeclareVoidOption{bachelor}{\thu at deprecated@degree at option}
-\DeclareVoidOption{master}{\thu at deprecated@degree at option}
-\DeclareVoidOption{doctor}{\thu at deprecated@degree at option}
-\DeclareVoidOption{postdoctor}{\thu at deprecated@degree at option}
+\DeclareStringOption[doctor]{degree}[doctor]
+\DeclareStringOption[chinese]{language}[chinese]
 \DeclareBoolOption{secret}
 \DeclareBoolOption{tocarialchapter}
 \DeclareBoolOption{tocarialchapterentry}
 \DeclareBoolOption{tocarialchapterpage}
-\DeclareBoolOption{raggedbottom}
-\DeclareBoolOption{pifootnote}
+\DeclareBoolOption[true]{raggedbottom}
 \DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}}
-\kvsetkeys{thu}{%
-  raggedbottom}
 \ProcessKeyvalOptions*
-\ifthu at bachelor\relax\else
-  \ifthu at master\relax\else
-    \ifthu at doctor\relax\else
-      \ifthu at postdoctor\relax\else
-        \ClassError{thuthesis}%
-                   {Please specify thesis degree in option: \MessageBreak
-                    degree=[bachelor | master | doctor | postdoctor]}{}
-      \fi
-    \fi
-  \fi
-\fi
-\PassOptionsToPackage{no-math}{fontspec}
+\newcommand\thu at validate@key[1]{%
+  \@ifundefined{thu@\csname thu@#1\endcsname true}{%
+    \ClassError{thuthesis}{Invalid value '\csname thu@#1\endcsname'}{}%
+  }{%
+    \csname thu@\csname thu@#1\endcsname true\endcsname
+  }%
+}
+\newif\ifthu at bachelor
+\newif\ifthu at master
+\newif\ifthu at doctor
+\newif\ifthu at postdoctor
+\thu at validate@key{degree}
+\newif\ifthu at chinese
+\newif\ifthu at english
+\thu at validate@key{language}
+\PassOptionsToPackage{quiet}{xeCJK}
 \LoadClass[a4paper,openany,UTF8,zihao=-4,scheme=plain]{ctexbook}
 \RequirePackage{etoolbox}
-\RequirePackage{ifxetex}
 \RequirePackage{xparse}
 \RequirePackage{amsmath}
-\RequirePackage[defaultsups]{newtxtext}
-\RequirePackage{newtxmath}
-\RequirePackage{courier}
+\RequirePackage{unicode-math}
 \RequirePackage{graphicx}
 \RequirePackage[labelformat=simple]{subcaption}
 \RequirePackage{pdfpages}
@@ -96,9 +79,6 @@
 \else
   \RequirePackage[perpage,hang]{footmisc}
 \fi
-\ifthu at pifootnote
-  \RequirePackage{pifont}
-\fi
 \RequirePackage{CJKfntef}
 \RequirePackage[amsmath,thmmarks,hyperref]{ntheorem}
 \RequirePackage{array}
@@ -106,24 +86,29 @@
 \RequirePackage{booktabs}
 \RequirePackage[sort&compress]{natbib}
 \RequirePackage{hyperref}
-\ifxetex
-  \hypersetup{%
-    CJKbookmarks=true}
-\else
-  \hypersetup{%
-    unicode=true,
-    CJKbookmarks=false}
-\fi
-\hypersetup{%
-  linktoc=all,
-  bookmarksnumbered=true,
-  bookmarksopen=true,
-  bookmarksopenlevel=1,
-  breaklinks=true,
-  colorlinks=false,
-  plainpages=false,
-  pdfborder=0 0 0}
+\hypersetup{
+  linktoc            = all,
+  bookmarksnumbered  = true,
+  bookmarksopen      = true,
+  bookmarksopenlevel = 1,
+  breaklinks         = true,
+  plainpages         = false,
+  hidelinks,
+}
+\pdfstringdefDisableCommands{
+  \let\\\@empty
+  \let\hspace\@gobble
+}
 \urlstyle{same}
+\def\UrlBreaks{%
+  \do\/%
+  \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k\do\l%
+     \do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z%
+  \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L%
+     \do\M\do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\Y\do\Z%
+  \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9\do=\do/\do.\do:%
+  \do\*\do\-\do\~\do\'\do\"\do\-}
+\Urlmuskip=0mu plus 0.1mu
 \RequirePackage{geometry}
 \geometry{
   a4paper, % 210 * 297mm
@@ -156,7 +141,7 @@
 \renewcommand\frontmatter{%
   \if at openright\cleardoublepage\else\clearpage\fi
   \@mainmatterfalse
-  \pagenumbering{Roman}
+  \pagenumbering{Alph}
   \pagestyle{thu at empty}}
 \renewcommand\mainmatter{%
   \if at openright\cleardoublepage\else\clearpage\fi
@@ -167,13 +152,71 @@
   \if at openright\cleardoublepage\else\clearpage\fi
   \@mainmattertrue}
 \newcommand\thu at fontset{\csname g__ctex_fontset_tl\endcsname}
+\ifthenelse{\equal{\thu at fontset}{fandol}}{
+  \setmainfont[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+  ]{texgyretermes}
+  \setsansfont[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+  ]{texgyreheros}
+  \setmonofont[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+    Scale          = MatchLowercase,
+  ]{texgyrecursor}
+}{
+  \setmainfont{Times New Roman}
+  \setsansfont{Arial}
+  \ifthenelse{\equal{\thu at fontset}{mac}}{
+    \setmonofont[Scale=MatchLowercase]{Menlo}
+  }{
+    \setmonofont[Scale=MatchLowercase]{Courier New}
+  }
+}
+\unimathsetup{
+  math-style = ISO,
+  bold-style = ISO,
+  nabla      = upright,
+  partial    = upright,
+}
+\IfFontExistsTF{XITSMath-Regular.otf}{
+  \setmathfont[
+    Extension    = .otf,
+    BoldFont     = XITSMath-Bold,
+    StylisticSet = 8,
+  ]{XITSMath-Regular}
+  \setmathfont[range={cal,bfcal},StylisticSet=1]{XITSMath-Regular.otf}
+}{
+  \setmathfont[
+    Extension    = .otf,
+    BoldFont     = *bold,
+    StylisticSet = 8,
+  ]{xits-math}
+  \setmathfont[range={cal,bfcal},StylisticSet=1]{xits-math.otf}
+}
 \ifthenelse{\equal{\thu at fontset}{windows}}{
-  \ifxetex
-    \setCJKsansfont{SimHei}
-  \else
-    \setCJKsansfont{simhei.ttf}
-    \csname ctex_punct_map_family:nn\endcsname{\CJKsfdefault}{zhhei}
-  \fi
+  \xeCJKsetup{EmboldenFactor=2}
+  \IfFileExists{C:/bootfont.bin}{
+    \setCJKmainfont[AutoFakeBold,ItalicFont=KaiTi_GB2312]{SimSun}
+    \setCJKfamilyfont{zhkai}[AutoFakeBold]{KaiTi_GB2312}
+  }{
+    \setCJKmainfont[AutoFakeBold,ItalicFont=KaiTi]{SimSun}
+    \setCJKfamilyfont{zhkai}[AutoFakeBold]{KaiTi}
+  }
+  \setCJKsansfont[AutoFakeBold]{SimHei}
+  \setCJKfamilyfont{zhsong}[AutoFakeBold]{SimSun}
+  \setCJKfamilyfont{zhhei}[AutoFakeBold]{SimHei}
 }{}
 \ifthenelse{\equal{\thu at fontset}{mac}}{
   \setCJKmainfont[
@@ -180,15 +223,16 @@
          UprightFont = * Light,
             BoldFont = * Bold,
           ItalicFont = Kaiti SC,
-      BoldItalicFont = Kaiti SC Bold
+      BoldItalicFont = Kaiti SC Bold,
     ]{Songti SC}
-  \setCJKsansfont{Heiti SC}
+  \setCJKsansfont[BoldFont=* Medium]{Heiti SC}
   \setCJKfamilyfont{zhsong}[
          UprightFont = * Light,
             BoldFont = * Bold,
     ]{Songti SC}
-  \setCJKfamilyfont{zhhei}{Heiti SC}
-  \setCJKfamilyfont{zhkai}{Kaiti SC}
+  \setCJKfamilyfont{zhhei}[BoldFont=* Medium]{Heiti SC}
+  \setCJKfamilyfont{zhkai}[BoldFont=* Bold]{Kaiti SC}
+  \xeCJKsetwidth{‘’“”}{1em}
 }{}
 \renewcommand\normalsize{%
   \@setfontsize\normalsize{12bp}{20bp}%
@@ -217,6 +261,94 @@
 \thu at def@fontsize{xiaoliu}{6.5bp}
 \thu at def@fontsize{qihao}{5.5bp}
 \thu at def@fontsize{bahao}{5bp}
+\newcommand\thu at setchinese{%
+  \xeCJKResetPunctClass
+}
+\newcommand\thu at setenglish{%
+  \xeCJKDeclareCharClass{HalfLeft}{"2018, "201C}%
+  \xeCJKDeclareCharClass{HalfRight}{
+    "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A,
+  }%
+}
+\newcommand\thu at setdefaultlanguage{%
+  \ifthu at chinese
+    \thu at setchinese
+  \else
+    \thu at setenglish
+  \fi
+}
+\ifthu at chinese
+  \ctexset{
+    chapter/name   = {第,章},
+    appendixname   = 附录,
+    contentsname   = {目\hspace{\ccwd}录},
+    listfigurename = 插图索引,
+    listtablename  = 表格索引,
+    figurename     = 图,
+    tablename      = 表,
+    bibname        = 参考文献,
+    indexname      = 索引,
+  }
+  \newcommand\thu at denotation@name{主要符号对照表}
+  \newcommand\listequationname{公式索引}
+  \newcommand\equationname{公式}
+  \newcommand\thu at assumption@name{假设}
+  \newcommand\thu at definition@name{定义}
+  \newcommand\thu at proposition@name{命题}
+  \newcommand\thu at lemma@name{引理}
+  \newcommand\thu at theorem@name{定理}
+  \newcommand\thu at axiom@name{公理}
+  \newcommand\thu at corollary@name{推论}
+  \newcommand\thu at exercise@name{练习}
+  \newcommand\thu at example@name{例}
+  \newcommand\thu at remark@name{注释}
+  \newcommand\thu at problem@name{问题}
+  \newcommand\thu at conjecture@name{猜想}
+  \newcommand\thu at proof@name{证明}
+  \newcommand\thu at theorem@separator{:}
+  \newcommand\thu at ack@name{致\hspace{\ccwd}谢}
+  \ifthu at bachelor
+    \newcommand\thu at resume@title{在学期间参加课题的研究成果}
+  \else
+    \ifthu at postdoctor
+      \newcommand\thu at resume@title{个人简历、发表的学术论文与科研成果}
+    \else
+      \newcommand\thu at resume@title{个人简历、在学期间发表的学术论文与研究成果}
+    \fi
+  \fi
+\else
+  \newcommand\thu at denotation@name{Nomenclature}
+  \newcommand\listequationname{List of Equations}
+  \newcommand\equationname{Equation}
+  \newcommand\thu at assumption@name{Assumption}
+  \newcommand\thu at definition@name{Definition}
+  \newcommand\thu at proposition@name{Proposition}
+  \newcommand\thu at lemma@name{Lemma}
+  \newcommand\thu at theorem@name{Theorem}
+  \newcommand\thu at axiom@name{Axiom}
+  \newcommand\thu at corollary@name{Corollary}
+  \newcommand\thu at exercise@name{Exercise}
+  \newcommand\thu at example@name{Example}
+  \newcommand\thu at remark@name{Remark}
+  \newcommand\thu at problem@name{Problem}
+  \newcommand\thu at conjecture@name{Conjecture}
+  \newcommand\thu at proof@name{proof}
+  \newcommand\thu at theorem@separator{: }
+  \newcommand\thu at ack@name{Acknowledgments}
+  \ifthu at bachelor
+    \newcommand\thu at resume@title{Research Achievements}
+  \else
+    \ifthu at postdoctor
+      \newcommand\thu at resume@title{%
+        Resume, Publications and Research Achievements%
+      }
+    \else
+      \newcommand\thu at resume@title{%
+        Resume, Publications and Research Achievements%
+      }
+    \fi
+  \fi
+\fi
 \fancypagestyle{thu at empty}{%
   \fancyhf{}
   \renewcommand{\headrulewidth}{0pt}
@@ -238,16 +370,26 @@
   space=auto,
   autoindent=true}
 \setlist{nosep}
+\ifthenelse{\equal{\thu at fontset}{mac}}{
+  \newfontfamily\thu at circlefont{Songti SC Light}
+}{
+  \ifthenelse{\equal{\thu at fontset}{windows}}{
+    \newfontfamily\thu at circlefont{SimSun}
+  }{
+    \IfFontExistsTF{XITS-Regular.otf}{
+      \newfontfamily\thu at circlefont{XITS-Regular.otf}
+    }{
+      \newfontfamily\thu at circlefont{xits-regular.otf}
+    }
+  }
+}
 \def\thu at textcircled#1{%
-  \ifnum\value{#1} >9
+  \ifnum\value{#1} >9%
     \ClassError{thuthesis}%
-      {Too many footnotes in this page.}{Keep footnote less than 10.}
+      {Too many footnotes in this page.}{Keep footnote less than 10.}%
   \fi
-  \ifthu at pifootnote%
-    \ding{\the\numexpr\value{#1}+171\relax}%
-  \else%
-    \textcircled{\xiaoliu\arabic{#1}}%
-  \fi}
+  {\thu at circlefont\symbol{\the\numexpr\value{#1}+"245F\relax}}%
+}
 \renewcommand{\thefootnote}{\thu at textcircled{footnote}}
 \renewcommand{\thempfootnote}{\thu at textcircled{mpfootnote}}
 \def\footnoterule{\vskip-3\p@\hrule\@width0.3\textwidth\@height0.4\p@\vskip2.6\p@}
@@ -258,6 +400,32 @@
 \def\thu@@makefnmark{\hbox{{\normalfont\@thefnmark}}}
 \pretocmd{\@makefntext}{\let\@makefnmark\thu@@makefnmark}{}{}
 \apptocmd{\@makefntext}{\let\@makefnmark\thu at makefnmark}{}{}
+\ifthu at chinese
+  \def\mathellipsis{\cdots}
+\fi
+\protected\def\le{\leqslant}
+\protected\def\ge{\geqslant}
+\AtBeginDocument{%
+  \renewcommand\leq{\leqslant}%
+  \renewcommand\geq{\geqslant}%
+}
+\removenolimits{%
+  \int\iint\iiint\iiiint\oint\oiint\oiiint
+  \intclockwise\varointclockwise\ointctrclockwise\sumint
+  \intbar\intBar\fint\cirfnint\awint\rppolint
+  \scpolint\npolint\pointint\sqint\intlarhk\intx
+  \intcap\intcup\upint\lowint
+}
+\AtBeginDocument{%
+  \renewcommand{\Re}{\operatorname{Re}}%
+  \renewcommand{\Im}{\operatorname{Im}}%
+}
+\AtBeginDocument{%
+  \renewcommand\nabla{\mbfnabla}%
+}
+\newcommand\bm{\symbf}
+\renewcommand\boldsymbol{\symbf}
+\newcommand\square{\mdlgwhtsquare}
 \allowdisplaybreaks[4]
 \renewcommand\theequation{\ifnum \c at chapter>\z@ \thechapter-\fi\@arabic\c at equation}
 \def\make at df@tag{\@ifstar\thu at make@df at tag@@\make at df@tag@@@}
@@ -273,9 +441,28 @@
 \def\thu at maketag#1{\maketag@@@{(\ignorespaces #1\unskip\@@italiccorr)}}
 \def\tagform@#1{\maketag@@@{(\ignorespaces #1\unskip\@@italiccorr)\equcaption{#1}}}
 \renewcommand{\eqref}[1]{\textup{(\ref{#1})}}
-\setlength{\floatsep}{20bp \@plus4pt \@minus1pt}
-\setlength{\intextsep}{20bp \@plus4pt \@minus2pt}
-\setlength{\textfloatsep}{20bp \@plus4pt \@minus2pt}
+\theorembodyfont{\normalfont}
+\theoremheaderfont{\normalfont\sffamily}
+\theoremsymbol{\ensuremath{\square}}
+\newtheorem*{proof}{\thu at proof@name}
+\theoremstyle{plain}
+\theoremsymbol{}
+\theoremseparator{\thu at theorem@separator}
+\newtheorem{assumption}{\thu at assumption@name}[chapter]
+\newtheorem{definition}{\thu at definition@name}[chapter]
+\newtheorem{proposition}{\thu at proposition@name}[chapter]
+\newtheorem{lemma}{\thu at lemma@name}[chapter]
+\newtheorem{theorem}{\thu at theorem@name}[chapter]
+\newtheorem{axiom}{\thu at axiom@name}[chapter]
+\newtheorem{corollary}{\thu at corollary@name}[chapter]
+\newtheorem{exercise}{\thu at exercise@name}[chapter]
+\newtheorem{example}{\thu at example@name}[chapter]
+\newtheorem{remark}{\thu at remark@name}[chapter]
+\newtheorem{problem}{\thu at problem@name}[chapter]
+\newtheorem{conjecture}{\thu at conjecture@name}[chapter]
+\setlength{\floatsep}{12bp \@plus 2bp \@minus 4bp}
+\setlength{\textfloatsep}{12bp}
+\setlength{\intextsep}{12bp}
 \setlength{\@fptop}{0bp \@plus1.0fil}
 \setlength{\@fpsep}{12bp \@plus2.0fil}
 \setlength{\@fpbot}{0bp \@plus1.0fil}
@@ -289,12 +476,15 @@
 \fi
 \let\old at tabular\@tabular
 \def\thu at tabular{\dawu[1.5]\old at tabular}
-\DeclareCaptionLabelFormat{thu}{{\dawu[1.5]\normalfont #1~#2}}
-\DeclareCaptionLabelSeparator{thu}{\hspace{1em}}
-\DeclareCaptionFont{thu}{\dawu[1.5]}
-\captionsetup{labelformat=thu,labelsep=thu,font=thu,skip=6bp}
-\captionsetup[table]{position=top}
-\captionsetup[figure]{position=bottom}
+\DeclareCaptionFont{thu}{\dawu[1.3]}
+\DeclareCaptionLabelSeparator{thu}{\hspace{\ccwd}}
+\captionsetup{
+  font           = thu,
+  labelsep       = thu,
+  skip           = 6bp,
+  figureposition = bottom,
+  tableposition  = top,
+}
 \captionsetup[sub]{font=thu}
 \renewcommand{\thesubfigure}{(\alph{subfigure})}
 \renewcommand{\thesubtable}{(\alph{subtable})}
@@ -303,6 +493,25 @@
 \def\hlinewd#1{%
   \noalign{\ifnum0=`}\fi\hrule \@height #1 \futurelet
     \reserved at a\@xhline}
+\ifthu at bachelor
+  \newcommand{\cabstractname}{中文摘要}
+  \newcommand{\eabstractname}{ABSTRACT}
+\else
+  \newcommand{\cabstractname}{摘\hspace{\ccwd}要}
+  \newcommand{\eabstractname}{Abstract}
+\fi
+\let\CJK at todaysave=\today
+\def\CJK at todaysmall@short{\the\year 年 \the\month 月}
+\def\CJK at todaysmall{\the\year 年 \the\month 月 \the\day 日}
+\def\CJK at todaybig@short{\zhdigits{\the\year}年\zhnumber{\the\month}月}
+\def\CJK at todaybig{\zhdigits{\the\year}年\zhnumber{\the\month}月\zhnumber{\the\day}日}
+\def\CJK at today{\CJK at todaysmall}
+\renewcommand\today{\CJK at today}
+\newcommand\CJKtoday[1][1]{%
+  \ifcase#1\def\CJK at today{\CJK at todaysave}
+    \or\def\CJK at today{\CJK at todaysmall}
+    \or\def\CJK at today{\CJK at todaybig}
+  \fi}
 \AtBeginDocument{%
   \pagestyle{thu at empty}
   \renewcommand{\chaptermark}[1]{\@mkboth{\CTEXthechapter\hskip\ccwd#1}{}}}
@@ -432,25 +641,9 @@
 \thu at def@term{cdegree}
 \thu at def@term{edegree}
 \thu at def@term{cdepartment}
-\def\caffil{% for compatibility
-  \ClassWarning{thuthesis}
-    {'\string\caffil' is deprecated, please use '\string\cdepartment' instead.}{}%
-  \cdepartment}
 \thu at def@term{edepartment}
-\def\eaffil{% for compability
-  \ClassWarning{thuthesis}
-    {'\string\eaffil' is deprecated, please use '\string\edepartment' instead.}{}%
-  \edepartment}
 \thu at def@term{cmajor}
-\def\csubject{% for compatibility
-  \ClassWarning{thuthesis}
-    {'\string\csubject' is deprecated, please use '\string\cmajor' instead.}{}%
-  \cmajor}
 \thu at def@term{emajor}
-\def\esubject{%for compability
-  \ClassWarning{thuthesis}
-    {'\string\esubject' is deprecated, please use '\string\emajor' instead.}{}%
-  \emajor}
 \thu at def@term{cdate}
 \thu at def@term{edate}
 \thu at def@term{id}
@@ -459,6 +652,8 @@
 \thu at def@term{cfirstdiscipline}
 \thu at def@term{cseconddiscipline}
 \thu at def@term{postdoctordate}
+\thu at def@term{postdocstartdate}
+\thu at def@term{postdocenddate}
 \newcommand{\thu@@cabstract}[1]{\long\gdef\thu at cabstract{#1}}
 \newenvironment{cabstract}{\Collect at Body\thu@@cabstract}{}
 \newcommand{\thu@@eabstract}[1]{\long\gdef\thu at eabstract{#1}}
@@ -477,64 +672,154 @@
 \thu at parse@keywords{ckeywords}
 \thu at parse@keywords{ekeywords}
 \def\thusetup{\kvsetkeys{thu}}
+\def\thu at ckeywords@separator{;}
+\def\thu at ekeywords@separator{;}
+\def\thu at title@sep{:}
+\ifthu at postdoctor
+  \def\thu at secretlevel{密级}
+\else
+  \def\thu at secretlevel{秘密}
+\fi
+\def\thu at secretyear{\the\year}
+\def\thu at schoolname{清华大学}
+\def\thu at bachelor@subtitle{综合论文训练}
+\def\thu at bachelor@title at pre{题目}
+\def\thu at postdoctor@date at title{研究起止日期}
+\ifthu at postdoctor
+  \def\thu at author@title{博士后姓名}
+\else
+  \ifthu at bachelor
+    \def\thu at author@title{姓名}
+  \else
+    \def\thu at author@title{研究生}
+  \fi
+\fi
+\def\thu at postdoctor@first at discipline@title{流动站(一级学科)名称}
+\def\thu at postdoctor@second at discipline@title{专\hspace{1em}业(二级学科)名称}
+\def\thu at secret@content{%
+  \unskip\ifthu at master$\bigstar$ \fi%
+  \ifthu at doctor$\bigstar$ \fi%
+  \thu at secretyear 年}
+\def\thu at apply{(申请清华大学\thu at cdegree 学位论文)}
+\ifthu at bachelor
+  \def\thu at department@title{系别}
+  \def\thu at major@title{专业}
+\else
+  \def\thu at department@title{培养单位}
+  \def\thu at major@title{学科}
+\fi
+\ifthu at postdoctor
+  \def\thu at supervisor@title{合作导师}
+\else
+  \def\thu at supervisor@title{指导教师}
+\fi
+\ifthu at bachelor
+  \def\thu at assosuper@title{辅导教师}
+\else
+  \def\thu at assosuper@title{副指导教师}
+\fi
+\def\thu at cosuper@title{%
+  \ifthu at doctor 联合导师\else \ifthu at master 联合指导教师\fi\fi}
+\cdate{\ifthu at bachelor\CJK at todaysmall\else\ifthu at postdoctor\CJK at todaysmall@short\else\CJK at todaybig@short\fi\fi}
+\edate{\ifcase \month \or January\or February\or March\or April\or May%
+       \or June\or July \or August\or September\or October\or November
+       \or December\fi\unskip,\ \ \the\year}
+\newcommand{\thu at authtitle}{关于学位论文使用授权的说明}
+\newcommand{\thu at authorization}{%
+\ifthu at bachelor
+本人完全了解清华大学有关保留、使用学位论文的规定,即:学校有权保留学位
+论文的复印件,允许该论文被查阅和借阅;学校可以公布该论文的全部或部分内
+容,可以采用影印、缩印或其他复制手段保存该论文。
+\else
+本人完全了解清华大学有关保留、使用学位论文的规定,即:
+
+清华大学拥有在著作权法规定范围内学位论文的使用权,其中包括:(1)已获学位的研究生
+必须按学校规定提交学位论文,学校可以采用影印、缩印或其他复制手段保存研究生上交的
+学位论文;(2)为教学和科研目的,学校可以将公开的学位论文作为资料在图书馆、资料
+室等场所供校内师生阅读,或在校园网上供校内师生浏览部分内容\ifthu at master 。\else ;
+(3)根据《中华人民共和国学位条例暂行实施办法》,向国家图书馆报送可以公开的学位
+论文。\fi
+
+本人保证遵守上述规定。
+\fi}
+\newcommand{\thu at authorizationaddon}{%
+  \ifthu at bachelor(涉密的学位论文在解密后应遵守此规定)\else (保密的论文在解密后应遵守此规定)\fi}
+\newcommand{\thu at authorsig}{\ifthu at bachelor 签\hskip1em名:\else 作者签名:\fi}
+\newcommand{\thu at teachersig}{导师签名:}
+\newcommand{\thu at frontdate}{%
+  日\ifthu at bachelor\hspace{1em}\else\hspace{2em}\fi 期:}
+\newcommand{\thu at ckeywords@title}{关键词:}
 \newcommand\thu at underline[2][6em]{\hskip1pt\underline{\hb at xt@ #1{\hss#2\hss}}\hskip3pt}
+\newcommand\thu at CJKunderline[2][6em]{\CJKunderline*{\hb at xt@ #1{\hss#2\hss}}}
 \newlength{\thu at title@width}
-\ifxetex % todo: ugly codes
-  \newcommand{\thu at put@title}[2][\thu at title@width]{%
+\newcommand{\thu at put@title}[2][\thu at title@width]{%
   \begin{CJKfilltwosides}[b]{#1}#2\end{CJKfilltwosides}}
-\else
-  \newcommand{\thu at put@title}[2][\thu at title@width]{%
-  \begin{CJKfilltwosides}{#1}#2\end{CJKfilltwosides}}
-\fi
 \def\thu at first@titlepage{%
   \ifthu at postdoctor\thu at first@titlepage at postdoctor\else\thu at first@titlepage at other\fi}
-\newcommand{\thu at first@titlepage at postdoctor}{
-  \begin{center}
-    \setlength{\thu at title@width}{3em}
-    \vspace*{0.7cm}
-    \begingroup\wuhao[1.5]%
-    \thu at put@title{\thu at catalog@number at title}\thu at underline\thu at catalognumber\hfill%
-    \thu at put@title{\thu at secretlevel}%
-      \expandafter\thu at underline\ifthu at secret\thu at secret@content\else\relax\fi\par
-    \thu at put@title{U D C}\thu at underline\thu at udc\hfill%
-    \thu at put@title{\thu at id@title}\thu at underline\thu at id\par\vskip3cm\endgroup
-    \begingroup\heiti
-      {\xiaochu\ziju{1}\thu at schoolname}\par\vskip2cm
-      {\xiaoyi\ziju{1}\thu at postdoctor@report at title}\par\vskip3cm
-      {\sanhao[1.5]\thu at ctitle}\par\vskip2cm
-      {\xiaoer\thu at cauthor}
-    \endgroup
-    \par\vskip3cm
-    {\xiaosan[1.5]\ziju{1}\thu at schoolname\par\vskip0.5em\CJK at todaysmall@short}
-  \end{center}
+\newcommand\thu at first@titlepage at postdoctor{%
+  \begin{center}%
+    \setlength{\thu at title@width}{3.5em}%
+    \renewcommand\ULthickness{0.7pt}%
+    \vspace*{0.35cm}%
+    {\sihao[2.6]%
+      \thu at put@title{分类号}\thu at underline[3.7cm]{\thu at catalognumber}\hfill
+      密级\thu at underline[3.7cm]{\ifthu at secret\thu at secret@content\fi}\par
+      \thu at put@title{U D C}\thu at underline[3.7cm]{\thu at udc}\hfill
+      编号\thu at underline[3.7cm]{\thu at id}\par
+    }%
+    \vskip 3.15cm%
+    {\sffamily\bfseries\xiaoer[2.6]%
+      {\ziju{1.5}\thu at schoolname\par}%
+      {\ziju{0.5}博士后研究工作报告\par}%
+    }%
+    \vskip 0.2cm%
+    \parbox[t][4.0cm][c]{\textwidth}{%
+      \centering\sihao[3.46]\CJKunderline*[depth=1em]{\thu at ctitle}\par
+    }\par
+    \vskip 0.4cm%
+    {\xiaosi\thu at cauthor\par}%
+    \vskip 1.4cm%
+    {\xiaosi[1.58]\xeCJKsetup{underline/depth=0.9em}%
+      工作完成日期\quad\thu at CJKunderline[5.9cm]{\thu at postdoctordate}\par
+      \vskip 0.55cm%
+      报告提交日期\quad\thu at CJKunderline[5.9cm]{\thu at cdate}\par
+    }%
+    \vskip 0.45cm%
+    {\xiaosi[2]{\ziju{1}\thu at schoolname}\quad (北京)\par}%
+    \vskip 0.25cm%
+    {\xiaosi[2]\thu at cdate\par}%
+  \end{center}%
   \cleardoublepage
-  \begin{center}
-    \vspace*{2cm}
-    {\sihao\heiti\thu at ctitle\par\thu at etitle}\par
-    \parbox[t][7cm][b]{\textwidth-6cm}{\sihao[1.5]%
-      \setlength{\thu at title@width}{11em}
-      \setlength{\extrarowheight}{6pt}
-      \ifxetex % todo: ugly codes
-        \begin{tabular}{p{\thu at title@width}@{}l@{\extracolsep{8pt}}l}
-      \else
-        \begin{tabular}{p{\thu at title@width}l@{}l}
-      \fi
-          \thu at put@title{\thu at author@title}
-            & \thu at title@sep
-            & \thu at cauthor \\
-          \thu at put@title{\thu at postdoctor@first at discipline@title}
-            & \thu at title@sep
-            & \thu at cfirstdiscipline\\
-          \thu at put@title{\thu at postdoctor@second at discipline@title}
-            & \thu at title@sep
-            & \thu at cseconddiscipline\\
-          \thu at put@title{\thu at supervisor@title}
-            & \thu at title@sep
-            & \thu at csupervisor\\
-        \end{tabular}}
-    \vskip2cm
-    {\sihao\thu at postdoctor@date at title\hskip1em\underline\thu at postdoctordate}
-  \end{center}}
+  \begin{center}%
+    \vspace*{1.5cm}%
+    \parbox[t][3cm][c]{\textwidth}{%
+      \centering\sanhao[1.95]\thu at ctitle\par
+    }\par
+    \vskip 0.15cm%
+    \parbox[t][3cm][c]{\textwidth}{%
+      \centering\sihao[1.36]\thu at etitle\par
+    }\par
+    \vskip 0.4cm%
+    {\xiaosi[2.6]%
+      \setlength{\thu at title@width}{11em}%
+      \begin{tabular}{l@{\quad}l}%
+        \thu at put@title{博士后姓名}                  & \thu at cauthor           \\
+        \thu at put@title{流动站(一级学科)名称}      & \thu at cfirstdiscipline  \\
+        \thu at put@title{专\quad{}业(二级学科)名称} & \thu at cseconddiscipline \\
+      \end{tabular}\par
+    }%
+    \vskip 2.7cm%
+    {\xiaosi[2.6]%
+      研究工作起始时间\quad\thu at postdocstartdate\par
+      \vskip 0.1cm%
+      研究工作期满时间\quad\thu at postdocenddate\par
+    }%
+    \vskip 2.1cm%
+    {\xiaosi[2.6]\thu at schoolname{}人事部(北京)\par}%
+    \vskip 0.6cm%
+    {\wuhao\thu at cdate\par}%
+  \end{center}%
+}
 \newcommand{\thu at first@titlepage at other}{
   \begin{center}
     \vspace*{-1.6cm}
@@ -542,7 +827,7 @@
       \ifthu at secret{\heiti\sanhao\thu at secretlevel\thu at secret@content}\else\rule{1cm}{0cm}\fi}
     \ifthu at bachelor
       \vskip0.65cm
-      {\ifcsname lishu\endcsname\yihao\lishu\ziju{0.5}\thu at schoolname\else\includegraphics{tsinghua}\fi}
+      {\ifcsname lishu\endcsname\yihao\lishu\ziju{0.5}\thu at schoolname\else\includegraphics{tsinghua.pdf}\fi}
       \par\vskip1.5cm
       {\xiaochu\heiti\ziju{0.5}\textbf\thu at bachelor@subtitle}
       \vskip2.2cm\hskip0.8cm
@@ -551,11 +836,7 @@
       \ignorespaces\yihao[1.51]%
       \renewcommand{\CJKunderlinebasesep}{0.25cm}%
       \renewcommand{\ULthickness}{1.3pt}%
-      \ifxetex
-        \xeCJKsetup{underline/format=\color{black}}%
-      \else
-        \def\CJKunderlinecolor{\color{black}}%
-      \fi
+      \xeCJKsetup{underline/format=\color{black}}%
       \CJKunderline*{\thu at ctitle}}%
       \vskip1.3cm
     \else
@@ -580,11 +861,7 @@
          \hspace*{1.9cm}
          \setlength{\thu at title@width}{4em}
          \setlength{\extrarowheight}{6pt}
-         \ifxetex % todo: ugly codes
-           \begin{tabular}{p{\thu at title@width}@{}l@{\extracolsep{8pt}}l}
-         \else
-           \begin{tabular}{p{\thu at title@width}l@{}l}
-         \fi
+         \begin{tabular}{p{\thu at title@width}@{}l@{\extracolsep{8pt}}l}
              \thu at put@title{\thu at department@title} & \thu at title@sep
                & \thu at cdepartment\\
              \thu at put@title{\thu at major@title}      & \thu at title@sep
@@ -605,11 +882,7 @@
         \begin{center}\fangsong
           \setlength{\thu at title@width}{5em}
           \setlength{\extrarowheight}{4pt}
-          \ifxetex % todo: ugly codes
-            \begin{tabular}{p{\thu at title@width}@{}c@{\extracolsep{8pt}}l}
-          \else
-            \begin{tabular}{p{\thu at title@width}c@{\extracolsep{4pt}}l}
-          \fi
+          \begin{tabular}{p{\thu at title@width}@{}c@{\extracolsep{8pt}}l}
               \thu at put@title{\thu at department@title}  & \thu at title@sep
                 & {\ziju{0.1875}\thu at cdepartment}\\
               \thu at put@title{\thu at major@title}       & \thu at title@sep
@@ -641,6 +914,9 @@
          \songti\thu at cdate}
      \end{center}
     \end{center}} % end of titlepage
+\def\thu at master@art{Master of Arts}
+\def\thu at master@sci{Master of Science}
+\def\thu at doctor@phi{Doctor of Philosophy}
 \newcommand{\thu at engcover}{%
   \newif\ifthu at professional\thu at professionalfalse
   \ifthu at master
@@ -727,11 +1003,22 @@
 \def\makecover{%
   \thu at setup@pdfinfo\thu at makecover}
 \def\thu at setup@pdfinfo{%
-  \hypersetup{%
-    pdftitle={\thu at ctitle},
-    pdfauthor={\thu at cauthor},
-    pdfsubject={\thu at cdegree},
-    pdfkeywords={\thu at ckeywords},
+  \ifthu at chinese
+    \hypersetup{
+      pdftitle    = \thu at ctitle,
+      pdfauthor   = \thu at cauthor,
+      pdfsubject  = \thu at cdegree,
+      pdfkeywords = \thu at ckeywords,
+    }%
+  \else
+    \hypersetup{
+      pdftitle    = \thu at etitle,
+      pdfauthor   = \thu at eauthor,
+      pdfsubject  = \thu at edegree,
+      pdfkeywords = \thu at ekeywords,
+    }%
+  \fi
+  \hypersetup{
     pdfcreator={\thuthesis-v\version}}}
 \NewDocumentCommand{\thu at makecover}{o}{
   \phantomsection
@@ -773,6 +1060,7 @@
   \endgroup}
 \newcommand{\thu at makeabstract}{%
   \ifthu at bachelor\clearpage\else\cleardoublepage\fi
+  \thu at setchinese
   \thu at chapter*[]{\cabstractname} % no tocline
   \ifthu at bachelor
     \pagestyle{thu at plain}
@@ -783,11 +1071,14 @@
   \thu at cabstract
   \ifthu at doctor\vfill\else\vskip12bp\fi
   \thu at put@keywords{\textbf\thu at ckeywords@title}{\thu at ckeywords}
+  \thu at setenglish
   \thu at chapter*[]{\eabstractname} % no tocline
   \thu at eabstract
   \ifthu at doctor\vfill\else\vskip12bp\fi
   \thu at put@keywords{%
-    \textbf{\ifthu at bachelor Keywords:\else Key Words:\fi\enskip}}{\thu at ekeywords}}
+    \textbf{\ifthu at bachelor Keywords:\else Key Words:\fi\enskip}}{\thu at ekeywords}%
+  \thu at setdefaultlanguage
+}
 \newenvironment{denotation}[1][2.5cm]{%
   \thu at chapter*[]{\thu at denotation@name} % no tocline
   \vskip-30bp\xiaosi[1.6]\begin{thu at denotation}[labelwidth=#1]
@@ -805,8 +1096,15 @@
   labelsep*=0.5cm,
   itemindent=0pt,
 }
+\newcommand\thu at declarename{声\hspace{\ccwd}明}
+\newcommand{\thu at declaretext}{本人郑重声明:所呈交的学位论文,是本人在导师指导下
+  ,独立进行研究工作所取得的成果。尽我所知,除文中已经注明引用的内容外,本学位论
+  文的研究成果不包含任何他人享有著作权的内容。对本论文所涉及的研究工作做出贡献的
+  其他个人和集体,均已在文中以明确方式标明。}
+\newcommand{\thu at signature}{签\hspace{1em}名:}
+\newcommand{\thu at backdate}{日\hspace{1em}期:}
 \NewDocumentEnvironment{acknowledgement}{o}{%
-    \thu at chapter*{\thu at ackname}
+    \thu at chapter*{\thu at ack@name}
   }
   {
     \ifthu at postdoctor\relax\else%
@@ -917,12 +1215,17 @@
 \setlist[achievements]{label=[\arabic*],align=left,nosep,itemsep=8bp,
   leftmargin=10mm,labelsep=!,before=\xiaosi[1.26]}
 \def\publicationskip{\bigskip\bigskip}
+\newcommand\thu at atendpackage{\csname ctex_at_end_package:nn\endcsname}
+\thu at atendpackage{nomencl}{
+  \let\nomname\thu at denotation@name
+  \def\thenomenclature{\begin{denotation}[\nom at tempdim]}
+  \def\endthenomenclature{\end{denotation}}
+}
 \NewDocumentCommand{\shuji}{O{\thu at ctitle} O{\thu at cauthor}}{%
   \newpage\thispagestyle{empty}%
-  \fangsong\ifxetex\addCJKfontfeatures*{RawFeature={vertical:}}\fi
+  \fangsong\addCJKfontfeatures*{RawFeature={vertical:}}
   \xiaosan\ziju{0.4}%
   \noindent\hfill\rotatebox[origin=lt]{-90}{\makebox[\textheight]{#1\hfill#2}}}
-\AtEndOfClass{\input{thuthesis.cfg}}
 \AtEndOfClass{\sloppy}
 \endinput
 %%



More information about the tex-live-commits mailing list