texlive[71344] Master: nxuthesis (23may24)

commits+karl at tug.org commits+karl at tug.org
Fri May 24 22:59:31 CEST 2024


Revision: 71344
          https://tug.org/svn/texlive?view=revision&revision=71344
Author:   karl
Date:     2024-05-24 22:59:31 +0200 (Fri, 24 May 2024)
Log Message:
-----------
nxuthesis (23may24)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/bibtex/bst/nxuthesis/
    trunk/Master/texmf-dist/bibtex/bst/nxuthesis/nxuthesis-author-year.bst
    trunk/Master/texmf-dist/bibtex/bst/nxuthesis/nxuthesis-bachelor.bst
    trunk/Master/texmf-dist/bibtex/bst/nxuthesis/nxuthesis-numeric.bst
    trunk/Master/texmf-dist/doc/latex/nxuthesis/
    trunk/Master/texmf-dist/doc/latex/nxuthesis/README.md
    trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/
    trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/abstract.tex
    trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/acknowledgements.tex
    trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/chap01.tex
    trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/chap02.tex
    trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/references.tex
    trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/resume.tex
    trunk/Master/texmf-dist/doc/latex/nxuthesis/nxu-name.pdf
    trunk/Master/texmf-dist/doc/latex/nxuthesis/nxusetup.tex
    trunk/Master/texmf-dist/doc/latex/nxuthesis/nxuthesis-example.pdf
    trunk/Master/texmf-dist/doc/latex/nxuthesis/nxuthesis-example.tex
    trunk/Master/texmf-dist/doc/latex/nxuthesis/ref/
    trunk/Master/texmf-dist/doc/latex/nxuthesis/ref/refs.bib
    trunk/Master/texmf-dist/tex/latex/nxuthesis/
    trunk/Master/texmf-dist/tex/latex/nxuthesis/nxuthesis.cls
    trunk/Master/tlpkg/tlpsrc/nxuthesis.tlpsrc

Added: trunk/Master/texmf-dist/bibtex/bst/nxuthesis/nxuthesis-author-year.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/nxuthesis/nxuthesis-author-year.bst	                        (rev 0)
+++ trunk/Master/texmf-dist/bibtex/bst/nxuthesis/nxuthesis-author-year.bst	2024-05-24 20:59:31 UTC (rev 71344)
@@ -0,0 +1,2663 @@
+%%
+%% This is file `variants/thu/thuthesis-author-year.bst',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% gbt7714.dtx  (with options: `2015,thu,author-year')
+%% -------------------------------------------------------------------
+%% GB/T 7714 BibTeX Style
+%% https://github.com/zepinglee/gbt7714-bibtex-style
+%% Version: 2024/03/08 v2.1.6
+%% -------------------------------------------------------------------
+%% Copyright (C) 2016--2024 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 2008 or later.
+%% -------------------------------------------------------------------
+INTEGERS {
+  citation.et.al.min
+  citation.et.al.use.first
+  bibliography.et.al.min
+  bibliography.et.al.use.first
+  uppercase.name
+  terms.in.macro
+  year.after.author
+  period.after.author
+  italic.book.title
+  sentence.case.title
+  link.title
+  title.in.journal
+  show.patent.country
+  show.mark
+  space.before.mark
+  show.medium.type
+  short.journal
+  italic.journal
+  link.journal
+  bold.journal.volume
+  show.missing.address.publisher
+  space.before.pages
+  only.start.page
+  wave.dash.in.pages
+  show.urldate
+  show.url
+  show.doi
+  show.preprint
+  show.note
+  show.english.translation
+  end.with.period
+  lang.zh.order
+  lang.ja.order
+  lang.en.order
+  lang.ru.order
+  lang.other.order
+}
+
+STRINGS {
+  component.part.label
+}
+
+FUNCTION {load.config}
+{
+  #2 'citation.et.al.min :=
+  #1 'citation.et.al.use.first :=
+  #4 'bibliography.et.al.min :=
+  #3 'bibliography.et.al.use.first :=
+  #0 'uppercase.name :=
+  #0 'terms.in.macro :=
+  #1 'year.after.author :=
+  #0 'period.after.author :=
+  #0 'italic.book.title :=
+  #1 'sentence.case.title :=
+  #0 'link.title :=
+  #1 'title.in.journal :=
+  #1 'show.patent.country :=
+  #1 'show.mark :=
+  #0 'space.before.mark :=
+  #1 'show.medium.type :=
+  "slash" 'component.part.label :=
+  #0 'short.journal :=
+  #0 'italic.journal :=
+  #0 'link.journal :=
+  #0 'bold.journal.volume :=
+  #0 'show.missing.address.publisher :=
+  #1 'space.before.pages :=
+  #0 'only.start.page :=
+  #0 'wave.dash.in.pages :=
+  #1 'show.urldate :=
+  #1 'show.url :=
+  #1 'show.doi :=
+  #1 'show.preprint :=
+  #0 'show.note :=
+  #0 'show.english.translation :=
+  #1 'end.with.period :=
+  #1 'lang.zh.order :=
+  #2 'lang.ja.order :=
+  #3 'lang.en.order :=
+  #4 'lang.ru.order :=
+  #5 'lang.other.order :=
+}
+
+ENTRY
+  { address
+    archivePrefix
+    author
+    booktitle
+    date
+    doi
+    edition
+    editor
+    eprint
+    eprinttype
+    entrysubtype
+    howpublished
+    institution
+    journal
+    journaltitle
+    key
+    langid
+    language
+    location
+    mark
+    medium
+    note
+    number
+    organization
+    pages
+    publisher
+    school
+    series
+    shortjournal
+    title
+    translation
+    translator
+    url
+    urldate
+    volume
+    year
+  }
+  { entry.lang entry.is.electronic is.pure.electronic entry.numbered }
+  { label extra.label sort.label short.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.and}
+{ "" }
+
+FUNCTION {bbl.et.al}
+{ entry.lang lang.zh =
+    { "等" }
+    { entry.lang lang.ja =
+        { "他" }
+        { entry.lang lang.ru =
+            { "идр" }
+            { "et~al." }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {citation.and}
+{ terms.in.macro
+    { "{\biband}" }
+    'bbl.and
+  if$
+}
+
+FUNCTION {citation.et.al}
+{ terms.in.macro
+    { "{\bibetal}" }
+    'bbl.et.al
+  if$
+}
+
+FUNCTION {bbl.colon} { ": " }
+
+FUNCTION {bbl.pages.colon}
+{ space.before.pages
+    { ": " }
+    { ":\allowbreak " }
+  if$
+}
+
+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 { x y }
+
+FUNCTION {contains}
+{ 'y :=
+  'x :=
+  y text.length$ 'len :=
+  x text.length$ len - #1 + 'charptr :=
+    { charptr #0 >
+      x charptr len substring$ y = not
+      and
+    }
+    { charptr #1 - 'charptr := }
+  while$
+  charptr #0 >
+}
+
+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}
+{ end.with.period
+    'add.period$
+    'skip$
+  if$
+  write$
+  show.english.translation entry.lang lang.zh = and
+    { ")"
+      write$
+    }
+    'skip$
+  if$
+  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$
+    { component.part.label "slash" =
+        { after.slash 'output.state := }
+        { new.block
+          component.part.label "in" =
+            { entry.lang lang.en =
+                { "In: " output
+                  write$
+                  ""
+                  before.all 'output.state :=
+                }
+                'skip$
+              if$
+            }
+            'skip$
+          if$
+        }
+      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 {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "\emph{" swap$ * "}" * }
+  if$
+}
+
+FUNCTION {format.btitle}
+{ italic.book.title
+  entry.lang lang.en = and
+    'emphasize
+    'skip$
+  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
+}
+
+STRINGS { entry.langid }
+
+FUNCTION {set.entry.lang}
+{ "" 'entry.langid :=
+  language empty$ not
+    { language 'entry.langid := }
+    'skip$
+  if$
+  langid empty$ not
+    { langid 'entry.langid := }
+    'skip$
+  if$
+  entry.langid empty$
+    { check.entry.lang }
+    { entry.langid "english" = entry.langid "american" = or entry.langid "british" = or
+        { lang.en }
+        { entry.langid "chinese" =
+            { lang.zh }
+            { entry.langid "japanese" =
+                { lang.ja }
+                { entry.langid "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.name}
+{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
+  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$
+}
+
+FUNCTION {format.names}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  ""
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr format.name bbl.et.al =
+      numnames bibliography.et.al.min #1 - > nameptr bibliography.et.al.use.first > and or
+        { ", " *
+          bbl.et.al *
+          #1 'namesleft :=
+        }
+        { nameptr #1 >
+            { namesleft #1 = bbl.and "" = not and
+                { bbl.and * }
+                { ", " * }
+              if$
+            }
+            'skip$
+          if$
+          s nameptr format.name *
+        }
+      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$
+      bbl.anonymous
+    }
+  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" = booktitle empty$ not and
+  or
+    'author.editor.full
+    { type$ "collection" =
+      type$ "proceedings" =
+      or
+        'editor.full
+        'author.full
+      if$
+    }
+  if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+  "\bibitem[" write$
+  label ")" *
+  make.full.names duplicate$ short.list =
+    { pop$ }
+    { duplicate$ "]" contains
+        { "{" swap$ * "}" * }
+        'skip$
+      if$
+      *
+    }
+  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{https://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 *
+          type$ "patent" = show.patent.country and
+            { address empty$ not
+                { address * ", " * }
+                { location empty$ not
+                    { location * ", " * }
+                    { entry.lang lang.zh =
+                        { "中国" * ", " * }
+                        'skip$
+                      if$
+                    }
+                  if$
+                }
+              if$
+            }
+            'skip$
+          if$
+          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 * " 卷" * }
+            { "Vol." volume tie.or.space.connect }
+          if$
+        }
+        { volume }
+      if$
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {format.number}
+{ number empty$ not
+    { number is.number
+        { entry.lang lang.zh =
+            { "第 " number * " 册" * }
+            { "No." 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$
+  format.btitle
+  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$
+  format.btitle
+}
+
+FUNCTION {remove.period}
+{ 't :=
+  "" 's :=
+    { t empty$ not }
+    { t #1 #1 substring$ 'tmp.str :=
+      tmp.str "." = not
+        { s tmp.str * 's := }
+        'skip$
+      if$
+      t #2 global.max$ substring$ 't :=
+    }
+  while$
+  s
+}
+
+FUNCTION {abbreviate}
+{ remove.period
+  't :=
+  t "l" change.case$ 's :=
+  ""
+  s "physical review letters" =
+    { "Phys Rev Lett" }
+    'skip$
+  if$
+  's :=
+  s empty$
+    { t }
+    { pop$ s }
+  if$
+}
+
+FUNCTION {get.journal.title}
+{ short.journal
+    { shortjournal empty$ not
+        { shortjournal }
+        { journal empty$ not
+            { journal abbreviate }
+            { journaltitle empty$ not
+                { journaltitle abbreviate }
+                { "" }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+    { journal empty$ not
+        { journal }
+        { journaltitle empty$ not
+            { journaltitle }
+            { shortjournal empty$ not
+                { shortjournal }
+                { "" }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {check.arxiv.preprint}
+{ #1 #5 substring$ purify$ "l" change.case$ "arxiv" =
+    { #1 }
+    { #0 }
+  if$
+}
+
+FUNCTION {format.journal}
+{ get.journal.title
+  duplicate$ empty$ not
+    { italic.journal entry.lang lang.en = and
+        'emphasize
+        'skip$
+      if$
+      link.journal
+        'add.link
+        'skip$
+      if$
+    }
+    '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
+    { entry.mark
+      show.medium.type
+        { medium empty$ not
+            { "/" * medium * }
+            { entry.is.electronic
+                { "/OL" * }
+                'skip$
+              if$
+            }
+          if$
+        }
+        'skip$
+      if$
+      'entry.mark :=
+      space.before.mark
+        { " " }
+        { "\allowbreak" }
+      if$
+      "[" * 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
+        { edition "1" = not
+            { entry.lang lang.zh =
+                { edition " 版" * }
+                { edition num.to.ordinal " ed." * }
+              if$
+            }
+            'skip$
+          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 }
+    { location empty$ not
+        { location }
+        { "" }
+      if$
+    }
+  if$
+  duplicate$ empty$ not
+    { 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$
+    }
+    { pop$
+      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 {extract.before.slash}
+{ 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.slash}
+{ duplicate$ empty$
+    { pop$ "" }
+    { 's :=
+      #1 'charptr :=
+      s text.length$ #1 + 'len :=
+        { charptr len <
+          s charptr #1 substring$ "-" = not
+          and
+          s charptr #1 substring$ "/" = not
+          and
+        }
+        { charptr #1 + 'charptr := }
+      while$
+        { charptr len <
+          s charptr #1 substring$ "-" =
+          s charptr #1 substring$ "/" =
+          or
+          and
+        }
+        { charptr #1 + 'charptr := }
+      while$
+      s charptr global.max$ substring$
+    }
+  if$
+}
+
+FUNCTION {format.year}
+{ year empty$ not
+    { year extract.before.slash extra.label * }
+    { date empty$ not
+        { date extract.before.dash extra.label * }
+        { entry.is.electronic not
+            { "empty year in " cite$ * warning$ }
+            'skip$
+          if$
+          urldate empty$ not
+            { "[" urldate extract.before.dash * extra.label * "]" * }
+            { "" }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.periodical.year}
+{ year empty$ not
+    { year extract.before.slash
+      "--" *
+      year extract.after.slash
+      duplicate$ empty$
+        'pop$
+        { * }
+      if$
+    }
+    { date empty$ not
+        { date extract.before.dash }
+        { "empty year in " cite$ * warning$
+          urldate empty$ not
+            { "[" urldate extract.before.dash * "]" * }
+            { "" }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.date}
+{ date empty$ not
+    { type$ "patent" = type$ "newspaper" = or
+        { date }
+        { entrysubtype empty$ not
+            { type$ "article" = entrysubtype "newspaper" = and
+                { date }
+                { format.year }
+              if$
+            }
+            { format.year }
+          if$
+        }
+      if$
+    }
+    { year empty$ not
+        { format.year }
+        { "" }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.editdate}
+{ date empty$ not
+    { "\allowbreak(" date * ")" * }
+    { "" }
+  if$
+}
+
+FUNCTION {format.urldate}
+{ show.urldate show.url and entry.url empty$ not and
+  is.pure.electronic or
+  urldate empty$ not and
+    { "\allowbreak[" urldate * "]" * }
+    { "" }
+  if$
+}
+
+FUNCTION {hyphenate}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { wave.dash.in.pages
+            { "~" * }
+            { "-" * }
+          if$
+            { 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.extracted.pages}
+{ pages empty$
+    { "" }
+    { pages
+      only.start.page
+        'extract.before.dash
+        'hyphenate
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.journal.volume}
+{ volume empty$ not
+    { bold.journal.volume
+        { "\textbf{" volume * "}" * }
+        { volume }
+      if$
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {format.journal.number}
+{ number empty$ not
+    { "\allowbreak (" number * ")" * }
+    { "" }
+  if$
+}
+
+FUNCTION {format.journal.pages}
+{ pages empty$
+    { "" }
+    { format.extracted.pages }
+  if$
+}
+
+FUNCTION {format.periodical.year.volume.number}
+{ year empty$ not
+    { year extract.before.slash }
+    { "empty year in periodical " cite$ * warning$ }
+  if$
+  volume empty$ not
+    { ", " * volume extract.before.dash * }
+    'skip$
+  if$
+  number empty$ not
+    { "\allowbreak (" * number extract.before.dash * ")" * }
+    'skip$
+  if$
+  "--" *
+  year extract.after.slash empty$
+  volume extract.after.dash empty$ and
+  number extract.after.dash empty$ and not
+    { year extract.after.slash empty$ not
+        { year extract.after.slash * }
+        { year extract.before.slash * }
+      if$
+      volume empty$ not
+        { ", " * volume extract.after.dash * }
+        'skip$
+      if$
+      number empty$ not
+        { "\allowbreak (" * number extract.after.dash * ")" * }
+        '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 {output.url}
+{ show.url is.pure.electronic or
+  entry.url empty$ not and
+    { new.block
+      entry.url output
+    }
+    'skip$
+  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
+    { "" '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$
+    }
+    'skip$
+  if$
+}
+
+FUNCTION {output.doi}
+{ doi empty$ not show.doi and
+  show.english.translation entry.lang lang.zh = and not and
+    { new.block
+      format.doi output
+    }
+    '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.eprint}
+{ archivePrefix empty$ not
+    { archivePrefix }
+    { eprinttype empty$ not
+        { archivePrefix }
+        { "" }
+      if$
+    }
+  if$
+  's :=
+  s empty$ not
+    { s ": \eprint{" *
+      url empty$ not
+        { url }
+        { "https://" s "l" change.case$ * ".org/abs/" * eprint * }
+      if$
+      * "}{" *
+      eprint * "}" *
+    }
+    { eprint }
+  if$
+}
+
+FUNCTION {output.eprint}
+{ show.preprint eprint empty$ not and
+    { new.block
+      format.eprint output
+    }
+    'skip$
+  if$
+}
+
+FUNCTION {format.note}
+{ note empty$ not show.note and
+    { note }
+    { "" }
+  if$
+}
+
+FUNCTION {output.translation}
+{ show.english.translation entry.lang lang.zh = and
+    { translation empty$ not
+        { translation }
+        { "[English translation missing!]" }
+      if$
+      " (in Chinese)" * output
+      write$
+      format.doi duplicate$ empty$ not
+        { newline$
+          write$
+        }
+        'pop$
+      if$
+      " \\" write$
+      newline$
+      "(" write$
+      ""
+      before.all 'output.state :=
+    }
+    'skip$
+  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
+  output.translation
+  author empty$ not
+    { format.authors }
+    { editor empty$ not
+        { format.editors }
+        { "empty author and editor in " cite$ * warning$
+          bbl.anonymous
+        }
+      if$
+    }
+  if$
+  output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  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
+  year.after.author not
+    { format.year "year" output.check }
+    'skip$
+  if$
+  format.pages bbl.pages.colon output.after
+  format.urldate "" output.after
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+  output.translation
+  format.authors output
+  author format.key output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  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
+  year.after.author not
+    { format.year "year" output.check }
+    'skip$
+  if$
+  format.extracted.pages bbl.pages.colon output.after
+  format.urldate "" output.after
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {periodical}
+{ output.bibitem
+  output.translation
+  format.authors output
+  author format.key output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  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
+  year.after.author not
+    { format.periodical.year "year" output.check }
+    'skip$
+  if$
+  format.urldate "" output.after
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {journal.article}
+{ output.bibitem
+  output.translation
+  format.authors output
+  author format.key output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  new.block
+  title.in.journal
+    { format.title "title" output.check
+      entrysubtype empty$ not
+        {
+          entrysubtype "newspaper" =
+            { "N" set.entry.mark }
+            { "J" set.entry.mark }
+          if$
+        }
+        { "J" set.entry.mark }
+      if$
+      format.mark "" output.after
+      new.block
+    }
+    'skip$
+  if$
+  format.journal "journal" output.check
+  year.after.author not
+    { format.date "year" output.check }
+    'skip$
+  if$
+  format.journal.volume output
+  format.journal.number "" output.after
+  format.journal.pages bbl.pages.colon output.after
+  format.urldate "" output.after
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {patent}
+{ output.bibitem
+  output.translation
+  format.authors output
+  author format.key output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  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
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {electronic}
+{ #1 #1 check.electronic
+  #1 'entry.is.electronic :=
+  #1 'is.pure.electronic :=
+  output.bibitem
+  output.translation
+  format.authors output
+  author format.key output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  new.block
+  format.series.vol.num.title "title" output.check
+  "EB" set.entry.mark
+  format.mark "" output.after
+  new.block
+  format.address.publisher output
+  year.after.author not
+    { date empty$
+        { format.date output }
+        'skip$
+      if$
+    }
+    'skip$
+  if$
+  format.pages bbl.pages.colon output.after
+  format.editdate "" output.after
+  format.urldate "" output.after
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {preprint}
+{ output.bibitem
+  output.translation
+  author empty$ not
+    { format.authors }
+    { editor empty$ not
+        { format.editors }
+        { "empty author and editor in " cite$ * warning$
+          bbl.anonymous
+        }
+      if$
+    }
+  if$
+  output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  new.block
+  title.in.journal
+    { format.series.vol.num.title "title" output.check
+      "A" set.entry.mark
+      format.mark "" output.after
+      new.block
+    }
+    'skip$
+  if$
+  format.translators output
+  new.sentence
+  format.edition output
+  new.block
+  year.after.author not
+    { date empty$
+        { format.date output }
+        'skip$
+      if$
+    }
+    'skip$
+  if$
+  format.pages bbl.pages.colon output.after
+  format.editdate "" output.after
+  format.urldate "" output.after
+  output.eprint
+  output.url
+  show.preprint not eprint empty$ or
+    'output.doi
+    'skip$
+  if$
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {misc}
+{ get.journal.title
+  duplicate$ empty$ not
+    { check.arxiv.preprint
+        'preprint
+        'journal.article
+      if$
+    }
+    { pop$
+      booktitle empty$ not
+        'incollection
+        { publisher empty$ not
+            'monograph
+            { eprint empty$ not archivePrefix empty$ not or
+                'preprint
+                { entry.is.electronic
+                    'electronic
+                    {
+                      "Z" set.entry.mark
+                      monograph
+                    }
+                  if$
+                }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+  empty.misc.check
+}
+
+FUNCTION {archive}
+{ "A" set.entry.mark
+  misc
+}
+
+FUNCTION {article} { 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} {
+  booktitle empty$
+    'book
+    'incollection
+  if$
+}
+
+FUNCTION {inproceedings}
+{ "C" set.entry.mark
+  incollection
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {legislation} { archive }
+
+FUNCTION {map}
+{ "CM" set.entry.mark
+  misc
+}
+
+FUNCTION {manual} { monograph }
+
+FUNCTION {thesis}
+{ "D" set.entry.mark
+  monograph
+}
+
+FUNCTION {newspaper}
+{ "N" set.entry.mark
+  article
+}
+
+FUNCTION {online}
+{ "EB" set.entry.mark
+  electronic
+}
+
+FUNCTION {mastersthesis} { thesis }
+
+FUNCTION {phdthesis} { thesis }
+
+FUNCTION {proceedings}
+{ "C" set.entry.mark
+  monograph
+}
+
+FUNCTION {software}
+{ "CP" set.entry.mark
+  electronic
+}
+
+FUNCTION {standard}
+{ "S" set.entry.mark
+  misc
+}
+
+FUNCTION {report}
+{ "R" set.entry.mark
+  misc
+}
+
+FUNCTION {techreport} { report }
+
+FUNCTION {unpublished} { 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.name}
+{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
+  t "others" =
+    { citation.et.al }
+    { t get.str.lang 'name.lang :=
+      name.lang lang.zh = name.lang lang.ja = or
+        { t #1 "{ll}{ff}" format.name$ }
+        { t #1 "{vv~}{ll}" format.name$ }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+  s #1 format.lab.name 'short.label :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  ""
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr format.lab.name citation.et.al =
+      numnames citation.et.al.min #1 - > nameptr citation.et.al.use.first > and or
+        { bbl.space *
+          citation.et.al *
+          #1 'namesleft :=
+        }
+        { nameptr #1 >
+            { namesleft #1 = citation.and "" = not and
+                { citation.and * }
+                { ", " * }
+              if$
+            }
+            'skip$
+          if$
+          s nameptr format.lab.name *
+        }
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+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}
+{ "" 'short.label :=
+  type$ "book" =
+  type$ "inbook" = booktitle empty$ not and
+  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 :=
+  short.label empty$
+    { short.list 'short.label := }
+    'skip$
+  if$
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+  short.list "]" contains
+    { "{" short.list * "}" * }
+    { short.list }
+  if$
+  "("
+  *
+  format.year duplicate$ empty$
+  short.list key field.or.null = or
+     { pop$ "" }
+     'skip$
+  if$
+  duplicate$ "]" contains
+    { "{" swap$ * "}" * }
+    'skip$
+  if$
+  *
+  'label :=
+  short.label
+  "("
+  *
+  format.year duplicate$ empty$
+  short.list key field.or.null = or
+     { pop$ "" }
+     'skip$
+  if$
+  *
+  'short.label :=
+}
+
+FUNCTION {sort.language.label}
+{ entry.lang lang.zh =
+    { lang.zh.order }
+    { entry.lang lang.ja =
+        { lang.ja.order }
+        { entry.lang lang.en =
+            { lang.en.order }
+            { entry.lang lang.ru =
+                { lang.ru.order }
+                { lang.other.order }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+  #64 +
+  int.to.chr$
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+  #1 'nameptr :=
+  ""
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    {
+      s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
+      nameptr #1 >
+        {
+          "   "  *
+          namesleft #1 = t "others" = and
+            { "zzzzz" * }
+            { numnames #2 > nameptr #2 = and
+                { "zz" * year field.or.null * "   " * }
+                'skip$
+              if$
+              t sortify *
+            }
+          if$
+        }
+        { t sortify * }
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+  "A " #2
+    "An " #3
+      "The " #4 t chop.word
+    chop.word
+  chop.word
+  sortify
+  #1 global.max$ substring$
+}
+
+FUNCTION {anonymous.sort}
+{ 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 empty$
+    { warn.empty.key
+      author empty$
+        { anonymous.sort }
+        { author sort.format.names }
+      if$
+    }
+    { key }
+  if$
+}
+
+FUNCTION {author.editor.sort}
+{ key empty$
+    { warn.empty.key
+      author empty$
+        { editor empty$
+            { anonymous.sort }
+            { editor sort.format.names }
+          if$
+        }
+        { author sort.format.names }
+      if$
+    }
+    { key }
+  if$
+}
+
+FUNCTION {author.organization.sort}
+{ key empty$
+    { warn.empty.key
+      author empty$
+        { organization empty$
+            { anonymous.sort }
+            { "The " #4 organization chop.word sortify }
+          if$
+        }
+        { author sort.format.names }
+      if$
+    }
+    { key }
+  if$
+}
+
+FUNCTION {editor.organization.sort}
+{ key empty$
+    { warn.empty.key
+      editor empty$
+        { organization empty$
+            { anonymous.sort }
+            { "The " #4 organization chop.word sortify }
+          if$
+        }
+        { editor sort.format.names }
+      if$
+    }
+    { key }
+  if$
+}
+
+FUNCTION {presort}
+{ set.entry.lang
+  set.entry.numbered
+  show.url show.doi check.electronic
+  #0 'is.pure.electronic :=
+  calc.label
+  label sortify
+  "    "
+  *
+  sort.language.label
+  "    "
+  *
+  type$ "book" =
+  type$ "inbook" = booktitle empty$ not and
+  or
+    'author.editor.sort
+    { type$ "collection" =
+      type$ "proceedings" =
+      or
+        'editor.organization.sort
+        'author.sort
+      if$
+    }
+  if$
+  *
+  "    "
+  *
+  year field.or.null sortify
+  *
+  "    "
+  *
+  cite$
+  *
+  #1 entry.max$ substring$
+  'sort.label :=
+  sort.label *
+  #1 entry.max$ substring$
+  'sort.key$ :=
+}
+
+STRINGS { longest.label last.label next.extra last.extra.label }
+
+INTEGERS { longest.label.width number.label }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+  #0 int.to.chr$ 'last.label :=
+  "" 'next.extra :=
+  #0 'longest.label.width :=
+  #0 'number.label :=
+  "" 'last.extra.label :=
+}
+
+FUNCTION {forward.pass}
+{
+  last.label short.label =
+    { "" 'extra.label :=
+      last.extra.label text.length$ 'charptr :=
+        { last.extra.label charptr #1 substring$ "z" =
+          charptr #0 > and
+        }
+        { "a" extra.label * 'extra.label :=
+          charptr #1 - 'charptr :=
+        }
+      while$
+      charptr #0 >
+        { last.extra.label charptr #1 substring$ chr.to.int$ #1 + int.to.chr$
+          extra.label * 'extra.label :=
+          last.extra.label #1 charptr #1 - substring$
+          extra.label * 'extra.label :=
+        }
+        { "a" extra.label * 'extra.label := }
+      if$
+      extra.label 'last.extra.label :=
+    }
+    { "a" 'last.extra.label :=
+      "" 'extra.label :=
+      short.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$
+  terms.in.macro
+    { "\providecommand{\biband}{和}"
+      write$ newline$
+      "\providecommand{\bibetal}{等}"
+      write$ newline$
+    }
+    'skip$
+  if$
+  "\providecommand{\natexlab}[1]{#1}"
+  write$ newline$
+  "\providecommand{\url}[1]{#1}"
+  write$ newline$
+  "\expandafter\ifx\csname urlstyle\endcsname\relax\else"
+  write$ newline$
+  "  \urlstyle{same}\fi"
+  write$ newline$
+  "\expandafter\ifx\csname href\endcsname\relax"
+  write$ newline$
+  "  \DeclareUrlCommand\doi{\urlstyle{rm}}"
+  write$ newline$
+  "  \def\eprint#1#2{#2}"
+      write$ newline$
+  "\else"
+  write$ newline$
+  "  \def\doi#1{\href{https://doi.org/#1}{\nolinkurl{#1}}}"
+  write$ newline$
+  "  \let\eprint\href"
+      write$ newline$
+  "\fi"
+      write$ newline$
+    }
+
+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}


Property changes on: trunk/Master/texmf-dist/bibtex/bst/nxuthesis/nxuthesis-author-year.bst
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/bibtex/bst/nxuthesis/nxuthesis-bachelor.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/nxuthesis/nxuthesis-bachelor.bst	                        (rev 0)
+++ trunk/Master/texmf-dist/bibtex/bst/nxuthesis/nxuthesis-bachelor.bst	2024-05-24 20:59:31 UTC (rev 71344)
@@ -0,0 +1,2470 @@
+%%
+%% This is file `variants/thu/thuthesis-bachelor.bst',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% gbt7714.dtx  (with options: `2015,numerical')
+%% -------------------------------------------------------------------
+%% GB/T 7714 BibTeX Style
+%% https://github.com/zepinglee/gbt7714-bibtex-style
+%% Version: 2024/03/08 v2.1.6
+%% -------------------------------------------------------------------
+%% Copyright (C) 2016--2024 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 2008 or later.
+%% -------------------------------------------------------------------
+INTEGERS {
+  citation.et.al.min
+  citation.et.al.use.first
+  bibliography.et.al.min
+  bibliography.et.al.use.first
+  uppercase.name
+  terms.in.macro
+  year.after.author
+  period.after.author
+  italic.book.title
+  sentence.case.title
+  link.title
+  title.in.journal
+  show.patent.country
+  show.mark
+  space.before.mark
+  show.medium.type
+  short.journal
+  italic.journal
+  link.journal
+  bold.journal.volume
+  show.missing.address.publisher
+  space.before.pages
+  only.start.page
+  wave.dash.in.pages
+  show.urldate
+  show.url
+  show.doi
+  show.preprint
+  show.note
+  show.english.translation
+  end.with.period
+}
+
+STRINGS {
+  component.part.label
+}
+
+FUNCTION {load.config}
+{
+  #2 'citation.et.al.min :=
+  #1 'citation.et.al.use.first :=
+  #4 'bibliography.et.al.min :=
+  #3 'bibliography.et.al.use.first :=
+  #1 'uppercase.name :=
+  #0 'terms.in.macro :=
+  #0 'year.after.author :=
+  #1 'period.after.author :=
+  #0 'italic.book.title :=
+  #1 'sentence.case.title :=
+  #0 'link.title :=
+  #1 'title.in.journal :=
+  #0 'show.patent.country :=
+  #1 'show.mark :=
+  #0 'space.before.mark :=
+  #1 'show.medium.type :=
+  "slash" 'component.part.label :=
+  #0 'short.journal :=
+  #0 'italic.journal :=
+  #0 'link.journal :=
+  #0 'bold.journal.volume :=
+  #0 'show.missing.address.publisher :=
+  #1 'space.before.pages :=
+  #0 'only.start.page :=
+  #0 'wave.dash.in.pages :=
+  #1 'show.urldate :=
+  #1 'show.url :=
+  #1 'show.doi :=
+  #1 'show.preprint :=
+  #0 'show.note :=
+  #0 'show.english.translation :=
+  #1 'end.with.period :=
+}
+
+ENTRY
+  { address
+    archivePrefix
+    author
+    booktitle
+    date
+    doi
+    edition
+    editor
+    eprint
+    eprinttype
+    entrysubtype
+    howpublished
+    institution
+    journal
+    journaltitle
+    key
+    langid
+    language
+    location
+    mark
+    medium
+    note
+    number
+    organization
+    pages
+    publisher
+    school
+    series
+    shortjournal
+    title
+    translation
+    translator
+    url
+    urldate
+    volume
+    year
+  }
+  { entry.lang entry.is.electronic is.pure.electronic entry.numbered }
+  { label extra.label sort.label short.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.and}
+{ "" }
+
+FUNCTION {bbl.et.al}
+{ entry.lang lang.zh =
+    { "等" }
+    { entry.lang lang.ja =
+        { "他" }
+        { entry.lang lang.ru =
+            { "идр" }
+            { "et~al." }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {citation.and}
+{ terms.in.macro
+    { "{\biband}" }
+    'bbl.and
+  if$
+}
+
+FUNCTION {citation.et.al}
+{ terms.in.macro
+    { "{\bibetal}" }
+    'bbl.et.al
+  if$
+}
+
+FUNCTION {bbl.colon} { ": " }
+
+FUNCTION {bbl.pages.colon}
+{ space.before.pages
+    { ": " }
+    { ":\allowbreak " }
+  if$
+}
+
+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 { x y }
+
+FUNCTION {contains}
+{ 'y :=
+  'x :=
+  y text.length$ 'len :=
+  x text.length$ len - #1 + 'charptr :=
+    { charptr #0 >
+      x charptr len substring$ y = not
+      and
+    }
+    { charptr #1 - 'charptr := }
+  while$
+  charptr #0 >
+}
+
+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}
+{ end.with.period
+    'add.period$
+    'skip$
+  if$
+  write$
+  show.english.translation entry.lang lang.zh = and
+    { ")"
+      write$
+    }
+    'skip$
+  if$
+  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$
+    { component.part.label "slash" =
+        { after.slash 'output.state := }
+        { new.block
+          component.part.label "in" =
+            { entry.lang lang.en =
+                { "In: " output
+                  write$
+                  ""
+                  before.all 'output.state :=
+                }
+                'skip$
+              if$
+            }
+            'skip$
+          if$
+        }
+      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 {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "\emph{" swap$ * "}" * }
+  if$
+}
+
+FUNCTION {format.btitle}
+{ italic.book.title
+  entry.lang lang.en = and
+    'emphasize
+    'skip$
+  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
+}
+
+STRINGS { entry.langid }
+
+FUNCTION {set.entry.lang}
+{ "" 'entry.langid :=
+  language empty$ not
+    { language 'entry.langid := }
+    'skip$
+  if$
+  langid empty$ not
+    { langid 'entry.langid := }
+    'skip$
+  if$
+  entry.langid empty$
+    { check.entry.lang }
+    { entry.langid "english" = entry.langid "american" = or entry.langid "british" = or
+        { lang.en }
+        { entry.langid "chinese" =
+            { lang.zh }
+            { entry.langid "japanese" =
+                { lang.ja }
+                { entry.langid "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.name}
+{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
+  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$
+}
+
+FUNCTION {format.names}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  ""
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr format.name bbl.et.al =
+      numnames bibliography.et.al.min #1 - > nameptr bibliography.et.al.use.first > and or
+        { ", " *
+          bbl.et.al *
+          #1 'namesleft :=
+        }
+        { nameptr #1 >
+            { namesleft #1 = bbl.and "" = not and
+                { bbl.and * }
+                { ", " * }
+              if$
+            }
+            'skip$
+          if$
+          s nameptr format.name *
+        }
+      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" = booktitle empty$ not and
+  or
+    'author.editor.full
+    { type$ "collection" =
+      type$ "proceedings" =
+      or
+        'editor.full
+        'author.full
+      if$
+    }
+  if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+  "\bibitem[" write$
+  label ")" *
+  make.full.names duplicate$ short.list =
+    { pop$ }
+    { duplicate$ "]" contains
+        { "{" swap$ * "}" * }
+        'skip$
+      if$
+      *
+    }
+  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{https://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 *
+          type$ "patent" = show.patent.country and
+            { address empty$ not
+                { address * ", " * }
+                { location empty$ not
+                    { location * ", " * }
+                    { entry.lang lang.zh =
+                        { "中国" * ", " * }
+                        'skip$
+                      if$
+                    }
+                  if$
+                }
+              if$
+            }
+            'skip$
+          if$
+          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 * " 卷" * }
+            { "Vol." volume tie.or.space.connect }
+          if$
+        }
+        { volume }
+      if$
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {format.number}
+{ number empty$ not
+    { number is.number
+        { entry.lang lang.zh =
+            { "第 " number * " 册" * }
+            { "No." 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$
+  format.btitle
+  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$
+  format.btitle
+}
+
+FUNCTION {remove.period}
+{ 't :=
+  "" 's :=
+    { t empty$ not }
+    { t #1 #1 substring$ 'tmp.str :=
+      tmp.str "." = not
+        { s tmp.str * 's := }
+        'skip$
+      if$
+      t #2 global.max$ substring$ 't :=
+    }
+  while$
+  s
+}
+
+FUNCTION {abbreviate}
+{ remove.period
+  't :=
+  t "l" change.case$ 's :=
+  ""
+  s "physical review letters" =
+    { "Phys Rev Lett" }
+    'skip$
+  if$
+  's :=
+  s empty$
+    { t }
+    { pop$ s }
+  if$
+}
+
+FUNCTION {get.journal.title}
+{ short.journal
+    { shortjournal empty$ not
+        { shortjournal }
+        { journal empty$ not
+            { journal abbreviate }
+            { journaltitle empty$ not
+                { journaltitle abbreviate }
+                { "" }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+    { journal empty$ not
+        { journal }
+        { journaltitle empty$ not
+            { journaltitle }
+            { shortjournal empty$ not
+                { shortjournal }
+                { "" }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {check.arxiv.preprint}
+{ #1 #5 substring$ purify$ "l" change.case$ "arxiv" =
+    { #1 }
+    { #0 }
+  if$
+}
+
+FUNCTION {format.journal}
+{ get.journal.title
+  duplicate$ empty$ not
+    { italic.journal entry.lang lang.en = and
+        'emphasize
+        'skip$
+      if$
+      link.journal
+        'add.link
+        'skip$
+      if$
+    }
+    '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
+    { entry.mark
+      show.medium.type
+        { medium empty$ not
+            { "/" * medium * }
+            { entry.is.electronic
+                { "/OL" * }
+                'skip$
+              if$
+            }
+          if$
+        }
+        'skip$
+      if$
+      'entry.mark :=
+      space.before.mark
+        { " " }
+        { "\allowbreak" }
+      if$
+      "[" * 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
+        { edition "1" = not
+            { entry.lang lang.zh =
+                { edition " 版" * }
+                { edition num.to.ordinal " ed." * }
+              if$
+            }
+            'skip$
+          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 }
+    { location empty$ not
+        { location }
+        { "" }
+      if$
+    }
+  if$
+  duplicate$ empty$ not
+    { 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$
+    }
+    { pop$
+      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 {extract.before.slash}
+{ 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.slash}
+{ duplicate$ empty$
+    { pop$ "" }
+    { 's :=
+      #1 'charptr :=
+      s text.length$ #1 + 'len :=
+        { charptr len <
+          s charptr #1 substring$ "-" = not
+          and
+          s charptr #1 substring$ "/" = not
+          and
+        }
+        { charptr #1 + 'charptr := }
+      while$
+        { charptr len <
+          s charptr #1 substring$ "-" =
+          s charptr #1 substring$ "/" =
+          or
+          and
+        }
+        { charptr #1 + 'charptr := }
+      while$
+      s charptr global.max$ substring$
+    }
+  if$
+}
+
+FUNCTION {format.year}
+{ year empty$ not
+    { year extract.before.slash extra.label * }
+    { date empty$ not
+        { date extract.before.dash extra.label * }
+        { entry.is.electronic not
+            { "empty year in " cite$ * warning$ }
+            'skip$
+          if$
+          urldate empty$ not
+            { "[" urldate extract.before.dash * extra.label * "]" * }
+            { "" }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.periodical.year}
+{ year empty$ not
+    { year extract.before.slash
+      "--" *
+      year extract.after.slash
+      duplicate$ empty$
+        'pop$
+        { * }
+      if$
+    }
+    { date empty$ not
+        { date extract.before.dash }
+        { "empty year in " cite$ * warning$
+          urldate empty$ not
+            { "[" urldate extract.before.dash * "]" * }
+            { "" }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.date}
+{ date empty$ not
+    { type$ "patent" = type$ "newspaper" = or
+        { date }
+        { entrysubtype empty$ not
+            { type$ "article" = entrysubtype "newspaper" = and
+                { date }
+                { format.year }
+              if$
+            }
+            { format.year }
+          if$
+        }
+      if$
+    }
+    { year empty$ not
+        { format.year }
+        { "" }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.editdate}
+{ date empty$ not
+    { "\allowbreak(" date * ")" * }
+    { "" }
+  if$
+}
+
+FUNCTION {format.urldate}
+{ show.urldate show.url and entry.url empty$ not and
+  is.pure.electronic or
+  urldate empty$ not and
+    { "\allowbreak[" urldate * "]" * }
+    { "" }
+  if$
+}
+
+FUNCTION {hyphenate}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { wave.dash.in.pages
+            { "~" * }
+            { "-" * }
+          if$
+            { 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.extracted.pages}
+{ pages empty$
+    { "" }
+    { pages
+      only.start.page
+        'extract.before.dash
+        'hyphenate
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.journal.volume}
+{ volume empty$ not
+    { bold.journal.volume
+        { "\textbf{" volume * "}" * }
+        { volume }
+      if$
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {format.journal.number}
+{ number empty$ not
+    { "\allowbreak (" number * ")" * }
+    { "" }
+  if$
+}
+
+FUNCTION {format.journal.pages}
+{ pages empty$
+    { "" }
+    { format.extracted.pages }
+  if$
+}
+
+FUNCTION {format.periodical.year.volume.number}
+{ year empty$ not
+    { year extract.before.slash }
+    { "empty year in periodical " cite$ * warning$ }
+  if$
+  volume empty$ not
+    { ", " * volume extract.before.dash * }
+    'skip$
+  if$
+  number empty$ not
+    { "\allowbreak (" * number extract.before.dash * ")" * }
+    'skip$
+  if$
+  "--" *
+  year extract.after.slash empty$
+  volume extract.after.dash empty$ and
+  number extract.after.dash empty$ and not
+    { year extract.after.slash empty$ not
+        { year extract.after.slash * }
+        { year extract.before.slash * }
+      if$
+      volume empty$ not
+        { ", " * volume extract.after.dash * }
+        'skip$
+      if$
+      number empty$ not
+        { "\allowbreak (" * number extract.after.dash * ")" * }
+        '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 {output.url}
+{ show.url is.pure.electronic or
+  entry.url empty$ not and
+    { new.block
+      entry.url output
+    }
+    'skip$
+  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
+    { "" '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$
+    }
+    'skip$
+  if$
+}
+
+FUNCTION {output.doi}
+{ doi empty$ not show.doi and
+  show.english.translation entry.lang lang.zh = and not and
+    { new.block
+      format.doi output
+    }
+    '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.eprint}
+{ archivePrefix empty$ not
+    { archivePrefix }
+    { eprinttype empty$ not
+        { archivePrefix }
+        { "" }
+      if$
+    }
+  if$
+  's :=
+  s empty$ not
+    { s ": \eprint{" *
+      url empty$ not
+        { url }
+        { "https://" s "l" change.case$ * ".org/abs/" * eprint * }
+      if$
+      * "}{" *
+      eprint * "}" *
+    }
+    { eprint }
+  if$
+}
+
+FUNCTION {output.eprint}
+{ show.preprint eprint empty$ not and
+    { new.block
+      format.eprint output
+    }
+    'skip$
+  if$
+}
+
+FUNCTION {format.note}
+{ note empty$ not show.note and
+    { note }
+    { "" }
+  if$
+}
+
+FUNCTION {output.translation}
+{ show.english.translation entry.lang lang.zh = and
+    { translation empty$ not
+        { translation }
+        { "[English translation missing!]" }
+      if$
+      " (in Chinese)" * output
+      write$
+      format.doi duplicate$ empty$ not
+        { newline$
+          write$
+        }
+        'pop$
+      if$
+      " \\" write$
+      newline$
+      "(" write$
+      ""
+      before.all 'output.state :=
+    }
+    'skip$
+  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
+  output.translation
+  author empty$ not
+    { format.authors }
+    { editor empty$ not
+        { format.editors }
+        { "empty author and editor in " cite$ * warning$
+          ""
+        }
+      if$
+    }
+  if$
+  output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  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
+  year.after.author not
+    { format.year "year" output.check }
+    'skip$
+  if$
+  format.pages bbl.pages.colon output.after
+  format.urldate "" output.after
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+  output.translation
+  format.authors output
+  author format.key output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  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
+  year.after.author not
+    { format.year "year" output.check }
+    'skip$
+  if$
+  format.extracted.pages bbl.pages.colon output.after
+  format.urldate "" output.after
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {periodical}
+{ output.bibitem
+  output.translation
+  format.authors output
+  author format.key output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  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
+  year.after.author not
+    { format.periodical.year "year" output.check }
+    'skip$
+  if$
+  format.urldate "" output.after
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {journal.article}
+{ output.bibitem
+  output.translation
+  format.authors output
+  author format.key output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  new.block
+  title.in.journal
+    { format.title "title" output.check
+      entrysubtype empty$ not
+        {
+          entrysubtype "newspaper" =
+            { "N" set.entry.mark }
+            { "J" set.entry.mark }
+          if$
+        }
+        { "J" set.entry.mark }
+      if$
+      format.mark "" output.after
+      new.block
+    }
+    'skip$
+  if$
+  format.journal "journal" output.check
+  year.after.author not
+    { format.date "year" output.check }
+    'skip$
+  if$
+  format.journal.volume output
+  format.journal.number "" output.after
+  format.journal.pages bbl.pages.colon output.after
+  format.urldate "" output.after
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {patent}
+{ output.bibitem
+  output.translation
+  format.authors output
+  author format.key output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  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
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {electronic}
+{ #1 #1 check.electronic
+  #1 'entry.is.electronic :=
+  #1 'is.pure.electronic :=
+  output.bibitem
+  output.translation
+  format.authors output
+  author format.key output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  new.block
+  format.series.vol.num.title "title" output.check
+  "EB" set.entry.mark
+  format.mark "" output.after
+  new.block
+  format.address.publisher output
+  year.after.author not
+    { date empty$
+        { format.date output }
+        'skip$
+      if$
+    }
+    'skip$
+  if$
+  format.pages bbl.pages.colon output.after
+  format.editdate "" output.after
+  format.urldate "" output.after
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {preprint}
+{ output.bibitem
+  output.translation
+  author empty$ not
+    { format.authors }
+    { editor empty$ not
+        { format.editors }
+        { "empty author and editor in " cite$ * warning$
+          ""
+        }
+      if$
+    }
+  if$
+  output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  new.block
+  title.in.journal
+    { format.series.vol.num.title "title" output.check
+      "A" set.entry.mark
+      format.mark "" output.after
+      new.block
+    }
+    'skip$
+  if$
+  format.translators output
+  new.sentence
+  format.edition output
+  new.block
+  year.after.author not
+    { date empty$
+        { format.date output }
+        'skip$
+      if$
+    }
+    'skip$
+  if$
+  format.pages bbl.pages.colon output.after
+  format.editdate "" output.after
+  format.urldate "" output.after
+  output.eprint
+  output.url
+  show.preprint not eprint empty$ or
+    'output.doi
+    'skip$
+  if$
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {misc}
+{ get.journal.title
+  duplicate$ empty$ not
+    { check.arxiv.preprint
+        'preprint
+        'journal.article
+      if$
+    }
+    { pop$
+      booktitle empty$ not
+        'incollection
+        { publisher empty$ not
+            'monograph
+            { eprint empty$ not archivePrefix empty$ not or
+                'preprint
+                { entry.is.electronic
+                    'electronic
+                    {
+                      "Z" set.entry.mark
+                      monograph
+                    }
+                  if$
+                }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+  empty.misc.check
+}
+
+FUNCTION {archive}
+{ "A" set.entry.mark
+  misc
+}
+
+FUNCTION {article} { 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} {
+  booktitle empty$
+    'book
+    'incollection
+  if$
+}
+
+FUNCTION {inproceedings}
+{ "C" set.entry.mark
+  incollection
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {legislation} { archive }
+
+FUNCTION {map}
+{ "CM" set.entry.mark
+  misc
+}
+
+FUNCTION {manual} { monograph }
+
+FUNCTION {thesis}
+{ "D" set.entry.mark
+  monograph
+}
+
+FUNCTION {newspaper}
+{ "N" set.entry.mark
+  article
+}
+
+FUNCTION {online}
+{ "EB" set.entry.mark
+  electronic
+}
+
+FUNCTION {mastersthesis} { thesis }
+
+FUNCTION {phdthesis} { thesis }
+
+FUNCTION {proceedings}
+{ "C" set.entry.mark
+  monograph
+}
+
+FUNCTION {software}
+{ "CP" set.entry.mark
+  electronic
+}
+
+FUNCTION {standard}
+{ "S" set.entry.mark
+  misc
+}
+
+FUNCTION {report}
+{ "R" set.entry.mark
+  misc
+}
+
+FUNCTION {techreport} { report }
+
+FUNCTION {unpublished} { 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.name}
+{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
+  t "others" =
+    { citation.et.al }
+    { t get.str.lang 'name.lang :=
+      name.lang lang.zh = name.lang lang.ja = or
+        { t #1 "{ll}{ff}" format.name$ }
+        { t #1 "{vv~}{ll}" format.name$ }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+  s #1 format.lab.name 'short.label :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  ""
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr format.lab.name citation.et.al =
+      numnames citation.et.al.min #1 - > nameptr citation.et.al.use.first > and or
+        { bbl.space *
+          citation.et.al *
+          #1 'namesleft :=
+        }
+        { nameptr #1 >
+            { namesleft #1 = citation.and "" = not and
+                { citation.and * }
+                { ", " * }
+              if$
+            }
+            'skip$
+          if$
+          s nameptr format.lab.name *
+        }
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+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}
+{ "" 'short.label :=
+  type$ "book" =
+  type$ "inbook" = booktitle empty$ not and
+  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 :=
+  short.label empty$
+    { short.list 'short.label := }
+    'skip$
+  if$
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+  short.list "]" contains
+    { "{" short.list * "}" * }
+    { short.list }
+  if$
+  "("
+  *
+  format.year duplicate$ empty$
+  short.list key field.or.null = or
+     { pop$ "" }
+     'skip$
+  if$
+  duplicate$ "]" contains
+    { "{" swap$ * "}" * }
+    'skip$
+  if$
+  *
+  'label :=
+  short.label
+  "("
+  *
+  format.year duplicate$ empty$
+  short.list key field.or.null = or
+     { pop$ "" }
+     'skip$
+  if$
+  *
+  'short.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
+  #0 'is.pure.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 last.extra.label }
+
+INTEGERS { longest.label.width number.label }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+  #0 int.to.chr$ 'last.label :=
+  "" 'next.extra :=
+  #0 'longest.label.width :=
+  #0 'number.label :=
+  "" 'last.extra.label :=
+}
+
+FUNCTION {forward.pass}
+{
+  number.label #1 + 'number.label :=
+}
+
+FUNCTION {reverse.pass}
+{
+  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$
+  terms.in.macro
+    { "\providecommand{\biband}{和}"
+      write$ newline$
+      "\providecommand{\bibetal}{等}"
+      write$ newline$
+    }
+    'skip$
+  if$
+  "\providecommand{\natexlab}[1]{#1}"
+  write$ newline$
+  "\providecommand{\url}[1]{#1}"
+  write$ newline$
+  "\expandafter\ifx\csname urlstyle\endcsname\relax\else"
+  write$ newline$
+  "  \urlstyle{same}\fi"
+  write$ newline$
+  "\expandafter\ifx\csname href\endcsname\relax"
+  write$ newline$
+  "  \DeclareUrlCommand\doi{\urlstyle{rm}}"
+  write$ newline$
+  "  \def\eprint#1#2{#2}"
+      write$ newline$
+  "\else"
+  write$ newline$
+  "  \def\doi#1{\href{https://doi.org/#1}{\nolinkurl{#1}}}"
+  write$ newline$
+  "  \let\eprint\href"
+      write$ newline$
+  "\fi"
+      write$ newline$
+    }
+
+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/nxuthesis/nxuthesis-bachelor.bst
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/bibtex/bst/nxuthesis/nxuthesis-numeric.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/nxuthesis/nxuthesis-numeric.bst	                        (rev 0)
+++ trunk/Master/texmf-dist/bibtex/bst/nxuthesis/nxuthesis-numeric.bst	2024-05-24 20:59:31 UTC (rev 71344)
@@ -0,0 +1,2470 @@
+%%
+%% This is file `variants/thu/thuthesis-numeric.bst',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% gbt7714.dtx  (with options: `2015,thu,numerical')
+%% -------------------------------------------------------------------
+%% GB/T 7714 BibTeX Style
+%% https://github.com/zepinglee/gbt7714-bibtex-style
+%% Version: 2024/03/08 v2.1.6
+%% -------------------------------------------------------------------
+%% Copyright (C) 2016--2024 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 2008 or later.
+%% -------------------------------------------------------------------
+INTEGERS {
+  citation.et.al.min
+  citation.et.al.use.first
+  bibliography.et.al.min
+  bibliography.et.al.use.first
+  uppercase.name
+  terms.in.macro
+  year.after.author
+  period.after.author
+  italic.book.title
+  sentence.case.title
+  link.title
+  title.in.journal
+  show.patent.country
+  show.mark
+  space.before.mark
+  show.medium.type
+  short.journal
+  italic.journal
+  link.journal
+  bold.journal.volume
+  show.missing.address.publisher
+  space.before.pages
+  only.start.page
+  wave.dash.in.pages
+  show.urldate
+  show.url
+  show.doi
+  show.preprint
+  show.note
+  show.english.translation
+  end.with.period
+}
+
+STRINGS {
+  component.part.label
+}
+
+FUNCTION {load.config}
+{
+  #2 'citation.et.al.min :=
+  #1 'citation.et.al.use.first :=
+  #4 'bibliography.et.al.min :=
+  #3 'bibliography.et.al.use.first :=
+  #0 'uppercase.name :=
+  #0 'terms.in.macro :=
+  #0 'year.after.author :=
+  #1 'period.after.author :=
+  #0 'italic.book.title :=
+  #1 'sentence.case.title :=
+  #0 'link.title :=
+  #1 'title.in.journal :=
+  #1 'show.patent.country :=
+  #1 'show.mark :=
+  #0 'space.before.mark :=
+  #1 'show.medium.type :=
+  "slash" 'component.part.label :=
+  #0 'short.journal :=
+  #0 'italic.journal :=
+  #0 'link.journal :=
+  #0 'bold.journal.volume :=
+  #0 'show.missing.address.publisher :=
+  #1 'space.before.pages :=
+  #0 'only.start.page :=
+  #0 'wave.dash.in.pages :=
+  #1 'show.urldate :=
+  #1 'show.url :=
+  #1 'show.doi :=
+  #1 'show.preprint :=
+  #0 'show.note :=
+  #0 'show.english.translation :=
+  #1 'end.with.period :=
+}
+
+ENTRY
+  { address
+    archivePrefix
+    author
+    booktitle
+    date
+    doi
+    edition
+    editor
+    eprint
+    eprinttype
+    entrysubtype
+    howpublished
+    institution
+    journal
+    journaltitle
+    key
+    langid
+    language
+    location
+    mark
+    medium
+    note
+    number
+    organization
+    pages
+    publisher
+    school
+    series
+    shortjournal
+    title
+    translation
+    translator
+    url
+    urldate
+    volume
+    year
+  }
+  { entry.lang entry.is.electronic is.pure.electronic entry.numbered }
+  { label extra.label sort.label short.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.and}
+{ "" }
+
+FUNCTION {bbl.et.al}
+{ entry.lang lang.zh =
+    { "等" }
+    { entry.lang lang.ja =
+        { "他" }
+        { entry.lang lang.ru =
+            { "идр" }
+            { "et~al." }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {citation.and}
+{ terms.in.macro
+    { "{\biband}" }
+    'bbl.and
+  if$
+}
+
+FUNCTION {citation.et.al}
+{ terms.in.macro
+    { "{\bibetal}" }
+    'bbl.et.al
+  if$
+}
+
+FUNCTION {bbl.colon} { ": " }
+
+FUNCTION {bbl.pages.colon}
+{ space.before.pages
+    { ": " }
+    { ":\allowbreak " }
+  if$
+}
+
+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 { x y }
+
+FUNCTION {contains}
+{ 'y :=
+  'x :=
+  y text.length$ 'len :=
+  x text.length$ len - #1 + 'charptr :=
+    { charptr #0 >
+      x charptr len substring$ y = not
+      and
+    }
+    { charptr #1 - 'charptr := }
+  while$
+  charptr #0 >
+}
+
+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}
+{ end.with.period
+    'add.period$
+    'skip$
+  if$
+  write$
+  show.english.translation entry.lang lang.zh = and
+    { ")"
+      write$
+    }
+    'skip$
+  if$
+  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$
+    { component.part.label "slash" =
+        { after.slash 'output.state := }
+        { new.block
+          component.part.label "in" =
+            { entry.lang lang.en =
+                { "In: " output
+                  write$
+                  ""
+                  before.all 'output.state :=
+                }
+                'skip$
+              if$
+            }
+            'skip$
+          if$
+        }
+      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 {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "\emph{" swap$ * "}" * }
+  if$
+}
+
+FUNCTION {format.btitle}
+{ italic.book.title
+  entry.lang lang.en = and
+    'emphasize
+    'skip$
+  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
+}
+
+STRINGS { entry.langid }
+
+FUNCTION {set.entry.lang}
+{ "" 'entry.langid :=
+  language empty$ not
+    { language 'entry.langid := }
+    'skip$
+  if$
+  langid empty$ not
+    { langid 'entry.langid := }
+    'skip$
+  if$
+  entry.langid empty$
+    { check.entry.lang }
+    { entry.langid "english" = entry.langid "american" = or entry.langid "british" = or
+        { lang.en }
+        { entry.langid "chinese" =
+            { lang.zh }
+            { entry.langid "japanese" =
+                { lang.ja }
+                { entry.langid "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.name}
+{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
+  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$
+}
+
+FUNCTION {format.names}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  ""
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr format.name bbl.et.al =
+      numnames bibliography.et.al.min #1 - > nameptr bibliography.et.al.use.first > and or
+        { ", " *
+          bbl.et.al *
+          #1 'namesleft :=
+        }
+        { nameptr #1 >
+            { namesleft #1 = bbl.and "" = not and
+                { bbl.and * }
+                { ", " * }
+              if$
+            }
+            'skip$
+          if$
+          s nameptr format.name *
+        }
+      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" = booktitle empty$ not and
+  or
+    'author.editor.full
+    { type$ "collection" =
+      type$ "proceedings" =
+      or
+        'editor.full
+        'author.full
+      if$
+    }
+  if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+  "\bibitem[" write$
+  label ")" *
+  make.full.names duplicate$ short.list =
+    { pop$ }
+    { duplicate$ "]" contains
+        { "{" swap$ * "}" * }
+        'skip$
+      if$
+      *
+    }
+  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{https://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 *
+          type$ "patent" = show.patent.country and
+            { address empty$ not
+                { address * ", " * }
+                { location empty$ not
+                    { location * ", " * }
+                    { entry.lang lang.zh =
+                        { "中国" * ", " * }
+                        'skip$
+                      if$
+                    }
+                  if$
+                }
+              if$
+            }
+            'skip$
+          if$
+          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 * " 卷" * }
+            { "Vol." volume tie.or.space.connect }
+          if$
+        }
+        { volume }
+      if$
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {format.number}
+{ number empty$ not
+    { number is.number
+        { entry.lang lang.zh =
+            { "第 " number * " 册" * }
+            { "No." 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$
+  format.btitle
+  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$
+  format.btitle
+}
+
+FUNCTION {remove.period}
+{ 't :=
+  "" 's :=
+    { t empty$ not }
+    { t #1 #1 substring$ 'tmp.str :=
+      tmp.str "." = not
+        { s tmp.str * 's := }
+        'skip$
+      if$
+      t #2 global.max$ substring$ 't :=
+    }
+  while$
+  s
+}
+
+FUNCTION {abbreviate}
+{ remove.period
+  't :=
+  t "l" change.case$ 's :=
+  ""
+  s "physical review letters" =
+    { "Phys Rev Lett" }
+    'skip$
+  if$
+  's :=
+  s empty$
+    { t }
+    { pop$ s }
+  if$
+}
+
+FUNCTION {get.journal.title}
+{ short.journal
+    { shortjournal empty$ not
+        { shortjournal }
+        { journal empty$ not
+            { journal abbreviate }
+            { journaltitle empty$ not
+                { journaltitle abbreviate }
+                { "" }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+    { journal empty$ not
+        { journal }
+        { journaltitle empty$ not
+            { journaltitle }
+            { shortjournal empty$ not
+                { shortjournal }
+                { "" }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {check.arxiv.preprint}
+{ #1 #5 substring$ purify$ "l" change.case$ "arxiv" =
+    { #1 }
+    { #0 }
+  if$
+}
+
+FUNCTION {format.journal}
+{ get.journal.title
+  duplicate$ empty$ not
+    { italic.journal entry.lang lang.en = and
+        'emphasize
+        'skip$
+      if$
+      link.journal
+        'add.link
+        'skip$
+      if$
+    }
+    '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
+    { entry.mark
+      show.medium.type
+        { medium empty$ not
+            { "/" * medium * }
+            { entry.is.electronic
+                { "/OL" * }
+                'skip$
+              if$
+            }
+          if$
+        }
+        'skip$
+      if$
+      'entry.mark :=
+      space.before.mark
+        { " " }
+        { "\allowbreak" }
+      if$
+      "[" * 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
+        { edition "1" = not
+            { entry.lang lang.zh =
+                { edition " 版" * }
+                { edition num.to.ordinal " ed." * }
+              if$
+            }
+            'skip$
+          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 }
+    { location empty$ not
+        { location }
+        { "" }
+      if$
+    }
+  if$
+  duplicate$ empty$ not
+    { 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$
+    }
+    { pop$
+      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 {extract.before.slash}
+{ 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.slash}
+{ duplicate$ empty$
+    { pop$ "" }
+    { 's :=
+      #1 'charptr :=
+      s text.length$ #1 + 'len :=
+        { charptr len <
+          s charptr #1 substring$ "-" = not
+          and
+          s charptr #1 substring$ "/" = not
+          and
+        }
+        { charptr #1 + 'charptr := }
+      while$
+        { charptr len <
+          s charptr #1 substring$ "-" =
+          s charptr #1 substring$ "/" =
+          or
+          and
+        }
+        { charptr #1 + 'charptr := }
+      while$
+      s charptr global.max$ substring$
+    }
+  if$
+}
+
+FUNCTION {format.year}
+{ year empty$ not
+    { year extract.before.slash extra.label * }
+    { date empty$ not
+        { date extract.before.dash extra.label * }
+        { entry.is.electronic not
+            { "empty year in " cite$ * warning$ }
+            'skip$
+          if$
+          urldate empty$ not
+            { "[" urldate extract.before.dash * extra.label * "]" * }
+            { "" }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.periodical.year}
+{ year empty$ not
+    { year extract.before.slash
+      "--" *
+      year extract.after.slash
+      duplicate$ empty$
+        'pop$
+        { * }
+      if$
+    }
+    { date empty$ not
+        { date extract.before.dash }
+        { "empty year in " cite$ * warning$
+          urldate empty$ not
+            { "[" urldate extract.before.dash * "]" * }
+            { "" }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.date}
+{ date empty$ not
+    { type$ "patent" = type$ "newspaper" = or
+        { date }
+        { entrysubtype empty$ not
+            { type$ "article" = entrysubtype "newspaper" = and
+                { date }
+                { format.year }
+              if$
+            }
+            { format.year }
+          if$
+        }
+      if$
+    }
+    { year empty$ not
+        { format.year }
+        { "" }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.editdate}
+{ date empty$ not
+    { "\allowbreak(" date * ")" * }
+    { "" }
+  if$
+}
+
+FUNCTION {format.urldate}
+{ show.urldate show.url and entry.url empty$ not and
+  is.pure.electronic or
+  urldate empty$ not and
+    { "\allowbreak[" urldate * "]" * }
+    { "" }
+  if$
+}
+
+FUNCTION {hyphenate}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { wave.dash.in.pages
+            { "~" * }
+            { "-" * }
+          if$
+            { 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.extracted.pages}
+{ pages empty$
+    { "" }
+    { pages
+      only.start.page
+        'extract.before.dash
+        'hyphenate
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.journal.volume}
+{ volume empty$ not
+    { bold.journal.volume
+        { "\textbf{" volume * "}" * }
+        { volume }
+      if$
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {format.journal.number}
+{ number empty$ not
+    { "\allowbreak (" number * ")" * }
+    { "" }
+  if$
+}
+
+FUNCTION {format.journal.pages}
+{ pages empty$
+    { "" }
+    { format.extracted.pages }
+  if$
+}
+
+FUNCTION {format.periodical.year.volume.number}
+{ year empty$ not
+    { year extract.before.slash }
+    { "empty year in periodical " cite$ * warning$ }
+  if$
+  volume empty$ not
+    { ", " * volume extract.before.dash * }
+    'skip$
+  if$
+  number empty$ not
+    { "\allowbreak (" * number extract.before.dash * ")" * }
+    'skip$
+  if$
+  "--" *
+  year extract.after.slash empty$
+  volume extract.after.dash empty$ and
+  number extract.after.dash empty$ and not
+    { year extract.after.slash empty$ not
+        { year extract.after.slash * }
+        { year extract.before.slash * }
+      if$
+      volume empty$ not
+        { ", " * volume extract.after.dash * }
+        'skip$
+      if$
+      number empty$ not
+        { "\allowbreak (" * number extract.after.dash * ")" * }
+        '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 {output.url}
+{ show.url is.pure.electronic or
+  entry.url empty$ not and
+    { new.block
+      entry.url output
+    }
+    'skip$
+  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
+    { "" '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$
+    }
+    'skip$
+  if$
+}
+
+FUNCTION {output.doi}
+{ doi empty$ not show.doi and
+  show.english.translation entry.lang lang.zh = and not and
+    { new.block
+      format.doi output
+    }
+    '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.eprint}
+{ archivePrefix empty$ not
+    { archivePrefix }
+    { eprinttype empty$ not
+        { archivePrefix }
+        { "" }
+      if$
+    }
+  if$
+  's :=
+  s empty$ not
+    { s ": \eprint{" *
+      url empty$ not
+        { url }
+        { "https://" s "l" change.case$ * ".org/abs/" * eprint * }
+      if$
+      * "}{" *
+      eprint * "}" *
+    }
+    { eprint }
+  if$
+}
+
+FUNCTION {output.eprint}
+{ show.preprint eprint empty$ not and
+    { new.block
+      format.eprint output
+    }
+    'skip$
+  if$
+}
+
+FUNCTION {format.note}
+{ note empty$ not show.note and
+    { note }
+    { "" }
+  if$
+}
+
+FUNCTION {output.translation}
+{ show.english.translation entry.lang lang.zh = and
+    { translation empty$ not
+        { translation }
+        { "[English translation missing!]" }
+      if$
+      " (in Chinese)" * output
+      write$
+      format.doi duplicate$ empty$ not
+        { newline$
+          write$
+        }
+        'pop$
+      if$
+      " \\" write$
+      newline$
+      "(" write$
+      ""
+      before.all 'output.state :=
+    }
+    'skip$
+  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
+  output.translation
+  author empty$ not
+    { format.authors }
+    { editor empty$ not
+        { format.editors }
+        { "empty author and editor in " cite$ * warning$
+          ""
+        }
+      if$
+    }
+  if$
+  output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  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
+  year.after.author not
+    { format.year "year" output.check }
+    'skip$
+  if$
+  format.pages bbl.pages.colon output.after
+  format.urldate "" output.after
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+  output.translation
+  format.authors output
+  author format.key output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  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
+  year.after.author not
+    { format.year "year" output.check }
+    'skip$
+  if$
+  format.extracted.pages bbl.pages.colon output.after
+  format.urldate "" output.after
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {periodical}
+{ output.bibitem
+  output.translation
+  format.authors output
+  author format.key output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  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
+  year.after.author not
+    { format.periodical.year "year" output.check }
+    'skip$
+  if$
+  format.urldate "" output.after
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {journal.article}
+{ output.bibitem
+  output.translation
+  format.authors output
+  author format.key output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  new.block
+  title.in.journal
+    { format.title "title" output.check
+      entrysubtype empty$ not
+        {
+          entrysubtype "newspaper" =
+            { "N" set.entry.mark }
+            { "J" set.entry.mark }
+          if$
+        }
+        { "J" set.entry.mark }
+      if$
+      format.mark "" output.after
+      new.block
+    }
+    'skip$
+  if$
+  format.journal "journal" output.check
+  year.after.author not
+    { format.date "year" output.check }
+    'skip$
+  if$
+  format.journal.volume output
+  format.journal.number "" output.after
+  format.journal.pages bbl.pages.colon output.after
+  format.urldate "" output.after
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {patent}
+{ output.bibitem
+  output.translation
+  format.authors output
+  author format.key output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  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
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {electronic}
+{ #1 #1 check.electronic
+  #1 'entry.is.electronic :=
+  #1 'is.pure.electronic :=
+  output.bibitem
+  output.translation
+  format.authors output
+  author format.key output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  new.block
+  format.series.vol.num.title "title" output.check
+  "EB" set.entry.mark
+  format.mark "" output.after
+  new.block
+  format.address.publisher output
+  year.after.author not
+    { date empty$
+        { format.date output }
+        'skip$
+      if$
+    }
+    'skip$
+  if$
+  format.pages bbl.pages.colon output.after
+  format.editdate "" output.after
+  format.urldate "" output.after
+  output.url
+  output.doi
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {preprint}
+{ output.bibitem
+  output.translation
+  author empty$ not
+    { format.authors }
+    { editor empty$ not
+        { format.editors }
+        { "empty author and editor in " cite$ * warning$
+          ""
+        }
+      if$
+    }
+  if$
+  output
+  year.after.author
+    { period.after.author
+        'new.sentence
+        'skip$
+      if$
+      format.year "year" output.check
+    }
+    'skip$
+  if$
+  new.block
+  title.in.journal
+    { format.series.vol.num.title "title" output.check
+      "A" set.entry.mark
+      format.mark "" output.after
+      new.block
+    }
+    'skip$
+  if$
+  format.translators output
+  new.sentence
+  format.edition output
+  new.block
+  year.after.author not
+    { date empty$
+        { format.date output }
+        'skip$
+      if$
+    }
+    'skip$
+  if$
+  format.pages bbl.pages.colon output.after
+  format.editdate "" output.after
+  format.urldate "" output.after
+  output.eprint
+  output.url
+  show.preprint not eprint empty$ or
+    'output.doi
+    'skip$
+  if$
+  new.block
+  format.note output
+  fin.entry
+}
+
+FUNCTION {misc}
+{ get.journal.title
+  duplicate$ empty$ not
+    { check.arxiv.preprint
+        'preprint
+        'journal.article
+      if$
+    }
+    { pop$
+      booktitle empty$ not
+        'incollection
+        { publisher empty$ not
+            'monograph
+            { eprint empty$ not archivePrefix empty$ not or
+                'preprint
+                { entry.is.electronic
+                    'electronic
+                    {
+                      "Z" set.entry.mark
+                      monograph
+                    }
+                  if$
+                }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+  empty.misc.check
+}
+
+FUNCTION {archive}
+{ "A" set.entry.mark
+  misc
+}
+
+FUNCTION {article} { 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} {
+  booktitle empty$
+    'book
+    'incollection
+  if$
+}
+
+FUNCTION {inproceedings}
+{ "C" set.entry.mark
+  incollection
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {legislation} { archive }
+
+FUNCTION {map}
+{ "CM" set.entry.mark
+  misc
+}
+
+FUNCTION {manual} { monograph }
+
+FUNCTION {thesis}
+{ "D" set.entry.mark
+  monograph
+}
+
+FUNCTION {newspaper}
+{ "N" set.entry.mark
+  article
+}
+
+FUNCTION {online}
+{ "EB" set.entry.mark
+  electronic
+}
+
+FUNCTION {mastersthesis} { thesis }
+
+FUNCTION {phdthesis} { thesis }
+
+FUNCTION {proceedings}
+{ "C" set.entry.mark
+  monograph
+}
+
+FUNCTION {software}
+{ "CP" set.entry.mark
+  electronic
+}
+
+FUNCTION {standard}
+{ "S" set.entry.mark
+  misc
+}
+
+FUNCTION {report}
+{ "R" set.entry.mark
+  misc
+}
+
+FUNCTION {techreport} { report }
+
+FUNCTION {unpublished} { 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.name}
+{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
+  t "others" =
+    { citation.et.al }
+    { t get.str.lang 'name.lang :=
+      name.lang lang.zh = name.lang lang.ja = or
+        { t #1 "{ll}{ff}" format.name$ }
+        { t #1 "{vv~}{ll}" format.name$ }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+  s #1 format.lab.name 'short.label :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  ""
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr format.lab.name citation.et.al =
+      numnames citation.et.al.min #1 - > nameptr citation.et.al.use.first > and or
+        { bbl.space *
+          citation.et.al *
+          #1 'namesleft :=
+        }
+        { nameptr #1 >
+            { namesleft #1 = citation.and "" = not and
+                { citation.and * }
+                { ", " * }
+              if$
+            }
+            'skip$
+          if$
+          s nameptr format.lab.name *
+        }
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+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}
+{ "" 'short.label :=
+  type$ "book" =
+  type$ "inbook" = booktitle empty$ not and
+  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 :=
+  short.label empty$
+    { short.list 'short.label := }
+    'skip$
+  if$
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+  short.list "]" contains
+    { "{" short.list * "}" * }
+    { short.list }
+  if$
+  "("
+  *
+  format.year duplicate$ empty$
+  short.list key field.or.null = or
+     { pop$ "" }
+     'skip$
+  if$
+  duplicate$ "]" contains
+    { "{" swap$ * "}" * }
+    'skip$
+  if$
+  *
+  'label :=
+  short.label
+  "("
+  *
+  format.year duplicate$ empty$
+  short.list key field.or.null = or
+     { pop$ "" }
+     'skip$
+  if$
+  *
+  'short.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
+  #0 'is.pure.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 last.extra.label }
+
+INTEGERS { longest.label.width number.label }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+  #0 int.to.chr$ 'last.label :=
+  "" 'next.extra :=
+  #0 'longest.label.width :=
+  #0 'number.label :=
+  "" 'last.extra.label :=
+}
+
+FUNCTION {forward.pass}
+{
+  number.label #1 + 'number.label :=
+}
+
+FUNCTION {reverse.pass}
+{
+  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$
+  terms.in.macro
+    { "\providecommand{\biband}{和}"
+      write$ newline$
+      "\providecommand{\bibetal}{等}"
+      write$ newline$
+    }
+    'skip$
+  if$
+  "\providecommand{\natexlab}[1]{#1}"
+  write$ newline$
+  "\providecommand{\url}[1]{#1}"
+  write$ newline$
+  "\expandafter\ifx\csname urlstyle\endcsname\relax\else"
+  write$ newline$
+  "  \urlstyle{same}\fi"
+  write$ newline$
+  "\expandafter\ifx\csname href\endcsname\relax"
+  write$ newline$
+  "  \DeclareUrlCommand\doi{\urlstyle{rm}}"
+  write$ newline$
+  "  \def\eprint#1#2{#2}"
+      write$ newline$
+  "\else"
+  write$ newline$
+  "  \def\doi#1{\href{https://doi.org/#1}{\nolinkurl{#1}}}"
+  write$ newline$
+  "  \let\eprint\href"
+      write$ newline$
+  "\fi"
+      write$ newline$
+    }
+
+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/nxuthesis/nxuthesis-numeric.bst
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/nxuthesis/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nxuthesis/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/nxuthesis/README.md	2024-05-24 20:59:31 UTC (rev 71344)
@@ -0,0 +1,13 @@
+
+# NxuThesis
+
+**NxuThesis** 是 **N**ing**x**ia **U**niversity **Thesis** LaTeX Template 的缩写。
+
+此宏包旨在建立一个简单易用的宁夏大学学位论文 LaTeX 模板
+
+
+# NxuThesis
+
+**NxuThesis** is an abbreviation of **N**ing**x**ia **U**niversity **Thesis** LaTeX Template.
+
+This package establishes a simple and easy-to-use LaTeX template for Ningxia dissertations.


Property changes on: trunk/Master/texmf-dist/doc/latex/nxuthesis/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/abstract.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/abstract.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/abstract.tex	2024-05-24 20:59:31 UTC (rev 71344)
@@ -0,0 +1,37 @@
+% 中英文摘要和关键字
+
+\begin{abstract}
+	论文的摘要是对论文研究内容和成果的高度概括。
+	摘要应对论文所研究的问题及其研究目的进行描述,对研究方法和过程进行简单介绍,对研究成果和所得结论进行概括。
+	摘要应具有独立性和自明性,其内容应包含与论文全文同等量的主要信息。
+	使读者即使不阅读全文,通过摘要就能了解论文的总体内容和主要成果。
+	
+	论文摘要的书写应力求精确、简明。
+	切忌写成对论文书写内容进行提要的形式,尤其要避免“第 1 章……;第 2 章……;……”这种或类似的陈述方式。
+	
+	关键词是为了文献标引工作、用以表示全文主要内容信息的单词或术语。
+	关键词不超过 5 个,每个关键词中间用分号分隔。
+	
+	% 关键词用“英文逗号”分隔,输出时会自动处理为正确的分隔符
+	\nxusetup{
+		keywords = {关键词 1, 关键词 2, 关键词 3, 关键词 4, 关键词 5},
+	}
+\end{abstract}
+
+\begin{abstract*}
+	An abstract of a dissertation is a summary and extraction of research work and contributions.
+	Included in an abstract should be description of research topic and research objective, brief introduction to methodology and research process, and summary of conclusion and contributions of the research.
+	An abstract should be characterized by independence and clarity and carry identical information with the dissertation.
+	It should be such that the general idea and major contributions of the dissertation are conveyed without reading the dissertation.
+	
+	An abstract should be concise and to the point.
+	It is a misunderstanding to make an abstract an outline of the dissertation and words “the first chapter”, “the second chapter” and the like should be avoided in the abstract.
+	
+	Keywords are terms used in a dissertation for indexing, reflecting core information of the dissertation.
+	An abstract may contain a maximum of 5 keywords, with semi-colons used in between to separate one another.
+	
+	% Use comma as separator when inputting
+	\nxusetup{
+		keywords* = {keyword 1, keyword 2, keyword 3, keyword 4, keyword 5},
+	}
+\end{abstract*}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/abstract.tex
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/acknowledgements.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/acknowledgements.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/acknowledgements.tex	2024-05-24 20:59:31 UTC (rev 71344)
@@ -0,0 +1,10 @@
+
+\begin{acknowledgements}
+  衷心感谢导师×××教授和水利系××教授对本人的精心指导。他们的言传身教将使我终生受益。
+
+  在中国水利水电科学研究院进行九个月的合作研究期间,承蒙××教授热心指导与帮助,不胜感激。
+
+  感谢×××××实验室主任×××教授,以及实验室全体老师和同窗们学的热情帮助和支持!
+
+  本课题承蒙国家自然科学基金资助,特此致谢。
+\end{acknowledgements}


Property changes on: trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/acknowledgements.tex
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/chap01.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/chap01.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/chap01.tex	2024-05-24 20:59:31 UTC (rev 71344)
@@ -0,0 +1,171 @@
+\chapter{宁夏大学学位论文书写规范}
+
+研究生学位论文是研究生科学研究工作的全面总结, 是描述其研究成果、代表其研究水平的重要学术文献资料,是申请和授予相应学位的基本依据。学位论文撰写是研究生培养过程的重要环节和基本训练之一,必须按照确定的规范认真执行。指导教师应加强指导,严格把关。
+
+论文撰写应符合国家及各专业部门制定的有关标准,符合汉语语法规范。
+
+硕士和博士学位论文,除在字数、理论研究的深度及创造性成果等方面的要求不同外,对其撰写规范的要求基本一致。
+为此,根据《中华人民共和国国家标准科学技术报告、学位论文和学术论文的编写格式》结合兄弟院校的具体作法,制定如下规定。
+
+\section{学位论文版式、格式}
+
+\begin{enumerate}
+	\item 论文开本及版芯\\
+	论文开本大小:210mm×297mm(A4纸)\\
+	版芯要求:左边距:30mm,右边距:25mm,上边距:30mm,下边距:25mm,页眉边距:23mm,页脚边距:18mm
+	\item 除外语类专业外,论文用中文撰写
+	\item 标题:论文分三级标题\\
+	一级标题:黑体,三号或16pt,段前、段后间距为1行\\
+	二级标题:黑体,四号或14pt,段前、段后间距为1行\\
+	三级标题:黑体,小四号或12pt,段前、段后间距为1行\\
+	上述段前、段后间距可适当调节,以便于控制正文合适的换页位置
+	\item 正文字体:正文采用五号宋体,行间距为18磅;图、表标题采用小五号黑体;表格中文字、图例说明采用小五号宋体;表注采用六号宋体
+	\item 页眉、页脚文字均采用小五号宋体,页眉左侧为“宁夏大学博(硕)士学位论文”,右侧为一级标题名称;页眉下横线为上粗下细文武线(3磅);单面复印时页码排在页脚居中位置,双面复印时页码分别按左右侧排列,页码一律以“--1--”格式排在相应的位置
+	\item 文中表格均采用标准表格形式(如三线表,可参照正式出版物中的表格形式)
+	\item 文中所列图形应有所选择,照片不得直接粘贴,须经扫描后以图片形式插入
+	\item 文中英文、罗马字符一般采用Time New Roman正体,按规定应采用斜体的采用斜体
+	\item 博士学位论文8万字,硕士学位论文3万字,专业学位论文3万字左右。
+\end{enumerate}
+
+\section{学位论文的各组成部分与排列顺序}
+
+学位论文,一般由封面、独创性声明及版权授权书、中文摘要、英文摘要、目录、插图和附表清单、主要符号表、引言(第一章)、正文、注释、结论(最后一章)、参考文献、附录、致谢和作者简历及论文发表情况等部分组成并按前后顺序排列。
+
+1.封面:不同类型研究生,学位论文封面、书脊要求如下:
+
+\begin{enumerate}[label =(\arabic*)]
+	\item 学位论文题目应能概括论文的主要内容,切题、简洁,不超过26字,可分两行排列,中英文对照;
+	\item 未经学位评定分委员会遴选且在研究生院备案的合作指导教师,不得在学位论文上署名;署名的合作指导教师人数不超过2人;
+	\item 学科门类:哲学、经济学、法学、教育学、文学、历史学、理学、工学、农学、管理学;学位级别:硕士、博士;专业学位:教育硕士、工商管理硕士(MBA)、农业推广硕士、工程硕士。
+	\item 专业名称、专业领域名称、研究方向应严格按照专业目录和培养方案填写;
+	\item 分类号:按《中国图书资料分类法》要求填写,可自行上网查询;
+	\item 密级:涉密论文,由院学位评定分委员会根据国家规定的密级范围和法定程序审查确定密级,并注明相应保密年限;不需保密的应填写“公开”。
+	\item 日期:学位论文完成时间。
+\end{enumerate}
+
+学历硕士封面颜色为草绿色;博士学位论文封面颜色为湖水蓝色;专业学位硕士学位论文的封面均为浅黄色;以同等学力在职申请硕士学位论文和高校教师在职攻读硕士学位论文封面颜色为浅蓝色。
+
+2.独创性声明和关于论文使用授权的说明(见附件二)附于学位论文摘要之前,需研究生和指导教师本人签字。
+
+3.中文摘要(见附件三):硕士论文摘要的字数一般为500个左右,博士论文摘要的字数为800-1000个。内容包括研究工作目的、研究方法、所取得的结果和结论,应突出本论文的创造性成果或新见解,语言精炼。摘要应当具有独立性,即不阅读论文的全文,就能获得论文所能提供的主要信息。
+
+为便于文献检索,应在论文摘要后另起一行注明本文的关键词3~5个,中间以“,”分隔。
+
+4.英文摘要(见附件三):与中文摘要对应。
+
+5.目录(见附件四-一与四-二):应是论文的提纲,也是论文组成部分的小标题。目录一般列至二级标题。
+
+6.插图和附表清单:论文中如果图、表较多,可以分别列出清单列于目录页之后。图表的清单应有序号、图表名称和页码。
+
+7.符号、标志、缩略词、计量单位、名词、术语等注释说明,可以集中列于图表的清单之后。
+
+8.引言(第一章):在论文正文前。内容包括:该研究工作的实用价值和理论意义;国内外已有的文献综述;本研究要解决的问题。
+
+9.正文:是学位论文的主体。写作内容可因研究课题的性质而不同,一般包括:理论分析、计算方法、实验装置和测试方法、对实验结果或调研结果的分析与讨论,本研究方法与已有研究方法的比较等方面。内容应简炼、重点突出,不要叙述专业方面的常识性内容。各章节之间应密切联系,形成一个整体。
+
+10.注释:一律采用脚注方式,如“①”等,按照本学科国内外通行的范式,逐一注明本文引用或参考、借用的资料数据出处及他人的研究成果和观点,严禁掠人之美和抄袭剽窃。
+
+11.结论(最后一章):结论应明确、简炼、完整、准确,要认真阐述自己的研究工作在本领域中的地位、作用以及自己新见解的意义。应当严格区分研究生的成果与导师的科研成果的界限。
+
+如果不可能得出明确结论,也可以没有结论而进行必要的讨论。
+
+12.参考文献:引用他人的成果必须标明出处。所有引用过的文献,应按引用的顺序编号排列。参考文献一律放在结论之后,不得放在各章之后。
+
+13.附录:凡不宜放在论文正文中,但又与论文有关的研究过程或资料,如较为冗长的公式推导、重复性或者辅助性数据图表、计算程序及有关说明等,均应放入附录。
+
+14.致谢:致谢对象限于对课题研究、学位论文完成等方面有较重要帮助的人员,落款处签名并注明日期(大写日期)。
+
+15.个人简历及论文发表情况
+
+个人简历包括个人姓名、性别、民族、出生年、籍贯,本科阶段入学时间、所在学校、所学专业,进入宁夏大学攻读学位时间、攻读专业。论文发表情况只登记已经正式发表者,格式同参考文献中论文格式。
+
+\section{书写要求}
+
+1.语言表述
+
+论文应层次分明、数据可靠、文字简炼、说明透彻、推理严谨、立论正确,避免使用文学性质的带感情色彩的非学术性词语。论文中如出现非通用性的新名词、新术语、新概念,应作相应解释。
+
+2.层次和标题
+
+层次应清楚,标题应简明扼要,重点突出。
+
+理工农类具体格式如下:
+
+第一章   □□□□□(一级标题,居中,单列一行)
+
+1.1   □□□□□(二级标题,左对齐,单列一行)
+
+1.1.1   □□□□□(三级标题,左对齐,单列一行)
+\newline
+文史类具体格式如下:
+
+第一章   □□□□□□□(一级标题,居中,单列一行)
+
+第一节   □□□□□(二级标题,居中,单列一行)
+
+一、□□□□(三级标题,首行缩进2字符,单列一行)
+
+若有四五六级标题,可按如下格式编排:
+
+(一)□□□□□(四级标题,首行缩进2字符)
+
+1、□□□□□(五级标题,首行缩进2字符)
+
+(1)□□□□□(六级标题,首行缩进2字符)
+
+其它标题或需突出的重点,可用五号黑体(或加粗),可单列一行,也可放在段首。
+
+3.篇眉和页码
+
+从第一章开始书写篇眉,篇眉下为上粗下细文武线。页码从第一章开始按阿拉伯数字连续编排。第一章之前的页码用罗马数字单独编排。
+
+4.图、表、公式等
+
+图形要精选,要具有自明性,切忌与表及文字表述重复。图形坐标比例不宜过大,同一图形中不同曲线的图标应采用不同的形状和不同颜色的连线。图中术语、符号、单位等应与正文中表述一致。图序、标题、图例说明居中置于图的下方。
+
+表中参数应标明量和单位。表序、标题居中置于表的上方。表注置于表的下方。\cite{zhangkun1994}
+
+图、表应与说明文字相配合,图形不能跨页显示,表格一般放在同一页内显示。
+
+公式一般居中对齐,公式编号用小括号括起,右对齐,其间不加线条。
+
+文中的图、表、公式、附注等一律用阿拉伯数字按章节(或连续)编号,如图1-1,表2-2,公式(3-10)等。
+
+5.参考文献
+
+参考文献可顺序编码,也可按“著者-出版年”编码,也可以根据《中国高校自然科学学报编排规范》的要求书写参考文献,并按顺序编码,即按文中引用的顺序编码。作者姓名写至第三位,余者写“,等”或“,et al.”。
+
+几种主要参考文献著录表的格式:
+
+连续出版物:序号 作者. 文题. 刊名,年,卷号(期号):起~止页码
+专(译)著:序号 作者. 书名(,译者). 出版地:出版者,出版年,起~止页码
+论  文  集:序号 作者. 文题. 见(in):编者,编(eds). 文集名. 出版地:出版者,出版年,起~止页码
+学 位 论 文:序号 作者. 文题:[XX学位论文]. 授予单位所在地:授予单位,授予年
+专       利:序号 申请者. 专利名. 国名,专利文献种类,专利号,出版日期
+技 术 标 准:序号 发布单位. 技术标准代号. 技术标准名称. 出版地:出版者,出版日期
+
+举例如下:
+
+[1] 朱文学. 粮食干燥原理及品质分析. 北京:高等教育出版社,2001,57-108
+[2] Dupont B. Bone marrow transplantation in severe combined immunodeficiency with an unrelated MLC compatible donor. In:White H J.,Smith R,eds. Proceedings of the Third Annual Meeting of the International Society for Experimental Hematology. Houston:International Society for Experimental Hematology, 1974. 44-46
+[3] 欧阳忠. 中国股市及农业板块的弱市场有效性假设的分析和应用:[硕士学位论文]. 北京:中国农业大学,2002
+[4] 姜锡洲. 一种温热外敷药制备方法. 中国专利,881056073,1980-07-26
+[5] 中华人民共和国国家技术监督局. GB3100~3102. 中华人民共和国国家标准—量与单位. 北京:中国标准出版社,1994-11-01
+
+引用古籍分三种情况:
+
+1、古籍整理本:时代·著者(或编者).书名.整理者.出版地:出版者,出版年.
+如:[5]宋·苏辙. 苏辙集. 陈宏天、高秀芳点校. 北京:中华书局,1990.
+2、丛书影印本:时代·著者(或编者).书名.丛书名.出版地:出版者,出版年.
+如:[6]宋·陆游. 渭南文集.文渊阁《四库全书》本.台北:商务印书馆,1986.
+3、古籍原本:严格按照古籍收藏单位著录之内容进行标注,基本格式为:时代·著者(或编者).书名.版本(括注公元年).藏书地点.
+如:[7]元·虞集. 道园类稿. 元代至正十四年(1352)金伯祥刻本. 国家图书馆.
+
+6.量和单位
+应严格执行GB3100~3102:93有关量和单位的规定(参阅《常用量和单位》.计量出版社,1996)。单位名称的书写,可采用国际通用符号,也可用中文名称,但全文应统一,不要两种混用。
+
+\section{电子文档要求}
+
+1.电子版学位论文应与印刷本内容一致。因特殊情况出现不一致时,必须给予说明。
+
+2.电子版学位论文应集合为一个word电子文档。采用其它编辑器编辑的论文,请提交pdf格式文件。
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/chap01.tex
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/chap02.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/chap02.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/chap02.tex	2024-05-24 20:59:31 UTC (rev 71344)
@@ -0,0 +1,142 @@
+\chapter{图表示例}
+
+\section{插图}
+
+图片通常在 \env{figure} 环境中使用 \cs{includegraphics} 插入,如图~\ref{fig:example} 的源代码。
+建议矢量图片使用 PDF 格式,比如数据可视化的绘图;
+照片应使用 JPG 格式;
+其他的栅格图应使用无损的 PNG 格式。
+注意,LaTeX 不支持 TIFF 格式;EPS 格式已经过时。
+
+\begin{figure}
+	\centering
+	\includegraphics[width=0.5\linewidth]{example-image-a.pdf}
+	\caption*{国外的期刊习惯将图表的标题和说明文字写成一段,需要改写为标题只含图表的名称,其他说明文字以注释方式写在图表下方,或者写在正文中。}
+	\caption{示例图片标题}
+	\label{fig:example}
+\end{figure}
+
+若图或表中有附注,采用英文小写字母顺序编号,附注写在图或表的下方。
+国外的期刊习惯将图表的标题和说明文字写成一段,需要改写为标题只含图表的名称,其他说明文字以注释方式写在图表下方,或者写在正文中。
+
+如果一个图由两个或两个以上分图组成时,各分图分别以 (a)、(b)、(c)...... 作为图序,并须有分图题。
+推荐使用 \pkg{subcaption} 宏包来处理, 比如图~\ref{fig:subfig-a} 和图~\ref{fig:subfig-b}。
+
+\begin{figure}
+	\centering
+	\subcaptionbox{分图 A\label{fig:subfig-a}}
+	{\includegraphics[width=0.35\linewidth]{example-image-a.pdf}}
+	\subcaptionbox{分图 B\label{fig:subfig-b}}
+	{\includegraphics[width=0.35\linewidth]{example-image-b.pdf}}
+	\caption{多个分图的示例}
+	\label{fig:multi-image}
+\end{figure}
+
+
+
+\section{表格}
+
+表应具有自明性。为使表格简洁易读,尽可能采用三线表,如表~\ref{tab:three-line}。
+三条线可以使用 \pkg{booktabs} 宏包提供的命令生成。
+
+\begin{table}
+	\centering
+	\caption{三线表示例}
+	\begin{tabular}{ll}
+		\toprule
+		文件名          & 描述                         \\
+		\midrule
+		nxuthesis.dtx   & 模板的源文件,包括文档和注释 \\
+		nxuthesis.cls   & 模板文件                     \\
+		nxuthesis-*.bst & BibTeX 参考文献表样式文件    \\
+		\bottomrule
+	\end{tabular}
+	\label{tab:three-line}
+\end{table}
+
+表格如果有附注,尤其是需要在表格中进行标注时,可以使用 \pkg{threeparttable} 宏包。
+研究生要求使用英文小写字母 a、b、c……顺序编号,本科生使用圈码 ①、②、③……编号。
+
+\begin{table}
+	\centering
+	\begin{threeparttable}[c]
+		\caption{带附注的表格示例}
+		\label{tab:three-part-table}
+		\begin{tabular}{ll}
+			\toprule
+			文件名                 & 描述                         \\
+			\midrule
+			nxuthesis.dtx\tnote{a} & 模板的源文件,包括文档和注释 \\
+			nxuthesis.cls\tnote{b} & 模板文件                     \\
+			nxuthesis-*.bst        & BibTeX 参考文献表样式文件    \\
+			\bottomrule
+		\end{tabular}
+		\begin{tablenotes}
+			\item [a] 可以通过 xelatex 编译生成模板的使用说明文档;
+			使用 xetex 编译 \file{nxuthesis.ins} 时则会从 \file{.dtx} 中去除掉文档和注释,得到精简的 \file{.cls} 文件。
+			\item [b] 更新模板时,一定要记得编译生成 \file{.cls} 文件,否则编译论文时载入的依然是旧版的模板。
+		\end{tablenotes}
+	\end{threeparttable}
+\end{table}
+
+如某个表需要转页接排,可以使用 \pkg{longtable} 宏包,需要在随后的各页上重复表的编号。
+编号后跟表题(可省略)和“(续)”,置于表上方。续表均应重复表头。
+
+\begin{longtable}{cccc}
+	\caption{跨页长表格的表题}
+	\label{tab:longtable} \\
+	\toprule
+	表头 1 & 表头 2 & 表头 3 & 表头 4 \\
+	\midrule
+	\endfirsthead
+	\caption*{续表~\thetable\quad 跨页长表格的表题} \\
+	\toprule
+	表头 1 & 表头 2 & 表头 3 & 表头 4 \\
+	\midrule
+	\endhead
+	\bottomrule
+	\endfoot
+	Row 1  & & & \\
+	Row 2  & & & \\
+	Row 3  & & & \\
+	Row 4  & & & \\
+	Row 5  & & & \\
+	Row 6  & & & \\
+	Row 7  & & & \\
+	Row 8  & & & \\
+	Row 9  & & & \\
+	Row 10 & & & \\
+\end{longtable}
+
+
+
+\section{算法}
+
+算法环境可以使用 \pkg{algorithms} 或者 \pkg{algorithm2e} 宏包。
+
+\renewcommand{\algorithmicrequire}{\textbf{输入:}\unskip}
+\renewcommand{\algorithmicensure}{\textbf{输出:}\unskip}
+
+\begin{algorithm}
+	\caption{Calculate $y = x^n$}
+	\label{alg1}
+	\small
+	\begin{algorithmic}
+		\REQUIRE $n \geq 0$
+		\ENSURE $y = x^n$
+		
+		\STATE $y \leftarrow 1$
+		\STATE $X \leftarrow x$
+		\STATE $N \leftarrow n$
+		
+		\WHILE{$N \neq 0$}
+		\IF{$N$ is even}
+		\STATE $X \leftarrow X \times X$
+		\STATE $N \leftarrow N / 2$
+		\ELSE[$N$ is odd]
+		\STATE $y \leftarrow y \times X$
+		\STATE $N \leftarrow N - 1$
+		\ENDIF
+		\ENDWHILE
+	\end{algorithmic}
+\end{algorithm}


Property changes on: trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/chap02.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/references.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/references.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/references.tex	2024-05-24 20:59:31 UTC (rev 71344)
@@ -0,0 +1 @@
+\bibliography{ref/refs}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/references.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/resume.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/resume.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/resume.tex	2024-05-24 20:59:31 UTC (rev 71344)
@@ -0,0 +1,18 @@
+
+\begin{resume}
+
+\subsection*{个人简介}
+
+×××,男,汉族,200×年×月出生于安徽××县。
+2018 年 9 月考入××大学水利系××专业,2022 年 7 月本科毕业并获得工学学士学位。
+2022 年 9 月考入宁夏大学土木与水利工程学院攻读××硕士学位至今,主要从事水力学及河流动力学研究。
+
+\subsection*{攻读硕士学位期间论文发表情况}
+
+\begin{achievements}
+	\item 第一篇
+	\item 第二篇
+	\item 第三篇
+\end{achievements}
+
+\end{resume}


Property changes on: trunk/Master/texmf-dist/doc/latex/nxuthesis/chapter/resume.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/nxuthesis/nxu-name.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/nxuthesis/nxu-name.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nxuthesis/nxu-name.pdf	2024-05-24 20:58:02 UTC (rev 71343)
+++ trunk/Master/texmf-dist/doc/latex/nxuthesis/nxu-name.pdf	2024-05-24 20:59:31 UTC (rev 71344)

Property changes on: trunk/Master/texmf-dist/doc/latex/nxuthesis/nxu-name.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/nxuthesis/nxusetup.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nxuthesis/nxusetup.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/nxuthesis/nxusetup.tex	2024-05-24 20:59:31 UTC (rev 71344)
@@ -0,0 +1,202 @@
+
+% 论文基本信息配置
+
+\nxusetup{
+  %******************************
+  % 注意:
+  %   1. 配置里面不要出现空行
+  %   2. 不需要的配置信息可以删除
+  %   3. 建议先阅读文档中所有关于选项的说明
+  %******************************
+  %
+  % 输出格式
+  %   选择打印版(print)或用于提交的电子版(electronic),前者会插入空白页以便直接双面打印
+  %
+  output = print,
+  % 格式类型
+  %   默认为论文(thesis),也可以设置为开题报告(proposal)
+  % thesis-type = proposal,
+  %
+  % 标题
+  %   可使用“\\”命令手动控制换行
+  %
+  title  = {宁夏大学研究生学位论文 \LaTeX{} 模板\\使用示例文档 v\version},
+  title* = {An Introduction to \LaTeX{} Thesis Template of Ningxia
+            University v\version},
+  %
+  % 学科门类
+  %   1. 学术型
+  %      - 中文
+  %        需注明所属的学科门类,例如:
+  %        哲学、经济学、法学、教育学、文学、历史学、理学、工学、农学、医学、
+  %        军事学、管理学、艺术学
+  %      - 英文
+  %        博士:Doctor of Philosophy
+  %        硕士:
+  %          哲学、文学、历史学、法学、教育学、艺术学门类,公共管理学科
+  %          填写“Master of Arts“,其它填写“Master of Science”
+  %   2. 专业型
+  %      直接填写专业学位的名称,例如:
+  %      教育博士、工程硕士等
+  %      Doctor of Education, Master of Engineering
+  %   3. 本科生不需要填写
+  %
+  degree-category  = {工学硕士},
+  %
+  % 培养单位
+  %   填写所属院系的全名
+  %
+  department = {土木与水利工程学院},
+  %
+  % 学科
+  %   1. 研究生学术型学位,获得一级学科授权的学科填写一级学科名称,其他填写二级学科名称
+  %   2. 本科生填写专业名称,第二学位论文需标注“(第二学位)”
+  %
+  discipline  = {水利工程},
+  %
+  % 专业领域
+  %   1. 设置专业领域的专业学位类别,填写相应专业领域名称
+  %   2. 2019 级及之前工程硕士学位论文,在 `engineering-field` 填写相应工程领域名称
+  %   3. 其他专业学位类别的学位论文无需此信息
+  %
+  % professional-field  = {计算机技术},
+  % professional-field* = {Computer Technology},
+  %
+  % 姓名
+  %
+  author  = {某某某},
+  %
+  % 学号
+  % 仅当书写开题报告时需要(同时设置 `thesis-type = proposal')
+  %
+  student-id = {12022000000},
+  %
+  % 指导教师
+  %   中文姓名和职称之间以英文逗号“,”分开,下同
+  %
+  supervisor  = {某某某, 教授},
+  %
+  % 联合指导教师
+  %
+  co-supervisor  = {某某某, 教授},
+  %
+  % 研究方向
+  %
+  field  = {水力学及河流动力学},
+  %
+  % 日期
+  %   使用 ISO 格式;默认为当前时间
+  %
+  date = {2024-05-20},
+  %
+  % 是否在中文封面后的空白页生成书脊(默认 false)
+  %
+  include-spine = false,
+  %
+  % 分类号
+  % 
+  clc  =  {TV143},
+  %
+  % 密级和年限
+  %   秘密, 机密, 绝密
+  %
+  secret-level = {公开},
+  secret-year  = {},
+  %
+  % 单位代码
+  %
+  code = {10749}
+  %
+  % 博士后专有部分
+  %
+  % clc                = {分类号},
+  % udc                = {UDC},
+  % id                 = {编号},
+  % discipline-level-1 = {计算机科学与技术},  % 流动站(一级学科)名称
+  % discipline-level-2 = {系统结构},          % 专业(二级学科)名称
+  % start-date         = {2011-07-01},        % 研究工作起始时间
+}
+
+% 载入所需的宏包
+
+% 定理类环境宏包
+\usepackage{amsthm}
+% 也可以使用 ntheorem
+% \usepackage[amsmath,thmmarks,hyperref]{ntheorem}
+
+\nxusetup{
+  %
+  % 数学字体
+  % math-style = GB,  % GB | ISO | TeX
+  math-font  = xits,  % stix | xits | libertinus
+}
+
+% 可以使用 nomencl 生成符号和缩略语说明
+% \usepackage{nomencl}
+% \makenomenclature
+
+% 表格调整行高
+% \usepackage{array} 
+
+% 表格加脚注
+\usepackage{threeparttable}
+
+% 表格中支持跨行
+\usepackage{multirow}
+
+% 固定宽度的表格。
+% \usepackage{tabularx}
+
+% 跨页表格
+\usepackage{longtable}
+
+% 算法
+\usepackage{algorithm}
+\usepackage{algorithmic}
+
+% 量和单位
+\usepackage{siunitx}
+
+% 参考文献使用 BibTeX + natbib 宏包
+% 顺序编码制
+\usepackage[sort]{natbib}
+\bibliographystyle{nxuthesis-numeric}
+
+% 著者-出版年制
+% \usepackage{natbib}
+% \bibliographystyle{nxuthesis-author-year}
+
+% 生命科学学院要求使用 Cell 参考文献格式(2023 年以前使用 author-date 格式)
+% \usepackage{natbib}
+% \bibliographystyle{cell}
+
+% 本科生参考文献的著录格式
+% \usepackage[sort]{natbib}
+% \bibliographystyle{nxuthesis-bachelor}
+
+% 参考文献使用 BibLaTeX 宏包
+% \usepackage[style=nxuthesis-numeric]{biblatex}
+% \usepackage[style=nxuthesis-author-year]{biblatex}
+%\usepackage[style=gb7714-2015]{biblatex}
+% \usepackage[style=apa]{biblatex}
+% \usepackage[style=mla-new]{biblatex}
+% 声明 BibLaTeX 的数据库
+% \addbibresource{ref/refs.bib}
+
+% 定义所有的图片文件在 figures 子目录下
+\graphicspath{{figures/}}
+
+% 数学命令
+\makeatletter
+\newcommand\dif{%  % 微分符号
+  \mathop{}\!%
+  \ifnxu at math@style at TeX
+    d%
+  \else
+    \mathrm{d}%
+  \fi
+}
+\makeatother
+
+% hyperref 宏包在最后调用
+\usepackage{hyperref}


Property changes on: trunk/Master/texmf-dist/doc/latex/nxuthesis/nxusetup.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/nxuthesis/nxuthesis-example.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/nxuthesis/nxuthesis-example.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nxuthesis/nxuthesis-example.pdf	2024-05-24 20:58:02 UTC (rev 71343)
+++ trunk/Master/texmf-dist/doc/latex/nxuthesis/nxuthesis-example.pdf	2024-05-24 20:59:31 UTC (rev 71344)

Property changes on: trunk/Master/texmf-dist/doc/latex/nxuthesis/nxuthesis-example.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/nxuthesis/nxuthesis-example.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nxuthesis/nxuthesis-example.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/nxuthesis/nxuthesis-example.tex	2024-05-24 20:59:31 UTC (rev 71344)
@@ -0,0 +1,50 @@
+\documentclass[degree=master]{nxuthesis}
+	% 学位 degree:
+	%   master(硕士) | doctor(博士)
+	% 学位类型 degree-type:
+	%   academic(学术学位,默认)| professional(专业学位)
+	% 语言 language
+	%   chinese(默认)| english
+	% 字体库 fontset
+	%   windows | mac | fandol | ubuntu
+	% 建议终版使用 Windows 平台的字体编译
+
+% 论文基本配置,加载宏包等全局配置
+\input{nxusetup}
+
+\begin{document}
+
+% 封面
+\maketitle
+
+
+% 使用授权的说明
+\copyrightpage
+% 将签字扫描后授权文件 scan-copyright.pdf 替换原始页面
+% \copyrightpage[file=scan-copyright.pdf]
+
+\frontmatter
+\input{chapter/abstract}
+
+% 目录
+\tableofcontents
+
+% 正文部分
+\mainmatter
+\input{chapter/chap01}
+\input{chapter/chap02}
+
+
+% 其他部分
+\backmatter
+
+% 参考文献
+\input{chapter/references}
+
+% 致谢
+\input{chapter/acknowledgements}
+
+% 个人简介及攻读硕士/博士学位期间论文发表情况
+\input{chapter/resume}
+
+\end{document}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/nxuthesis/nxuthesis-example.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/nxuthesis/ref/refs.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nxuthesis/ref/refs.bib	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/nxuthesis/ref/refs.bib	2024-05-24 20:59:31 UTC (rev 71344)
@@ -0,0 +1,335 @@
+ at article{zhangkun1994,
+  author     = {张昆 and 冯立群 and 余昌钰 and others},
+  title      = {机器人柔性手腕的球面齿轮设计研究},
+  journal    = {清华大学学报: 自然科学版},
+  volume     = {34},
+  number     = {2},
+  pages      = {1--7},
+  year       = {1994},
+  key        = {zhang1 kun1},
+}
+
+ at book{zhukezhen1973,
+  author     = {竺可桢},
+  title      = {物理学论},
+  address    = {北京},
+  publisher  = {科学出版社},
+  year       = {1973},
+  pages      = {56--60},
+  key        = {zhu2 ke3 zhen1},
+}
+
+ at inproceedings{dupont1974bone,
+  author     = {Dupont, B},
+  title      = {Bone marrow transplantation in severe combined immunodeficiency with an unrelated MLC compatible donor},
+  editor     = {White, H J and Smith, R},
+  booktitle  = {Proceedings of the third annual meeting of the International Society for Experimental Hematology},
+  address    = {Houston},
+  publisher  = {International Society for Experimental Hematology},
+  year       = {1974},
+  pages      = {44--46},
+}
+
+ at mastersthesis{zhengkaiqing1987,
+  author     = {郑开青},
+  title      = {通讯系统模拟及软件},
+  address    = {北京},
+  school     = {清华大学无线电系},
+  year       = {1987},
+  key        = {zheng4 kai1 qing1},
+}
+
+ at patent{jiangxizhou1980,
+  author     = {姜锡洲},
+  title      = {一种温热外敷药制备方案},
+  address    = {中国},
+  number     = {88105607.3},
+  year       = {1980},
+  date       = {1980-07-26},
+  key        = {jiang1 xi1 zhou1},
+}
+
+ at standard{jianduju1994,
+  author     = {中华人民共和国国家技术监督局},
+  title      = {GB3100-3102. 中华人民共和国国家标准-量与单位},
+  address    = {北京},
+  publisher  = {中国标准出版社},
+  year       = {1994},
+  key        = {zhong1 hua2 ren2 min2 gong4 he2 guo2},
+}
+
+ at article{merkt1995rotational,
+  author     = {Merkt, Fr{\'e}d{\'e}ric and Mackenzie, S R and Softley, Timothy P},
+  title      = {Rotational Autoionization Dynamics in High Rydberg States of Nitrogen},
+  journal    = {J Chem Phys},
+  year       = {1995},
+  volume     = {103},
+  pages      = {4509--4518},
+}
+
+ at article{mellinger1996laser,
+  author     = {Mellinger, A and Vidal, C R and Jungen, {Ch}},
+  title      = {Laser reduced fluorescence study of the carbon monoxide nd triplet Rydberg series - Experimental results and multichannel quantum defect analysis},
+  journal    = {J Chem Phys},
+  year       = {1996},
+  volume     = {104},
+  pages      = {8913--8921},
+}
+
+ at article{bixon1996dynamics,
+  author     = {Bixon, M and Jortner, Joshua},
+  title      = {The dynamics of predissociating high {Rydberg} states of {NO}},
+  journal    = {J Chem Phys},
+  year       = {1996},
+  volume     = {105},
+  pages      = {1363--1382},
+}
+
+ at article{mahui1995,
+  author     = {马辉 and 李俭 and 刘耀明 and others},
+  title      = {利用 {REMPI} 方法测量 {BaF} 高里德堡系列光谱},
+  journal    = {化学物理学报},
+  year       = {1995},
+  volume     = {8},
+  pages      = {308--311},
+  key        = {ma3 hui1},
+}
+
+ at article{carlson1981two,
+  author     = {Carlson, N W and Taylor, A J and Jones, K M and Schawlow, A L},
+  title      = {Two-step polarization-labeling spectroscopy of excited states of {Na2}},
+  journal    = {Phys Rev A},
+  year       = {1981},
+  volume     = {24},
+  pages      = {822--834},
+}
+
+ at article{taylor1983scanning,
+  author     = {Taylor, A J and Jones, K M and Schawlow, A L},
+  title      = {Scanning pulsed-polarization spectrometer applied to {Na2}},
+  journal    = {J Opt Soc Am},
+  year       = {1983},
+  volume     = {73},
+  pages      = {994--998},
+}
+
+ at article{taylor1981study,
+  author     = {Taylor, A J and Jones, K M and Schawlow, A L},
+  title      = {A study of the excited {1$\Sigma$g+} states in {Na2}},
+  journal    = {Opt Commun},
+  year       = {1981},
+  volume     = {39},
+  pages      = {47--50},
+}
+
+ at article{shimizu1983laser,
+  author     = {Shimizu, Kazuko and Shimizu, Fujio},
+  title      = {Laser induced fluorescence spectra of the a {3$\Pi$u--X 1$\Sigma$g+} band of {Na2} by molecular beam},
+  journal    = {J Chem Phys},
+  year       = {1983},
+  volume     = {78},
+  pages      = {1126--1131},
+}
+
+ at article{atkinson1982experimental,
+  author     = {Atkinson, J B and Becker, J and Demtr{\"o}der, W},
+  title      = {Experimental observation of the a {3$\Pi$u} state of {Na2}},
+  journal    = {Chem Phys Lett},
+  year       = {1982},
+  volume     = {87},
+  pages      = {92--97},
+}
+
+ at article{kusch1975perturbations,
+  author     = {Kusch, P and Hessel, M M},
+  title      = {Perturbations in the A {1$\Sigma$u+} state of {Na2}},
+  journal    = {J Chem Phys},
+  year       = {1975},
+  volume     = {63},
+  pages      = {4087--4088},
+}
+
+ at book{guangxi1993,
+  author     = {广西壮族自治区林业厅},
+  title      = {广西自然保护区},
+  address    = {北京},
+  publisher  = {中国林业出版社},
+  year       = {1993},
+  key        = {guang3 xi1 zhuang4 zu2 zi4 zhi4 qu1},
+}
+
+ at book{huosini1989guwu,
+  author     = {霍斯尼},
+  title      = {谷物科学与工艺学原理},
+  translator = {李庆龙},
+  edition    = {2},
+  address    = {北京},
+  publisher  = {中国食品出版社},
+  year       = {1989},
+  pages      = {15--20},
+  key        = {huo4 si1 ni2},
+}
+
+ at book{wangfuzhi1865songlun,
+  author     = {王夫之},
+  title      = {宋论},
+  edition    = {刻本},
+  address    = {金陵},
+  publisher  = {曾氏},
+  year       = {1865(清同治四年)},
+  key        = {wang2 fu1 zhi1},
+}
+
+ at book{zhaoyaodong1998xinshidai,
+  author     = {赵耀东},
+  title      = {新时代的工业工程师},
+  address    = {台北},
+  publisher  = {天下文化出版社},
+  year       = {1998},
+  urldate    = {1998-09-26},
+  url        = {http://www.ie.nthu.edu.tw/info/ie.newie.htm},
+  key        = {zhao4 yao4 dong1},
+}
+
+ at standard{biaozhunhua2002tushu,
+  author     = {全国信息与文献工作标准化技术委员会出版物格式分委员会},
+  title      = {GB/T 12450-2001 图书书名页},
+  address    = {北京},
+  publisher  = {中国标准出版社},
+  year       = {2002},
+  pages      = {1},
+  key        = {quan2 guo2 xin4 xi1},
+}
+
+ at book{chubanzhuanye2004,
+  author     = {全国出版专业职业资格考试办公室},
+  title      = {全国出版专业职业资格考试辅导教材: 出版专业理论与实务•中级},
+  edition    = {2014},
+  address    = {上海},
+  publisher  = {上海辞书出版社},
+  year       = {2004},
+  pages      = {299--307},
+  key        = {quan2 guo2 chu1 ban3 ye4},
+}
+
+ at techreport{who1970factors,
+  author     = {{World Health Organization}},
+  title      = {Factors Regulating the Immune Response: Report of {WHO Scientific Group}},
+  address    = {Geneva},
+  publisher  = {WHO},
+  year       = {1970},
+}
+
+ at book{peebles2001probability,
+  author     = {Peebles, Jr, Peyton Z.},
+  title      = {Probability, Random Variables, and Random Signal Principles},
+  edition    = {4},
+  address    = {New York},
+  publisher  = {McGraw Hill},
+  year       = {2001},
+}
+
+ at incollection{baishunong1998zhiwu,
+  author     = {白书农},
+  title      = {植物开花研究},
+  editor     = {李承森},
+  booktitle  = {植物科学进展},
+  address    = {北京},
+  publisher  = {高等教育出版社},
+  year       = {1998},
+  pages      = {146--163},
+  key        = {bai2 shu1 nong2},
+}
+
+ at incollection{weinstein1974pathogenic,
+  author     = {Weinstein, L and Swertz, M N},
+  title      = {Pathogenic Properties of Invading Microorganism},
+  editor     = {Sodeman, Jr, William A and Sodeman, William A},
+  booktitle  = {Pathologic physiology: mechanisms of disease},
+  address    = {Philadelphia},
+  publisher  = {Saunders},
+  year       = {1974},
+  pages      = {745--772},
+}
+
+ at inproceedings{hanjiren1985lun,
+  author     = {韩吉人},
+  title      = {论职工教育的特点},
+  editor     = {中国职工教育研究会},
+  booktitle  = {职工教育研究论文集},
+  address    = {北京},
+  publisher  = {人民教育出版社},
+  year       = {1985},
+  pages      = {90--99},
+  key        = {han2 ji2 ren2},
+}
+
+ at periodical{dizhi1936dizhi,
+  author     = {中国地质学会},
+  title      = {地质评论},
+  year       = {1936},
+  volume     = {1},
+  number     = {1},
+  address    = {北京},
+  publisher  = {地质出版社},
+  key        = {zhong1 guo2 di4 zhi3 xue2 hui4},
+}
+
+ at periodical{tushuguan1957tushuguanxue,
+  author     = {中国图书馆学会},
+  title      = {图书馆学通讯},
+  year       = {1957/1990},
+  number     = {1--4},
+  address    = {北京},
+  publisher  = {北京图书馆},
+  key        = {zhong1 guo2 tu2 shu1 guan3 xue2 hui4},
+}
+
+ at periodical{aaas1883science,
+  author     = {{American Association for the Advancement of Science}},
+  title      = {Science},
+  year       = {1883},
+  volume     = {1},
+  number     = {1},
+  address    = {Washington, D.C.},
+  publisher  = {American Association for the Advancement of Science},
+}
+
+ at newspaper{fugang2000fengsha,
+  author     = {傅刚 and 赵承 and 李佳路},
+  title      = {大风沙过后的思考},
+  journal    = {北京青年报},
+  year       = {2000},
+  date       = {2000-04-12},
+  number     = {14},
+  urldate    = {2002-03-06},
+  url        = {http://www.bjyouth.com.cn/Bqb/20000412/B/4216%5ED0412B1401.htm},
+  key        = {fu4 gang1},
+}
+
+ at online{xiaoyu2001chubanye,
+  author     = {萧钰},
+  title      = {出版业信息化迈入快车道},
+  year       = {2001},
+  date       = {2001-12-19},
+  urldate    = {2002-04-15},
+  url        = {http://www.creader.com/news/20011219/200112190019.htm},
+  key        = {xiao1 yu4},
+}
+
+ at online{oclc2000about,
+  author     = {{Online Computer Library Center, Inc}},
+  title      = {About {OCLC}: History of Cooperation},
+  year       = {2000},
+  urldate    = {2000-01-08},
+  url        = {http://www.oclc.org/about/cooperation.en.htm},
+}
+
+ at software{scitor2000project,
+  author     = {{Scitor Corporation}},
+  title      = {Project scheduler},
+  address    = {Sunnyvale, Calif.},
+  publisher  = {Scitor Corporation},
+  year       = {1983},
+  medium     = {DK},
+}


Property changes on: trunk/Master/texmf-dist/doc/latex/nxuthesis/ref/refs.bib
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/nxuthesis/nxuthesis.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/nxuthesis/nxuthesis.cls	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/nxuthesis/nxuthesis.cls	2024-05-24 20:59:31 UTC (rev 71344)
@@ -0,0 +1,3531 @@
+%%
+%% This is file `nxuthesis.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%% 
+%% This is a generated file.
+%% 
+%% Copyright (C) 2024 by Xianyuan Bao <baoxianyuan at 126.com>
+%% 
+%% This work 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 2008 or later.
+%% 
+%% To produce the documentation run the original source files ending with `.dtx'
+%% through LaTeX.
+%% 
+\NeedsTeXFormat{LaTeX2e}[2017/04/15]
+\ProvidesClass{nxuthesis}
+[2024/05/20 1.0.0 Ningxia University Thesis Template]
+\newcommand\nxu at error[1]{%
+  \ClassError{nxuthesis}{#1}{}%
+}
+\newcommand\nxu at warning[1]{%
+  \ClassWarning{nxuthesis}{#1}%
+}
+\newcommand\nxu at debug[1]{%
+  \typeout{Package nxuthesis Info: #1}%
+}
+\newcommand\nxu at patch@error[1]{%
+  \nxu at error{Failed to patch command \protect#1}%
+}
+\newcommand\nxu at deprecate[2]{%
+  \def\nxu@@tmp{#2}%
+  \nxu at warning{%
+    The #1 is deprecated%
+    \ifx\nxu@@tmp\@empty\else
+      . Use #2 instead%
+    \fi
+  }%
+}
+\@ifl at t@r\fmtversion{2017/04/15}{}{
+  \nxu at error{%
+    TeX Live 2017 or later version is required to compile this document%
+  }
+}
+\RequirePackage{iftex}
+\ifXeTeX\else
+  \ifLuaTeX\else
+    \nxu at error{XeLaTeX or LuaLaTeX is required to compile this document}
+  \fi
+\fi
+\InputIfFileExists{nxuthesis-pdf-test-config.tex}{}{
+  \InputIfFileExists{nxuthesis-log-test-config.tex}{}{}
+}
+\hyphenation{Nxu-Thesis}
+\def\nxuthesis{nxuthesis}
+\def\version{1.0.0}
+\RequirePackage{kvdefinekeys}
+\RequirePackage{kvsetkeys}
+\RequirePackage{kvoptions}
+\SetupKeyvalOptions{
+  family=nxu,
+  prefix=nxu@,
+  setkeys=\kvsetkeys}
+\let\nxu at setup@hook\@empty
+\newcommand\nxusetup[1]{%
+  \let\nxu at setup@hook\@empty
+  \kvsetkeys{nxu}{#1}%
+  \nxu at setup@hook
+}
+\newcommand\nxu at define@key[1]{%
+  \kvsetkeys{nxu at key}{#1}%
+}
+\kv at set@family at handler{nxu at key}{%
+  \@namedef{nxu@#1@@name}{#1}%
+  \def\nxu@@default{}%
+  \def\nxu@@choices{}%
+  \kv at define@key{nxu at value}{name}{%
+    \@namedef{nxu@#1@@name}{##1}%
+  }%
+  \@namedef{nxu@#1@@check}{}%
+  \@namedef{nxu@#1@@code}{}%
+  \kv at define@key{nxu at value}{choices}{%
+    \def\nxu@@choices{##1}%
+    \@namedef{nxu@#1@@reset}{}%
+    \@namedef{nxu@#1@@check}{%
+      \@ifundefined{%
+        ifnxu@\@nameuse{nxu@#1@@name}@\@nameuse{nxu@\@nameuse{nxu@#1@@name}}%
+      }{%
+        \nxu at error{Invalid value "#1 = \@nameuse{nxu@\@nameuse{nxu@#1@@name}}"}%
+      }%
+      \@nameuse{nxu@#1@@reset}%
+      \@nameuse{nxu@\@nameuse{nxu@#1@@name}@\@nameuse{nxu@\@nameuse{nxu@#1@@name}}true}%
+    }%
+  }%
+  \kv at define@key{nxu at value}{default}{%
+    \def\nxu@@default{##1}%
+  }%
+  \kvsetkeys{nxu at value}{#2}%
+  \@namedef{nxu@\@nameuse{nxu@#1@@name}}{}%
+  \kv at set@family at handler{nxu at choice}{%
+    \ifx\nxu@@default\@empty
+      \def\nxu@@default{##1}%
+    \fi
+    \expandafter\newif\csname ifnxu@\@nameuse{nxu@#1@@name}@##1\endcsname
+    \expandafter\g at addto@macro\csname nxu@#1@@reset\endcsname{%
+      \@nameuse{nxu@\@nameuse{nxu@#1@@name}@##1false}%
+    }%
+  }%
+  \kvsetkeys at expandafter{nxu at choice}{\nxu@@choices}%
+  \expandafter\let\csname nxu@\@nameuse{nxu@#1@@name}\endcsname\nxu@@default
+  \expandafter\ifx\csname nxu@\@nameuse{nxu@#1@@name}\endcsname\@empty\else
+    \@nameuse{nxu@#1@@check}%
+  \fi
+  \kv at define@key{nxu}{#1}{%
+    \@namedef{nxu@\@nameuse{nxu@#1@@name}}{##1}%
+    \@nameuse{nxu@#1@@check}%
+    \@nameuse{nxu@#1@@code}%
+  }%
+}
+\newcommand\nxu at option@hook[2]{%
+  \expandafter\g at addto@macro\csname nxu@#1@@code\endcsname{#2}%
+}
+\nxu at define@key{
+  thesis-type = {
+    name = thesis at type,
+    choices = {
+      thesis,
+      proposal,
+    },
+    default = thesis,
+  },
+  degree = {
+    choices = {
+      master,
+      doctor,
+    },
+    default = master,
+  },
+  degree-type = {
+    choices = {
+      academic,
+      professional,
+    },
+    name = degree at type,
+  },
+  main-language = {
+    name = main at language,
+    choices = {
+      chinese,
+      english,
+    },
+  },
+  language = {
+    choices = {
+      chinese,
+      english,
+    },
+  },
+  system = {
+    choices = {
+      auto,
+      mac,
+      unix,
+      windows,
+    },
+    default = auto,
+  },
+  fontset = {
+    choices = {
+      auto,
+      windows,
+      mac,
+      ubuntu,
+      fandol,
+      none,
+    },
+    default = auto,
+  },
+  font = {
+    choices = {
+      auto,
+      times,
+      termes,
+      stix,
+      xits,
+      libertinus,
+      newcm,
+      lm,
+      newtx,
+      none,
+    },
+    default = auto,
+  },
+  cjk-font = {
+    name = cjk at font,
+    choices = {
+      auto,
+      windows,
+      windows-local,
+      mac,
+      mac-word,
+      noto,
+      fandol,
+      none,
+    },
+    default = auto,
+  },
+  windows-font-dir = {
+    name = windows at font@dir,
+    default = {.},
+  },
+  math-font = {
+    name = math at font,
+    choices = {
+      auto,
+      stix,
+      xits,
+      libertinus,
+      newcm,
+      lm,
+      newtx,
+      none,
+    },
+    default = auto,
+  },
+  math-style = {
+    name = math at style,
+    choices = {
+      GB,
+      ISO,
+      TeX,
+    },
+  },
+  uppercase-greek = {
+    name = uppercase at greek,
+    choices = {
+      italic,
+      upright,
+    },
+  },
+  less-than-or-equal = {
+    name = leq,
+    choices = {
+      slanted,
+      horizontal,
+    },
+  },
+  integral = {
+    choices = {
+      upright,
+      slanted,
+    },
+  },
+  integral-limits = {
+    name = integral at limits,
+    choices = {
+      true,
+      false,
+    },
+  },
+  partial = {
+    choices = {
+      upright,
+      italic,
+    },
+  },
+  math-ellipsis = {
+    name = math at ellipsis,
+    choices = {
+      centered,
+      lower,
+      AMS,
+    },
+  },
+  real-part = {
+    name = real at part,
+    choices = {
+      roman,
+      fraktur,
+    },
+  },
+  output = {
+    choices = {
+      print,
+      electronic,
+    },
+    default = print,
+  },
+}
+\newif\ifnxu at degree@graduate
+\newcommand\nxu at set@graduate{%
+  \nxu at degree@graduatefalse
+  \ifnxu at degree@doctor
+    \nxu at degree@graduatetrue
+  \fi
+  \ifnxu at degree@master
+    \nxu at degree@graduatetrue
+  \fi
+}
+\nxu at set@graduate
+\nxu at option@hook{degree}{%
+  \nxu at set@graduate
+}
+\DeclareBoolOption[false]{openright}
+\DeclareComplementaryOption{openany}{openright}
+\DeclareBoolOption[true]{raggedbottom}
+\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}}
+\ProcessKeyvalOptions*
+\ifnxu at openright
+  \PassOptionsToClass{openright}{book}
+\else
+  \PassOptionsToClass{openany}{book}
+\fi
+\PassOptionsToPackage{no-math}{fontspec}
+\LoadClass[a4paper,UTF8,zihao=-4,scheme=plain,fontset=none]{ctexbook}[2017/04/01]
+\RequirePackage{etoolbox}
+\RequirePackage{filehook}
+\RequirePackage{xparse}
+\RequirePackage{geometry}%
+\RequirePackage{fancyhdr}
+\RequirePackage{titletoc}
+\RequirePackage{notoccite}
+\RequirePackage{amsmath}
+\RequirePackage{graphicx}
+\RequirePackage[labelformat=simple]{subcaption}
+\RequirePackage{pdfpages}
+\includepdfset{fitpaper=true}
+\AtEndPreamble{
+  \ifx\tikzifexternalizing\@undefined\else
+    \tikzifexternalizing{
+      \renewcommand*\includepdf[2][]{}
+    }{}
+  \fi
+}
+\RequirePackage[shortlabels]{enumitem}
+\RequirePackage{environ}
+\ifnxu at raggedbottom
+  \RequirePackage[bottom,perpage,hang]{footmisc}
+  \raggedbottom
+\else
+  \RequirePackage[perpage,hang]{footmisc}
+\fi
+\ifXeTeX
+  \RequirePackage{xeCJKfntef}
+\else
+  \RequirePackage{ulem}
+\fi
+\RequirePackage{array}
+\RequirePackage{booktabs}
+\RequirePackage{url}
+\AtEndPreamble{
+  \@ifpackageloaded{biblatex}{}{
+    \@ifpackageloaded{apacite}{}{
+      \RequirePackage{natbib}
+    }
+  }
+}
+\AtEndOfPackageFile*{natbib}{
+  \@ifpackageloaded{apacite}{}{
+    \RequirePackage{bibunits}
+  }
+}
+\newcommand\nxu at package@conflict[2]{%
+  \AtEndOfPackageFile*{#1}{%
+    \AtBeginOfPackageFile*{#2}{%
+      \nxu at error{The "#2" package is incompatible with "#1"}%
+    }%
+  }%
+}
+\nxu at package@conflict{biblatex}{bibunits}
+\nxu at package@conflict{biblatex}{chapterbib}
+\nxu at package@conflict{biblatex}{cite}
+\nxu at package@conflict{biblatex}{multibib}
+\nxu at package@conflict{biblatex}{natbib}
+
+\nxu at package@conflict{bibunits}{biblatex}
+\nxu at package@conflict{bibunits}{chapterbib}
+\nxu at package@conflict{bibunits}{multibib}
+
+\nxu at package@conflict{unicode-math}{amscd}
+\nxu at package@conflict{unicode-math}{amsfonts}
+\nxu at package@conflict{unicode-math}{amssymb}
+\nxu at package@conflict{unicode-math}{bbm}
+\nxu at package@conflict{unicode-math}{bm}
+\nxu at package@conflict{unicode-math}{eucal}
+\nxu at package@conflict{unicode-math}{eufrak}
+\nxu at package@conflict{unicode-math}{mathrsfs}
+\nxu at package@conflict{unicode-math}{newtxmath}
+\nxu at package@conflict{unicode-math}{upgreek}
+
+\nxu at package@conflict{natbib}{biblatex}
+\nxu at package@conflict{natbib}{cite}
+
+\nxu at package@conflict{newtxmath}{amsfonts}
+\nxu at package@conflict{newtxmath}{amssymb}
+\nxu at package@conflict{newtxmath}{unicode-math}
+\nxu at package@conflict{newtxmath}{upgreek}
+\AtBeginOfPackageFile*{amsthm}{
+  \@ifpackageloaded{newtxmath}{
+    \nxu at error{The "amsthm" package should be loaded before setting "newtxmath"}
+  }{}
+}%
+\geometry{
+  paper          = a4paper,  % 210 * 297mm
+  marginparwidth = 2cm,
+  marginparsep   = 0.5cm,
+  asymmetric, % 使奇偶页边距一致
+}
+\newcommand\nxu at set@geometry{%
+    \geometry{
+      top        = 3.0cm,
+      bottom     = 2.5cm,
+      left       = 3.0cm,
+      right      = 2.5cm,
+      headheight = 2.8cm,
+      headsep    = 0.0cm,
+      footskip   = 0.8cm,
+    }%
+}
+\nxu at set@geometry
+\nxu at option@hook{degree}{\nxu at set@geometry}
+\nxu at option@hook{output}{\nxu at set@geometry}
+\nxusetup{main-language=\nxu at language}%
+\let\nxu at main@language\nxu at language
+\nxu at option@hook{language}{%
+  \ifx\@begindocumenthook\@undefined\else
+    \nxusetup{main-language=\nxu at language}%
+    \let\nxu at main@language\nxu at language
+  \fi
+}
+\newcommand\nxu at reset@main at language{%
+  \nxusetup{language = \nxu at main@language}%
+  \let\nxu at language\nxu at main@language
+}
+\newcommand\nxu at set@chapter at names{%
+  \ifnxu at main@language at chinese
+    \def\nxu at comments@name{指导教师评语}%
+    \def\bibname{参考文献}%
+    \def\appendixname{附录}%
+    \def\indexname{索引}%
+    \def\nxu at resolution@name{答辩委员会决议书}%
+      \def\listfigurename{插图清单}%
+      \def\listtablename{附表清单}%
+      \def\nxu at list@figure at table@name{插图和附表清单}%
+      \def\nxu at list@algorithm at name{算法清单}%
+      \def\listequationname{公式清单}%
+      \def\nxu at acknowledgements@name{致\quad 谢}%
+      \def\contentsname{目\quad 录}%
+      \def\nxu at denotation@name{符号和缩略语说明}%
+      \ifnxu at degree@master
+        \def\nxu at resume@name{个人简介及攻读硕士学位期间论文发表情况}%
+      \else % degree = doctor
+        \def\nxu at resume@name{个人简介及攻读博士学位期间论文发表情况}%
+      \fi
+  \else
+    \ifnxu at main@language at english
+      \def\nxu at comments@name{Comments from Thesis Supervisor}%
+      \def\nxu at resolution@name{Resolution of Thesis Defense Committee}%
+      \def\indexname{Index}%
+        \def\contentsname{Table of Contents}%
+        \def\listfigurename{List of Figures}%
+        \def\listtablename{List of Tables}%
+        \def\nxu at list@figure at table@name{List of Figures and Tables}%
+        \def\nxu at list@algorithm at name{List of Algorithms}%
+        \def\listequationname{List of Equations}%
+        \def\nxu at denotation@name{List of Symbols and Acronyms}%
+        \def\bibname{References}%
+        \def\appendixname{Appendix}%
+        \def\nxu at acknowledgements@name{Acknowledgements}%
+        \def\nxu at resume@name{Resume}%
+    \fi
+  \fi
+}
+\nxu at set@chapter at names
+\nxu at option@hook{degree}{\nxu at set@chapter at names}
+\nxu at option@hook{main-language}{\nxu at set@chapter at names}
+\newcommand\nxu at set@names{%
+  \ifnxu at language@chinese
+    \ctexset{
+      figurename = 图,
+      tablename  = 表,
+    }%
+    \def\nxu at algorithm@name{算法}%
+    \def\nxu at equation@name{公式}%
+    \def\nxu at assumption@name{假设}%
+    \def\nxu at definition@name{定义}%
+    \def\nxu at proposition@name{命题}%
+    \def\nxu at lemma@name{引理}%
+    \def\nxu at theorem@name{定理}%
+    \def\nxu at axiom@name{公理}%
+    \def\nxu at corollary@name{推论}%
+    \def\nxu at exercise@name{练习}%
+    \def\nxu at example@name{例}%
+    \def\nxu at remark@name{注释}%
+    \def\nxu at problem@name{问题}%
+    \def\nxu at conjecture@name{猜想}%
+    \def\nxu at proof@name{证明}%
+    \def\nxu at theorem@separator{:}%
+  \else
+    \ifnxu at language@english
+      \ctexset{
+        figurename = {Figure},
+        tablename  = {Table},
+      }%
+      \def\nxu at algorithm@name{Algorithm}%
+      \def\nxu at equation@name{Equation}%
+      \def\nxu at assumption@name{Assumption}%
+      \def\nxu at definition@name{Definition}%
+      \def\nxu at proposition@name{Proposition}%
+      \def\nxu at lemma@name{Lemma}%
+      \def\nxu at theorem@name{Theorem}%
+      \def\nxu at axiom@name{Axiom}%
+      \def\nxu at corollary@name{Corollary}%
+      \def\nxu at exercise@name{Exercise}%
+      \def\nxu at example@name{Example}%
+      \def\nxu at remark@name{Remark}%
+      \def\nxu at problem@name{Problem}%
+      \def\nxu at conjecture@name{Conjecture}%
+      \def\nxu at proof@name{Proof}%
+      \def\nxu at theorem@separator{: }%
+    \fi
+  \fi
+}
+\nxu at set@names
+\nxu at option@hook{language}{\nxu at set@names}
+\ifLuaTeX
+  % ctex 将带圈数字 U+2460–U+24FF 归入字符范围 3(ALchar),这里改回范围 6(JAchar)
+  \ltjdefcharrange{3}{%
+    "2000-"243F, "2500-"27BF, "2900-"29FF, "2B00-"2BFF}
+  \ltjdefcharrange{6}{%
+    "2460-"24FF, "2E80-"2EFF, "3000-"30FF, "3190-"319F, "31F0-"4DBF,
+    "4E00-"9FFF, "F900-"FAFF, "FE10-"FE1F, "FE30-"FE6F, "FF00-"FFEF,
+    "1B000-"1B16F, "1F100-"1F2FF, "20000-"3FFFF, "E0100-"E01EF}
+\else
+  \ifXeTeX
+    \xeCJKDeclareCharClass{CJK}{"2460 -> "2473}
+    \xeCJKDeclareCharClass{CJK}{"2605}
+  \fi
+\fi
+\newcommand\nxu at set@punctuations{%
+  \ifnxu at language@chinese
+    \ifLuaTeX
+      \ltjsetparameter{jacharrange={+9}}
+    \else
+      \ifXeTeX
+        \xeCJKDeclareCharClass{FullLeft}{"2018, "201C}%
+        \xeCJKDeclareCharClass{FullRight}{
+          "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A,
+        }%
+      \fi
+    \fi
+  \else
+    \ifnxu at language@english
+      \ifLuaTeX
+        \ltjsetparameter{jacharrange={-9}}
+      \else
+        \ifXeTeX
+          \xeCJKDeclareCharClass{HalfLeft}{"2018, "201C}%
+          \xeCJKDeclareCharClass{HalfRight}{
+            "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A,
+          }%
+        \fi
+      \fi
+    \fi
+  \fi
+}
+\nxu at set@punctuations
+\nxu at option@hook{language}{\nxu at set@punctuations}
+\renewcommand\normalsize{%
+  \@setfontsize\normalsize{10.5bp}{18bp}%
+  \abovedisplayskip 6bp%
+  \abovedisplayshortskip 6bp%
+  \belowdisplayshortskip 6bp%
+  \belowdisplayskip \abovedisplayskip
+}
+\normalsize
+\ifx\MakeRobust\@undefined \else
+    \MakeRobust\normalsize
+\fi
+\def\nxu at def@fontsize#1#2{%
+  \expandafter\newcommand\csname #1\endcsname[1][1.3]{%
+    \fontsize{#2}{##1\dimexpr #2}\selectfont}}
+\nxu at def@fontsize{chuhao}{42bp}
+\nxu at def@fontsize{xiaochu}{36bp}
+\nxu at def@fontsize{yihao}{26bp}
+\nxu at def@fontsize{xiaoyi}{24bp}
+\nxu at def@fontsize{erhao}{22bp}
+\nxu at def@fontsize{xiaoer}{18bp}
+\nxu at def@fontsize{sanhao}{16bp}
+\nxu at def@fontsize{xiaosan}{15bp}
+\nxu at def@fontsize{sihao}{14bp}
+\nxu at def@fontsize{xiaosi}{12bp}
+\nxu at def@fontsize{wuhao}{10.5bp}
+\nxu at def@fontsize{xiaowu}{9bp}
+\nxu at def@fontsize{liuhao}{7.5bp}
+\nxu at def@fontsize{xiaoliu}{6.5bp}
+\nxu at def@fontsize{qihao}{5.5bp}
+\nxu at def@fontsize{bahao}{5bp}
+\ifnxu at system@auto
+  \IfFileExists{/System/Library/Fonts/Menlo.ttc}{
+    \nxusetup{system = mac}
+  }{
+    \IfFileExists{/dev/null}{
+      \IfFileExists{null:}{
+        \nxusetup{system = windows}
+      }{
+        \nxusetup{system = unix}
+      }
+    }{
+      \nxusetup{system = windows}
+    }
+  }
+  \nxu at debug{Detected system: \nxu at system}
+\fi
+\newcommand\nxu at mac@word at font@dir{%
+  /Applications/Microsoft Word.app/Contents/Resources/DFonts%
+}
+\ifnxu at fontset@auto
+  \ifnxu at system@windows
+    \nxusetup{fontset = windows}
+  \else
+    \IfFontExistsTF{SimSun}{
+      \nxusetup{fontset = windows}
+    }{
+      \IfFileExists{\nxu at windows@font at dir/Simsun.ttc}{
+        \nxusetup{fontset = windows, cjk-font = windows-local}
+      }{
+        \IfFileExists{\nxu at mac@word at font@dir/Simsun.ttc}{
+          \nxusetup{fontset = windows, cjk-font = mac-word}
+        }{
+          \ifnxu at system@mac
+            \nxusetup{fontset = mac}
+          \else
+            \IfFontExistsTF{Noto Serif CJK SC}{
+              \nxusetup{fontset = ubuntu}
+            }{
+              \nxusetup{fontset = fandol}
+            }
+          \fi
+        }
+      }
+    }
+  \fi
+  \nxu at debug{Detected fontset: \nxu at fontset}
+\fi
+\newcommand\nxu at set@font{%
+  \@nameuse{nxu at set@font@\nxu at font}%
+}
+\nxu at option@hook{font}{\nxu at set@font}
+\newcommand\nxu at set@font at auto{%
+  \ifnxu at font@auto
+    \ifnxu at fontset@windows
+      \nxusetup{font=times}%
+    \else
+      \ifnxu at fontset@mac
+        \nxusetup{font=times}%
+      \else
+        \nxusetup{font=termes}%
+      \fi
+    \fi
+  \fi
+}
+\nxu at option@hook{math-font}{\g at addto@macro\nxu at setup@hook{\nxu at set@font at auto}}
+\AtBeginOfPackageFile*{siunitx}{\nxu at set@font at auto}
+\AtEndPreamble{\nxu at set@font at auto}
+\newcommand\nxu at set@font at times{%
+  \setmainfont{Times New Roman}%
+  \setsansfont{Times New Roman}%
+  %\setsansfont{Arial}%
+  \ifnxu at fontset@mac
+    \setmonofont{Menlo}[Scale = MatchLowercase]%
+  \else
+    \setmonofont{Courier New}[Scale = MatchLowercase]%
+  \fi
+}
+\newcommand\nxu at set@font at termes{%
+  \setmainfont{texgyretermes}[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+  ]%
+  \nxu at set@texgyre at sans@mono
+}
+\newcommand\nxu at set@texgyre at sans@mono{%
+  \setsansfont{texgyreheros}[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+  ]%
+  \setmonofont{texgyrecursor}[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+    Scale          = MatchLowercase,
+    Ligatures      = CommonOff,
+  ]%
+}
+\let\nxu at font@family at stix\@empty
+\newcommand\nxu at set@stix at names{%
+  \ifx\nxu at font@family at stix\@empty
+    \IfFontExistsTF{STIXTwoText-Regular.otf}{%
+      \gdef\nxu at font@family at stix{STIXTwoText}%
+      \gdef\nxu at font@name at stix@math{STIXTwoMath-Regular}%
+    }{%
+      \gdef\nxu at font@family at stix{STIX2Text}%
+      \gdef\nxu at font@name at stix@math{STIX2Math}%
+    }%
+  \fi
+}
+\newcommand\nxu at set@font at stix{%
+  \nxu at set@stix at names
+  \setmainfont{\nxu at font@family at stix}[
+    Extension      = .otf,
+    UprightFont    = *-Regular,
+    BoldFont       = *-Bold,
+    ItalicFont     = *-Italic,
+    BoldItalicFont = *-BoldItalic,
+  ]%
+  \nxu at set@texgyre at sans@mono
+}
+\let\nxu at font@family at xits\@empty
+\newcommand\nxu at set@xits at names{%
+  \ifx\nxu at font@family at xits\@empty
+    \IfFontExistsTF{XITSMath-Regular.otf}{%
+      \gdef\nxu at font@family at xits{XITS}%
+      \gdef\nxu at font@style at xits@rm{Regular}%
+      \gdef\nxu at font@style at xits@bf{Bold}%
+      \gdef\nxu at font@style at xits@it{Italic}%
+      \gdef\nxu at font@style at xits@bfit{BoldItalic}%
+      \gdef\nxu at font@name at xits@math{XITSMath-Regular}%
+    }{%
+      \gdef\nxu at font@family at xits{xits}%
+      \gdef\nxu at font@style at xits@rm{regular}%
+      \gdef\nxu at font@style at xits@bf{bold}%
+      \gdef\nxu at font@style at xits@it{italic}%
+      \gdef\nxu at font@style at xits@bfit{bolditalic}%
+      \gdef\nxu at font@name at xits@math{xits-math}%
+    }%
+  \fi
+}
+\newcommand\nxu at set@font at xits{%
+  \nxu at set@xits at names
+  \setmainfont{\nxu at font@family at xits}[
+    Extension      = .otf,
+    UprightFont    = *-\nxu at font@style at xits@rm,
+    BoldFont       = *-\nxu at font@style at xits@bf,
+    ItalicFont     = *-\nxu at font@style at xits@it,
+    BoldItalicFont = *-\nxu at font@style at xits@bfit,
+  ]%
+  \nxu at set@texgyre at sans@mono
+}
+\let\nxu at font@family at libertinus\@empty
+\newcommand\nxu at set@libertinus at names{%
+  \ifx\nxu at font@family at libertinus\@empty
+    \IfFontExistsTF{LibertinusSerif-Regular.otf}{%
+      \gdef\nxu at font@family at libertinus@serif{LibertinusSerif}%
+      \gdef\nxu at font@family at libertinus@sans{LibertinusSans}%
+      \gdef\nxu at font@name at libertinus@math{LibertinusMath-Regular}%
+      \gdef\nxu at font@style at libertinus@rm{Regular}%
+      \gdef\nxu at font@style at libertinus@bf{Bold}%
+      \gdef\nxu at font@style at libertinus@it{Italic}%
+      \gdef\nxu at font@style at libertinus@bfit{BoldItalic}%
+    }{%
+      \gdef\nxu at font@family at libertinus@serif{libertinusserif}%
+      \gdef\nxu at font@family at libertinus@sans{libertinussans}%
+      \gdef\nxu at font@name at libertinus@math{libertinusmath-regular}%
+      \gdef\nxu at font@style at libertinus@rm{regular}%
+      \gdef\nxu at font@style at libertinus@bf{bold}%
+      \gdef\nxu at font@style at libertinus@it{italic}%
+      \gdef\nxu at font@style at libertinus@bfit{bolditalic}%
+    }%
+  \fi
+}
+\newcommand\nxu at set@font at libertinus{%
+  \nxu at set@libertinus at names
+  \setmainfont{\nxu at font@family at libertinus@serif}[
+    Extension      = .otf,
+    UprightFont    = *-\nxu at font@style at libertinus@rm,
+    BoldFont       = *-\nxu at font@style at libertinus@bf,
+    ItalicFont     = *-\nxu at font@style at libertinus@it,
+    BoldItalicFont = *-\nxu at font@style at libertinus@bfit,
+  ]%
+  \setsansfont{\nxu at font@family at libertinus@sans}[
+    Extension      = .otf,
+    UprightFont    = *-\nxu at font@style at libertinus@rm,
+    BoldFont       = *-\nxu at font@style at libertinus@bf,
+    ItalicFont     = *-\nxu at font@style at libertinus@it,
+  ]%
+  \setmonofont{lmmonolt10}[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-oblique,
+    BoldItalicFont = *-boldoblique,
+  ]%
+}
+\newcommand\nxu at set@font at newcm{%
+  \setmainfont{NewCM10}[
+    Extension      = .otf,
+    UprightFont    = *-Book,
+    BoldFont       = *-Bold,
+    ItalicFont     = *-BookItalic,
+    BoldItalicFont = *-BoldItalic,
+  ]%
+  \setsansfont{NewCMSans10}[
+    Extension         = .otf,
+    UprightFont       = *-Book,
+    BoldFont          = *-Bold,
+    ItalicFont        = *-BookOblique,
+    BoldItalicFont    = *-BoldOblique,
+  ]%
+  \setmonofont{NewCMMono10}[
+    Extension           = .otf,
+    UprightFont         = *-Book,
+    ItalicFont          = *-BookItalic,
+    BoldFont            = *-Bold,
+    BoldItalicFont      = *-BoldOblique,
+  ]%
+}
+\newcommand\nxu at set@font at lm{%
+  \setmainfont{lmroman10}[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+  ]%
+  \setsansfont{lmsans10}[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-oblique,
+    BoldItalicFont = *-boldoblique,
+  ]%
+  \setmonofont{lmmonolt10}[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-oblique,
+    BoldItalicFont = *-boldoblique,
+  ]%
+}
+\newcommand\nxu at set@font at newtx{%
+  \RequirePackage{newtxtext}%
+}
+\ifnxu at cjk@font at auto
+  \ifnxu at fontset@mac
+    \nxusetup{cjk-font = mac}
+  \else
+    \ifnxu at fontset@windows
+      \IfFontExistsTF{SimSun}{
+        \nxusetup{cjk-font = windows}
+      }{
+        \IfFileExists{\nxu at windows@font at dir/Simsun.ttc}{
+          \nxusetup{cjk-font = windows-local}
+        }{
+          \IfFileExists{\nxu at mac@word at font@dir/Simsun.ttc}{
+            \nxusetup{cjk-font = mac-word}
+          }{
+            \nxu at error{Cannot find "SimSun" font}
+          }
+        }
+      }
+    \else
+      \ifnxu at fontset@ubuntu
+        \nxusetup{cjk-font = noto}
+      \else
+        \nxusetup{cjk-font = fandol}
+      \fi
+    \fi
+  \fi
+  \nxu at debug{Detected CJK font: \nxu at cjk@font}
+\fi
+\newcommand\nxu at set@cjk at font@windows{%
+  \setCJKmainfont{SimSun}[
+    AutoFakeBold = 3,
+    ItalicFont   = KaiTi,
+  ]%
+  \setCJKsansfont{SimHei}[AutoFakeBold = 3]%
+  \setCJKmonofont{FangSong}%
+  \setCJKfamilyfont{zhsong}{SimSun}[AutoFakeBold = 3]%
+  \setCJKfamilyfont{zhhei}{SimHei}[AutoFakeBold = 3]%
+  \setCJKfamilyfont{zhkai}{KaiTi}%
+  \setCJKfamilyfont{zhfs}{FangSong}%
+}
+\@namedef{nxu at set@cjk at font@windows-local}{%
+  \IfFileExists{\nxu at windows@font at dir/Kaiti.ttf}{
+    \setCJKmainfont{SimSun}[%
+      Path         = \nxu at windows@font at dir/,
+      Extension    = .ttc,
+      AutoFakeBold = 3,
+      ItalicFont   = Kaiti,
+      ItalicFeatures = {Extension = .ttf},
+    ]%
+    \setCJKmonofont{Fangsong}[
+      Path         = \nxu at windows@font at dir/,
+      Extension    = .ttf,
+    ]%
+    \setCJKfamilyfont{zhkai}{Kaiti}[
+      Path         = \nxu at windows@font at dir/,
+      Extension    = .ttf,
+    ]%
+    \setCJKfamilyfont{zhfs}{Fangsong}[
+      Path         = \nxu at windows@font at dir/,
+      Extension    = .ttf,
+    ]%
+  }{
+    \setCJKmainfont{SimSun}[%
+      Path         = \nxu at windows@font at dir/,
+      Extension    = .ttc,
+      AutoFakeBold = 3,
+      ItalicFont   = Simkai,
+      ItalicFeatures = {Extension = .ttf},
+    ]%
+    \setCJKmonofont{Simfang}[
+      Path         = \nxu at windows@font at dir/,
+      Extension    = .ttf,
+    ]%
+    \setCJKfamilyfont{zhkai}{Simkai}[
+      Path         = \nxu at windows@font at dir/,
+      Extension    = .ttf,
+    ]%
+    \setCJKfamilyfont{zhfs}{Simfang}[
+      Path         = \nxu at windows@font at dir/,
+      Extension    = .ttf,
+    ]%
+  }
+  \setCJKsansfont{SimHei}[%
+    Path         = \nxu at windows@font at dir/,
+    Extension    = .ttf,
+    AutoFakeBold = 3,
+  ]%
+  \setCJKfamilyfont{zhsong}{SimSun}[%
+    Path         = \nxu at windows@font at dir/,
+    Extension    = .ttc,
+    AutoFakeBold = 3,
+  ]%
+  \setCJKfamilyfont{zhhei}{SimHei}[%
+    Path         = \nxu at windows@font at dir/,
+    Extension    = .ttf,
+    AutoFakeBold = 3,
+  ]%
+}
+\@namedef{nxu at set@cjk at font@mac-word}{%
+  \let\nxu at windows@font at dir\nxu at mac@word at font@dir
+  \@nameuse{nxu at set@cjk at font@windows-local}%
+}
+\newcommand\nxu at set@cjk at font@mac{%
+  \defaultCJKfontfeatures{}%
+  \setCJKmainfont{Songti SC}[
+    UprightFont    = * Light,
+    BoldFont       = * Bold,
+    ItalicFont     = Kaiti SC Regular,
+    BoldItalicFont = Kaiti SC Bold,
+  ]%
+  \setCJKsansfont{Heiti SC}[
+    UprightFont    = * Light,
+    BoldFont       = * Medium,
+  ]%
+  \setCJKmonofont{STFangsong}
+  \setCJKfamilyfont{zhsong}{Songti SC}[
+    UprightFont    = * Light,
+    BoldFont       = * Bold,
+  ]%
+  \setCJKfamilyfont{zhhei}{Heiti SC}[
+    UprightFont    = * Light,
+    BoldFont       = * Medium,
+  ]%
+  \setCJKfamilyfont{zhfs}{STFangsong}%
+  \setCJKfamilyfont{zhkai}{Kaiti SC}[
+    UprightFont    = * Regular,
+    BoldFont       = * Bold,
+  ]%
+  \setCJKfamilyfont{zhli}{Baoli SC}%
+  \setCJKfamilyfont{zhyuan}{Yuanyi SC}[
+    UprightFont    = * Light,
+    BoldFont       = * Bold,
+  ]%
+}
+\newcommand\nxu at set@cjk at font@noto{%
+  \defaultCJKfontfeatures{}%
+  \setCJKmainfont{Noto Serif CJK SC}[
+    UprightFont    = * Light,
+    BoldFont       = * Bold,
+    ItalicFont     = FandolKai-Regular,
+    ItalicFeatures = {Extension = .otf},
+    Script         = CJK,
+  ]%
+  \setCJKsansfont{Noto Sans CJK SC}[
+    BoldFont       = * Medium,
+    Script         = CJK,
+  ]%
+  \setCJKmonofont{Noto Sans Mono CJK SC}[
+    Script         = CJK,
+  ]%
+  \setCJKfamilyfont{zhsong}{Noto Serif CJK SC}[
+    UprightFont    = * Light,
+    UprightFont    = * Bold,
+    Script         = CJK,
+  ]%
+  \setCJKfamilyfont{zhhei}{Noto Sans CJK SC}[
+    BoldFont       = * Medium,
+    Script         = CJK,
+  ]%
+  \setCJKfamilyfont{zhfs}{FandolFang}[
+    Extension      = .otf,
+    UprightFont    = *-Regular,
+  ]%
+  \setCJKfamilyfont{zhkai}{FandolKai}[
+    Extension      = .otf,
+    UprightFont    = *-Regular,
+  ]%
+}
+\newcommand\nxu at set@cjk at font@fandol{%
+  \defaultCJKfontfeatures{}%
+  \setCJKmainfont{FandolSong}[
+    Extension   = .otf,
+    UprightFont = *-Regular,
+    BoldFont    = *-Bold,
+    ItalicFont  = FandolKai-Regular,
+    ItalicFeatures = {Extension = .otf},
+  ]%
+  \setCJKsansfont{FandolHei}[
+    Extension   = .otf,
+    UprightFont = *-Regular,
+    BoldFont    = *-Bold,
+  ]%
+  \setCJKmonofont{FandolFang}[
+    Extension   = .otf,
+    UprightFont = *-Regular,
+  ]%
+  \setCJKfamilyfont{zhsong}{FandolSong}[
+    Extension   = .otf,
+    UprightFont = *-Regular,
+    BoldFont    = *-Bold,
+  ]%
+  \setCJKfamilyfont{zhhei}{FandolHei}[
+    Extension   = .otf,
+    UprightFont = *-Regular,
+    BoldFont    = *-Bold,
+  ]%
+  \setCJKfamilyfont{zhfs}{FandolFang}[
+    Extension   = .otf,
+    UprightFont = *-Regular,
+  ]%
+  \setCJKfamilyfont{zhkai}{FandolKai}[
+    Extension   = .otf,
+    UprightFont = *-Regular,
+  ]%
+}
+\ifnxu at cjk@font at none\else
+  \providecommand\songti{\CJKfamily{zhsong}}
+  \providecommand\heiti{\CJKfamily{zhhei}}
+  \providecommand\fangsong{\CJKfamily{zhfs}}
+  \providecommand\kaishu{\CJKfamily{zhkai}}
+\fi
+\newcommand\nxu at set@cjk at font{%
+  \@nameuse{nxu at set@cjk at font@\nxu at cjk@font}%
+}
+\nxu at set@cjk at font
+\nxu at option@hook{cjk-font}{\nxu at set@cjk at font}
+\newcommand\nxu at set@math at style{%
+  \ifnxu at math@style at TeX
+    \nxusetup{
+      uppercase-greek    = upright,
+      less-than-or-equal = horizontal,
+      integral           = slanted,
+      integral-limits    = false,
+      partial            = italic,
+      math-ellipsis      = AMS,
+      real-part          = fraktur,
+    }%
+  \else
+    \nxusetup{
+      uppercase-greek = italic,
+      integral        = upright,
+      partial         = upright,
+      real-part       = roman,
+    }%
+    \ifnxu at math@style at ISO
+      \nxusetup{
+        less-than-or-equal = horizontal,
+        integral-limits    = true,
+        math-ellipsis      = lower,
+      }%
+    \else
+      \ifnxu at math@style at GB
+        \nxusetup{
+          less-than-or-equal = slanted,
+          integral-limits    = false,
+          math-ellipsis      = centered,
+        }%
+      \fi
+    \fi
+  \fi
+}
+\ifnxu at main@language at chinese
+  \nxusetup{math-style=GB}%
+\else
+  \nxusetup{math-style=TeX}%
+\fi
+\nxu at set@math at style
+\nxu at option@hook{math-style}{\nxu at set@math at style}
+\nxu at option@hook{main-language}{%
+  \ifnxu at main@language at chinese
+    \nxusetup{math-style=GB}%
+  \else
+    \nxusetup{math-style=TeX}%
+  \fi
+}
+\newcommand\nxu at set@unimath at leq{%
+  \ifnxu at leq@horizontal
+    \ifx\@begindocumenthook\@undefined
+      \let\le\nxu at save@leq
+      \let\ge\nxu at save@geq
+      \let\leq\nxu at save@leq
+      \let\geq\nxu at save@geq
+    \else
+      \AtBeginDocument{%
+        \let\le\nxu at save@leq
+        \let\ge\nxu at save@geq
+        \let\leq\nxu at save@leq
+        \let\geq\nxu at save@geq
+      }%
+    \fi
+  \else
+    \ifnxu at leq@slanted
+      \ifx\@begindocumenthook\@undefined
+        \let\le\leqslant
+        \let\ge\geqslant
+        \let\leq\leqslant
+        \let\geq\geqslant
+      \else
+        \AtBeginDocument{%
+          \let\le\leqslant
+          \let\ge\geqslant
+          \let\leq\leqslant
+          \let\geq\geqslant
+        }%
+      \fi
+    \fi
+  \fi
+}
+\newcommand\nxu at set@unimath at integral@limits{%
+  \ifnxu at integral@limits at true
+    \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
+    }%
+  \else
+    \addnolimits{%
+      \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
+    }%
+  \fi
+}
+\newcommand\nxu at set@unimath at ellipsis{%
+  \ifnxu at math@ellipsis at centered
+    \DeclareRobustCommand\mathellipsis{\mathinner{\unicodecdots}}%
+  \else
+    \DeclareRobustCommand\mathellipsis{\mathinner{\unicodeellipsis}}%
+  \fi
+}
+\newcommand\nxu at set@unimath at real@part{%
+  \ifnxu at real@part at roman
+    \AtBeginDocument{%
+      \def\Re{\operatorname{Re}}%
+      \def\Im{\operatorname{Im}}%
+    }%
+  \else
+    \AtBeginDocument{%
+      \let\Re\nxu at save@Re
+      \let\Im\nxu at save@Im
+    }%
+  \fi
+}
+\newcommand\nxu at set@unimath at style{%
+  \ifnxu at uppercase@greek at upright
+    \unimathsetup{math-style = TeX}%
+  \else
+    \ifnxu at uppercase@greek at italic
+      \unimathsetup{math-style = ISO}%
+    \fi
+  \fi
+  \ifnxu at math@style at TeX
+    \unimathsetup{bold-style = TeX}%
+  \else
+    \unimathsetup{bold-style = ISO}%
+  \fi
+  \nxu at set@unimath at leq
+  \nxu at set@unimath at integral@limits
+  \ifnxu at partial@upright
+    \unimathsetup{partial = upright}%
+  \else
+    \ifnxu at partial@italic
+      \unimathsetup{partial = italic}%
+    \fi
+  \fi
+  \nxu at set@unimath at ellipsis
+  \nxu at set@unimath at real@part
+}
+\newcommand\nxu at qed{\rule{1ex}{1ex}}
+\newcommand\nxu at load@unimath{%
+  \@ifpackageloaded{unicode-math}{}{%
+    \RequirePackage{unicode-math}%
+    \AtBeginDocument{%
+      \let\nxu at save@leq\leq
+      \let\nxu at save@geq\geq
+      \let\nxu at save@Re\Re
+      \let\nxu at save@Im\Im
+    }%
+    \DeclareRobustCommand\bm[1]{{\symbfit{##1}}}%
+    \DeclareRobustCommand\boldsymbol[1]{{\symbfit{##1}}}%
+    \newcommand\square{\mdlgwhtsquare}%
+    \newcommand\blacksquare{\mdlgblksquare}%
+    \AtBeginDocument{%
+      \renewcommand\checkmark{\ensuremath{\symbol{"2713}}}%
+    }%
+    \renewcommand\nxu at qed{\ensuremath{\QED}}%
+  }%
+}
+\newcommand\nxu at set@math at font@stix{%
+  \nxu at set@stix at names
+  \setmathfont{\nxu at font@name at stix@math}[
+    Extension    = .otf,
+    Scale        = MatchLowercase,
+    StylisticSet = \nxu at xits@integral at stylistic@set,
+  ]%
+  \setmathfont{\nxu at font@name at stix@math}[
+    Extension    = .otf,
+    Scale        = MatchLowercase,
+    StylisticSet = 1,
+    range        = {scr,bfscr},
+  ]%
+}
+\newcommand\nxu at xits@integral at stylistic@set{%
+  \ifnxu at integral@upright
+    8%
+  \fi
+}
+\newcommand\nxu at set@math at font@xits{%
+  \nxu at set@xits at names
+  \setmathfont{\nxu at font@name at xits@math}[
+    Extension    = .otf,
+    StylisticSet = \nxu at xits@integral at stylistic@set,
+  ]%
+  \setmathfont{\nxu at font@name at xits@math}[
+    Extension    = .otf,
+    StylisticSet = 1,
+    range        = {cal,bfcal},
+  ]%
+}
+\newcommand\nxu at libertinus@integral at stylistic@set{%
+  \ifnxu at integral@slanted
+    8%
+  \fi
+}
+\newcommand\nxu at set@math at font@libertinus{%
+  \nxu at set@libertinus at names
+  \setmathfont{\nxu at font@name at libertinus@math}[
+    Extension    = .otf,
+    StylisticSet = \nxu at libertinus@integral at stylistic@set,
+  ]%
+}
+\newcommand\nxu at newcm@integral at stylistic@set{%
+  \ifnxu at integral@upright
+    2%
+  \fi
+}
+\newcommand\nxu at set@math at font@newcm{%
+  \setmathfont{NewCMMath-Book}[
+    Extension    = .otf,
+    StylisticSet = \nxu at newcm@integral at stylistic@set,
+  ]%
+  \setmathfont{NewCMMath-Book}[
+    Extension    = .otf,
+    StylisticSet = 1,
+    range        = {scr,bfscr},
+  ]%
+  \setmathrm{NewCM10}[
+    Extension      = .otf,
+    UprightFont    = *-Book,
+    BoldFont       = *-Bold,
+    ItalicFont     = *-BookItalic,
+    BoldItalicFont = *-BoldItalic,
+  ]%
+  \setmathsf{NewCMSans10}[
+    Extension         = .otf,
+    UprightFont       = *-Book,
+    BoldFont          = *-Bold,
+    ItalicFont        = *-BookOblique,
+    BoldItalicFont    = *-BoldOblique,
+  ]%
+  \setmathtt{NewCMMono10}[
+    Extension           = .otf,
+    UprightFont         = *-Book,
+    ItalicFont          = *-BookItalic,
+    BoldFont            = *-Bold,
+    BoldItalicFont      = *-BoldOblique,
+  ]%
+}
+\newcommand\nxu at set@math at font@lm{%
+  \setmathfont{latinmodern-math}[Extension=.otf]%
+  \setmathrm{lmroman10}[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+  ]%
+  \setmathsf{lmsans10}[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-oblique,
+    BoldItalicFont = *-boldoblique,
+  ]%
+  \setmathtt{lmmonolt10}[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-oblique,
+    BoldItalicFont = *-boldoblique,
+  ]%
+}
+\newcommand\nxu at set@math at font@newtx{%
+  \ifnxu at font@newtx\else
+    \let\nxu at save@encodingdefault\encodingdefault
+    \let\nxu at save@rmdefault\rmdefault
+    \let\nxu at save@sfdefault\sfdefault
+    \let\nxu at save@ttdefault\ttdefault
+    \RequirePackage[T1]{fontenc}%
+    \renewcommand{\rmdefault}{ntxtlf}%
+    \renewcommand{\sfdefault}{qhv}%
+    \renewcommand{\ttdefault}{ntxtt}%
+  \fi
+  \ifnxu at uppercase@greek at italic
+    \PassOptionsToPackage{slantedGreek}{newtxmath}%
+  \fi
+  \ifnxu at integral@upright
+    \PassOptionsToPackage{upint}{newtxmath}%
+  \fi
+  \RequirePackage{newtxmath}
+  \let\nxu at save@leq\leq
+  \let\nxu at save@geq\geq
+  \ifnxu at leq@slanted
+    \let\le\leqslant
+    \let\ge\geqslant
+    \let\leq\leqslant
+    \let\geq\geqslant
+  \fi
+  \ifnxu at integral@limits at true
+    \let\ilimits@\displaylimits
+  \fi
+  \let\nxu at save@partial\partial
+  \ifnxu at partial@upright
+    \let\partial\uppartial
+  \fi
+  \ifnxu at math@ellipsis at centered
+    \DeclareRobustCommand\mathellipsis{\mathinner{\cdotp\cdotp\cdotp}}%
+  \else
+    \DeclareRobustCommand\mathellipsis{\mathinner{\ldotp\ldotp\ldotp}}%
+  \fi
+  \let\nxu at save@Re\Re
+  \let\nxu at save@Im\Im
+  \ifnxu at real@part at roman
+    \def\Re{\operatorname{Re}}%
+    \def\Im{\operatorname{Im}}%
+  \fi
+  \RequirePackage{bm}%
+  \ifnxu at font@newtx\else
+    \let\encodingdefault\nxu at save@encodingdefault
+    \let\rmdefault\nxu at save@rmdefault
+    \let\sfdefault\nxu at save@sfdefault
+    \let\ttdefault\nxu at save@ttdefault
+  \fi
+  \DeclareRobustCommand\symup[1]{{\mathrm{##1}}}%
+  \DeclareRobustCommand\symbf[1]{{\bm{##1}}}%
+  \DeclareRobustCommand\symbfsf[1]{{\bm{\mathsf{##1}}}}%
+  \let\increment\upDelta%
+  \renewcommand\nxu at qed{\openbox}%
+}
+\newcommand\nxu at set@math at font{%
+  \ifnxu at math@font at none\else
+    \ifnxu at math@font at newtx
+      \nxu at set@math at font@newtx
+    \else
+      \nxu at load@unimath
+      \nxu at set@unimath at style
+      \@nameuse{nxu at set@math at font@\nxu at math@font}%
+    \fi
+  \fi
+}
+\nxu at option@hook{math-font}{\g at addto@macro\nxu at setup@hook{\nxu at set@math at font}}
+\newcommand\nxu at set@math at font@auto{%
+  \ifnxu at math@font at auto
+    \nxusetup{math-font=xits}%
+  \fi
+}
+\AtBeginOfPackageFile*{siunitx}{\nxu at set@math at font@auto}
+\AtEndPreamble{\nxu at set@math at font@auto}
+\def\cleardoublepage{%
+  \clearpage
+  \if at twoside
+    \ifnxu at output@print
+      \ifodd\c at page
+      \else
+        \thispagestyle{empty}%
+        \hbox{}%
+        \newpage
+        \if at twocolumn
+          \hbox{}\newpage
+        \fi
+      \fi
+    \fi
+  \fi
+}
+\renewcommand\frontmatter{%
+  \cleardoublepage
+  \@mainmatterfalse
+  \pagenumbering{Roman}%
+  \pagestyle{plain}
+}
+\renewcommand\mainmatter{%
+  \cleardoublepage
+  \@mainmattertrue
+  \pagenumbering{arabic}%
+  \pagestyle{fancy}
+}
+\newif\ifnxu at backmatter
+\renewcommand\backmatter{%
+  \if at openright
+    \cleardoublepage
+  \else
+    \clearpage
+  \fi
+  \@mainmatterfalse
+  \nxu at backmattertrue
+  \nxusetup{toc-depth = 0}%
+}
+\pagestyle{fancy}
+\fancypagestyle{fancy}{%
+  \fancyhf{}%
+  \renewcommand\footrulewidth{0pt}%
+    \renewcommand\headrulewidth{0.5bp}%
+%    \newcommand{\makeheadrule}{%
+%    	\makebox[0pt][l]{\rule[0.6\baselineskip]{\headwidth}{3.0bp}}%
+%    	\rule[0.52\baselineskip]{\headwidth}{0.8bp}}
+    \renewcommand{\headrule}{%
+    	{\if at fancyplain\let\headrulewidth\plainheadrulewidth\fi
+    		\makebox[0pt][l]{\rule[0.6\baselineskip]{\headwidth}{3.0bp}}%
+    		\rule[0.52\baselineskip]{\headwidth}{0.8bp}
+    			%\hrule\@height 3.0bp \@width\headwidth\vskip1pt%上面线为1pt粗
+    			%\hrule\@height 0.8bp \@width\headwidth%下面0.5pt粗
+    			%\vskip-2\headrulewidth\vskip-1pt
+    		}}
+    \fancyhead[L]{%
+      \xiaowu
+      \ifnxu at main@language at chinese
+        \ifnxu at degree@doctor
+          宁夏大学博士学位论文
+        \else
+          \ifnxu at degree@master
+            宁夏大学硕士学位论文
+          \fi
+        \fi
+      \else
+        \MakeUppercase{\leftmark}%
+      \fi
+      }%
+    \fancyhead[R]{%
+      \xiaowu
+      \ifnxu at main@language at chinese
+        \leftmark
+      \else
+        \MakeUppercase{\leftmark}%
+      \fi
+      }%
+    \fancyfoot[LE,RO]{\xiaowu -- {\thepage} --}%
+    \let\@mkboth\markboth
+    \def\chaptermark##1{%
+      \markboth{%
+        \CTEXifname{%
+          \CTEXthechapter
+          \ifnxu at main@language at chinese
+            \quad
+          \else
+            \space
+          \fi
+        }{}##1%
+      }{}%
+    }%
+  \let\sectionmark\@gobble
+}
+\fancypagestyle{plain}{%
+  \fancyhf{}%
+  \renewcommand\footrulewidth{0pt}%
+  \renewcommand\headrulewidth{0pt}%
+  \renewcommand\headrule{}%
+  \fancyfoot[C]{
+    \xiaowu
+    \thepage
+  }
+  %\fancyhead{}%
+}
+\pagestyle{fancy}
+\def\ps at chapter{}
+\ctexset{chapter/pagestyle = chapter}
+\ctexset{%
+  punct=quanjiao,
+}
+% \def\headrule{{\if at fancyplain\let\headrulewidth\plainheadrulewidth\fi%
+		% \hrule\@height 1.0pt \@width\headwidth\vskip1pt%上面线为1pt粗
+		% \hrule\@height 0.5pt\@width\headwidth%下面0.5pt粗
+		% \vskip-2\headrulewidth\vskip-1pt}%两条线的距离1pt
+
+\newcommand\nxu at set@indent{%
+  \ifnxu at main@language at chinese
+    \ctexset{autoindent=2}%
+  \else
+    \ctexset{autoindent=0.74cm}%
+  \fi
+}
+\nxu at set@indent
+\nxu at option@hook{degree}{\nxu at set@indent}
+\nxu at option@hook{main-language}{\nxu at set@indent}
+\urlstyle{same}
+\g at addto@macro\UrlBreaks{%
+  \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9%
+  \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
+}
+\Urlmuskip=0mu plus 0.1mu
+\partopsep=\z at skip
+\def\@listi{\leftmargin\leftmargini
+            \parsep \z at skip
+            \topsep \z at skip
+            \itemsep\z at skip}
+\let\@listI\@listi
+\@listi
+\def\@listii {\leftmargin\leftmarginii
+              \labelwidth\leftmarginii
+              \advance\labelwidth-\labelsep
+              \topsep    \z at skip
+              \parsep    \z at skip
+              \itemsep   \z at skip}
+\def\@listiii{\leftmargin\leftmarginiii
+              \labelwidth\leftmarginiii
+              \advance\labelwidth-\labelsep
+              \topsep    \z at skip
+              \parsep    \z at skip
+              \partopsep \z at skip
+              \itemsep   \z at skip}
+\setlist{nosep}
+\interfootnotelinepenalty=10000
+\newcommand\nxu at circled[1]{%
+  \ifnum#1 >10\relax
+    \nxu at warning{%
+      Too many footnotes in this page.
+      Keep footnote less than 10%
+    }%
+  \fi
+  {\symbol{\the\numexpr#1+"245F\relax}}%
+}
+\renewcommand{\thefootnote}{\nxu at circled{\c at footnote}}
+\renewcommand{\thempfootnote}{\nxu at circled{\c at mpfootnote}}
+\def\footnoterule{\vskip-3\p@\hrule\@width0.3\textwidth\@height0.4\p@\vskip2.6\p@}
+\footnotemargin=13.5bp
+\long\def\@makefntext#1{%
+  \begingroup
+    % 序号取消上标
+    \def\@makefnmark{\hbox{\normalfont\@thefnmark}}%
+    \xiaowu
+    \ifFN at hangfoot
+      \bgroup
+      \setbox\@tempboxa\hbox{%
+        \ifdim\footnotemargin>\z@
+          \hb at xt@\footnotemargin{\@makefnmark\hss}%
+        \else
+          \@makefnmark
+        \fi
+      }%
+      \leftmargin\wd\@tempboxa
+      \rightmargin\z@
+      \linewidth \columnwidth
+      \advance \linewidth -\leftmargin
+      \parshape \@ne \leftmargin \linewidth
+      % \footnotesize
+      \xiaowu
+      \@setpar{{\@@par}}%
+      \leavevmode
+      \llap{\box\@tempboxa}%
+      \parskip\hangfootparskip\relax
+      \parindent\hangfootparindent\relax
+    \else
+      \parindent1em%
+      \noindent
+      \ifdim\footnotemargin>\z@
+        \hb at xt@ \footnotemargin{\hss\@makefnmark}%
+      \else
+        \ifdim\footnotemargin=\z@
+          \llap{\@makefnmark}%
+        \else
+          \llap{\hb at xt@ -\footnotemargin{\@makefnmark\hss}}%
+        \fi
+      \fi
+    \fi
+    \footnotelayout#1%
+    \ifFN at hangfoot
+      \par\egroup
+    \fi
+  \endgroup
+}
+\allowdisplaybreaks[4]
+\newcommand\nxu at put@parentheses[1]{%
+  \ifnxu at language@chinese
+    \unskip
+    (#1)%
+  \else
+    (#1)%
+  \fi
+}
+\def\tagform@#1{\maketag@@@{\nxu at put@parentheses{\ignorespaces#1\unskip\@@italiccorr}}}
+\renewcommand{\eqref}[1]{%
+  \textup{%
+    \normalfont\nxu at put@parentheses{%
+      \ignorespaces\ref{#1}\unskip\@@italiccorr
+    }%
+  }%
+}
+\def\fps at figure{htbp}
+\def\fps at table{htbp}
+\setlength{\floatsep}{12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength{\textfloatsep}{12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength{\intextsep}{12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength{\@fptop}{0bp \@plus1.0fil}
+\setlength{\@fpsep}{12bp \@plus2.0fil}
+\setlength{\@fpbot}{0bp \@plus1.0fil}
+\patchcmd{\@addtocurcol}%
+  {\vskip \intextsep}%
+  {\edef\save at first@penalty{\the\lastpenalty}\unpenalty
+   \ifnum \lastpenalty = \@M  % hopefully the OR penalty
+     \unpenalty
+   \else
+     \penalty \save at first@penalty \relax % put it back
+   \fi
+   \ifnum\outputpenalty <-\@Mii
+     \addvspace\intextsep
+     \vskip\parskip
+   \else
+     \addvspace\intextsep
+   \fi}%
+  {}{\nxu at patch@error{\@addtocurcol}}
+\patchcmd{\@addtocurcol}%
+  {\vskip\intextsep \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi}%
+  {\ifnum\outputpenalty <-\@Mii
+     \aftergroup\vskip\aftergroup\intextsep
+     \aftergroup\nointerlineskip
+   \else
+     \vskip\intextsep
+   \fi}%
+  {}{\nxu at patch@error{\@addtocurcol}}
+\patchcmd{\@getpen}{\@M}{\@Mi}
+  {}{\nxu at patch@error{\@getpen}}
+\renewcommand{\textfraction}{0.15}
+\renewcommand{\topfraction}{0.85}
+\renewcommand{\bottomfraction}{0.65}
+\renewcommand{\floatpagefraction}{0.60}
+\nxu at define@key{
+  figure-number-separator = {
+    name    = figure at number@separator,
+    default = {.},
+  },
+  table-number-separator = {
+    name    = table at number@separator,
+    default = {.},
+  },
+  equation-number-separator = {
+    name    = equation at number@separator,
+    default = {.},
+  },
+  number-separator = {
+    name    = number at separator,
+    default = {.},
+  },
+}
+\renewcommand\thefigure{%
+  \xiaowu
+  \ifnum\c at chapter>\z@
+    \thechapter
+    \nxu at figure@number at separator
+  \fi
+  \@arabic\c at figure
+}
+\renewcommand\thetable{%
+  \xiaowu
+  \ifnum\c at chapter>\z@
+    \thechapter
+    \nxu at table@number at separator
+  \fi
+  \@arabic\c at table
+}
+\renewcommand\theequation{%
+  \xiaowu
+  \ifnum\c at chapter>\z@
+    \thechapter
+    \nxu at equation@number at separator
+  \fi
+  \@arabic\c at equation
+}
+\newcommand\nxu at set@number at separator{%
+  \let\nxu at figure@number at separator\nxu at number@separator
+  \let\nxu at table@number at separator\nxu at number@separator
+  \let\nxu at equation@number at separator\nxu at number@separator
+}
+\nxu at option@hook{number-separator}{\nxu at set@number at separator}
+\DeclareCaptionFont{nxu}{%
+  \ifnxu at language@chinese
+    \fontsize{9bp}{13.5bp}\heiti
+  \else
+    \fontsize{9bp}{12.65bp}\selectfont
+  \fi
+}
+\captionsetup{
+  font           = nxu,
+  labelsep       = quad,
+  skip           = 6bp,
+  figureposition = bottom,
+  tableposition  = top,
+}
+\captionsetup[sub]{font=nxu}
+\renewcommand{\thesubfigure}{(\alph{subfigure})}
+\renewcommand{\thesubtable}{(\alph{subtable})}
+\newcommand\nxu at set@table at font{
+  \ifnxu at language@chinese
+    \def\nxu at table@font{%
+      \fontsize{9bp}{13.5bp}\selectfont
+      \renewcommand\arraystretch{1.42}%
+    }%
+  \else
+    \def\nxu at table@font{%
+      \fontsize{9bp}{13.5bp}\selectfont
+      \renewcommand\arraystretch{1.47}%
+    }%
+  \fi
+}
+\nxu at set@table at font
+\nxu at option@hook{language}{\nxu at set@table at font}
+\patchcmd\@floatboxreset{%
+  \normalsize
+}{%
+  \nxu at table@font
+}{}{\nxu at patch@error{\@floatboxreset}}
+\AtEndOfPackageFile*{longtable}{
+  \AtBeginEnvironment{longtable}{%
+    \nxu at table@font
+  }
+}
+\heavyrulewidth=1.5bp
+\lightrulewidth=1bp
+\AtEndOfPackageFile*{threeparttable}{
+  \g at addto@macro\TPT at defaults{\wuhao}
+}
+\newcommand{\nxu at abstract@name}{摘要}
+\newcommand{\nxu at abstract@name at en}{Abstract}
+\ctexset{%
+  chapter = {
+    nameformat   = {},
+    numberformat = {},
+    titleformat  = {},
+    fixskip      = true,
+    afterindent  = true,
+    lofskip      = 0pt,
+    lotskip      = 0pt,
+  },
+  section = {
+    afterindent  = true,
+  },
+  subsection = {
+    afterindent  = true,
+  },
+  subsubsection = {
+    afterindent  = true,
+  },
+  paragraph/afterindent = true,
+  subparagraph/afterindent = true,
+}
+\newcommand\nxu at set@section at format{%
+    \ctexset{%
+      chapter = {
+        beforeskip = 16bp,
+        afterskip  = 20bp,
+        %number     = \thechapter,
+      },
+      section = {
+        beforeskip = 18bp,
+        afterskip  = 14bp,
+      },
+      subsection = {
+        beforeskip = 12bp,
+        afterskip  = 12bp,
+      },
+      subsubsection = {
+        beforeskip = 12bp,
+        afterskip  = 12bp,
+      },
+    }%
+    \ifnxu at main@language at chinese
+      \ctexset{%
+        chapter = {
+          format      = \centering\sffamily\sanhao,
+          nameformat  = {},
+          titleformat = {},
+          name        = {第,章},
+          aftername   = \quad,
+          number      = \zhnumber{\thechapter}
+        },
+        section = {
+          format     = \sffamily\fontsize{14bp}{14bp}\selectfont,
+          aftername  = \quad,
+        },
+        subsection = {
+          format     = \sffamily\fontsize{12bp}{12bp}\selectfont,
+          aftername  = \quad,
+        },
+        subsubsection = {
+          format     = \sffamily\fontsize{12bp}{20bp}\selectfont,
+          aftername  = \quad,
+        },
+      }%
+    \else
+      \ctexset{%
+        chapter = {
+          format      = \centering\sffamily\bfseries\fontsize{16bp}{20bp}\selectfont,
+          nameformat  = \MakeUppercase,
+          titleformat = \MakeUppercase,
+          name        = \chaptername\space,
+          aftername   = \space,
+        },
+        section = {
+          format     = \sffamily\bfseries\fontsize{14bp}{20bp}\selectfont,
+          aftername  = \space,
+        },
+        subsection = {
+          format     = \sffamily\bfseries\fontsize{13bp}{20bp}\selectfont,
+          aftername  = \space,
+        },
+        subsubsection = {
+          format     = \sffamily\bfseries\fontsize{12bp}{20bp}\selectfont,
+          aftername  = \space,
+        },
+      }%
+    \fi
+}
+\nxu at set@section at format
+\nxu at option@hook{degree}{\nxu at set@section at format}
+\nxu at option@hook{main-language}{\nxu at set@section at format}
+\newcommand\nxu at english@number[1]{%
+  \expandafter\ifcase\csname c@#1\endcsname
+    Zero\or
+    One\or
+    Two\or
+    Three\or
+    Four\or
+    Five\or
+    Six\or
+    Seven\or
+    Eight\or
+    Nine\or
+    Ten\or
+    Eleven\or
+    Twelve\or
+    Thirteen\or
+    Fourteen\or
+    Fifteen\or
+    Sixteen\or
+    Seventeen\or
+    Eighteen\or
+    Nineteen\or
+    Twenty\or
+    \nxu at error{You are genius}%
+  \fi
+}
+\newcommand\nxu at pdfbookmark[2]{}
+\newcommand\nxu at phantomsection{}
+\NewDocumentCommand\nxu at chapter{s o m o}{%
+  \IfBooleanF{#1}{%
+    \nxu at error{You have to use the star form: \string\nxu at chapter*}%
+  }%
+  \if at openright\cleardoublepage\else\clearpage\fi%
+  \IfValueTF{#2}{%
+    \ifthenelse{\equal{#2}{}}{%
+      \nxu at pdfbookmark{0}{#3}%
+    }{%
+      \nxu at phantomsection
+      \addcontentsline{toc}{chapter}{#2}%
+    }%
+  }{%
+    \nxu at phantomsection
+    \addcontentsline{toc}{chapter}{#3}%
+  }%
+  \chapter*{#3}%
+  \IfValueTF{#4}{%
+    \ifthenelse{\equal{#4}{}}{%
+      \@mkboth{}{}%
+    }{%
+      \@mkboth{#4}{#4}%
+    }%
+  }{%
+    \@mkboth{#3}{#3}%
+  }%
+}
+\setcounter{secnumdepth}{3}
+\setcounter{tocdepth}{2}
+\renewcommand\tableofcontents{%
+  \ifnxu at degree@graduate
+    \nxu at chapter*[]{\erhao \contentsname}%
+  \else
+    \nxu at chapter*[]{\contentsname}%
+  \fi
+  \@starttoc{toc}%
+}
+\nxu at define@key{
+  toc-chapter-style = {
+    name = toc at chapter@style,
+    choices = {
+      arial,
+      times,
+    },
+    default = arial,
+  },
+}
+\newcommand\nxu at leaders{\titlerule*[5bp]{$\cdot$}}
+\newcommand\nxu at set@toc at format{%
+  \contentsmargin{\z@}%
+    \ifnxu at main@language at chinese
+      \titlecontents{chapter}
+        [\z@]{\mdseries \songti \sihao}
+        {\contentspush{\thecontentslabel\quad}}{}
+        {\nxu at leaders{\xiaosi \thecontentspage}}[\vspace{0.2cm}]%
+      \titlecontents{section}
+        [2em]{\songti \xiaosi}
+        {\contentspush{\thecontentslabel\quad}}{}
+        {\nxu at leaders\thecontentspage}[\vspace{0.2cm}]%
+      \titlecontents{subsection}
+        [4em]{\songti \xiaosi}
+        {\contentspush{\thecontentslabel\quad}}{}
+        {\nxu at leaders\thecontentspage}[\vspace{0.2cm}]%
+    \else
+      \titlecontents{chapter}
+        [\z@]{\heiti}
+        {\contentspush{\MakeUppercase{\thecontentslabel}\space}\MakeUppercase}{\MakeUppercase}
+        {\rmfamily\nxu at leaders\thecontentspage}%
+      \titlecontents{section}
+        [1em]{}
+        {\contentspush{\thecontentslabel\space}}{}
+        {\nxu at leaders\thecontentspage}%
+      \titlecontents{subsection}
+        [2em]{}
+        {\contentspush{\thecontentslabel\space}}{}
+        {\nxu at leaders\thecontentspage}%
+    \fi
+}
+\nxu at set@toc at format
+\nxu at option@hook{degree}{\nxu at set@toc at format}
+\nxu at option@hook{main-language}{\nxu at set@toc at format}
+\nxu at define@key{
+  secret-level = {
+    name = secret at level,
+  },
+  secret-year = {
+    name = secret at year,
+  },
+  title = {
+    default = {标题},
+  },
+  title* = {
+    default = {Title},
+    name    = title at en,
+  },
+  author = {
+    default = {姓名},
+  },
+  student-id = {
+    name = student at id,
+  },
+  supervisor = {
+    default = {导师姓名},
+  },
+  associate-supervisor = {
+    name = associate at supervisor,
+  },
+  co-supervisor = {
+    name = co at supervisor,
+  },
+  % Reserved for compatibility
+  joint-supervisor = {
+    name = co at supervisor,
+  },
+  field = {
+  	name = field,
+  },
+  code = {
+    name = code,
+  },
+  degree-category = {
+    default = {工学博士},
+    name    = degree at category,
+  },
+  % 为了向后兼容
+  degree-name = {
+    name    = degree at category,
+  },
+}
+\nxu at option@hook{degree-name}{%
+  \nxu at warning{`degree-name' is deprecated. Use `degree-category' instead.}
+}
+\nxu at option@hook{degree-name*}{%
+  \nxu at warning{`degree-name*' is deprecated. Use `degree-category*' instead.}
+}
+\nxu at define@key{
+  department = {
+    default = {土木与水利工程学院},
+  },
+  discipline = {
+    % default = {土木与水利工程学院},
+  },
+}
+\nxu at option@hook{discipline}{%
+  \ifnxu at degree@type at professional
+    \nxu at warning{`discipline' for professional degree is deprecated. Use `professional-field' instead.}
+    \let\nxu at professional@field\nxu at discipline
+    \let\nxu at discipline\@empty
+  \fi
+}
+\nxu at option@hook{discipline*}{%
+  \ifnxu at degree@type at professional
+    \nxu at warning{`discipline*' for professional degree is deprecated. Use `professional-field*' instead.}
+    \let\nxu at professional@field at en\nxu at discipline@en
+    \let\nxu at discipline@en\@empty
+  \fi
+}
+\nxu at define@key{
+  professional-field = {
+    name    = professional at field,
+  },
+  engineering-field = {
+    name    = engineering at field,
+  },
+  date = {
+    default = {\the\year-\two at digits{\month}-\two at digits{\day}},
+  },
+  clc,
+  udc,
+  id,
+  discipline-level-1 = {
+    default = {一级学科名称},
+    name    = discipline at level@i,
+  },
+  discipline-level-2 = {
+    default = {二级学科名称},
+    name    = discipline at level@ii,
+  },
+  start-date = {
+    name    = start at date,
+    default = {\the\year-\two at digits{\month}-\two at digits{\day}},
+  },
+  end-date = {
+    name    = end at date,
+    default = {\the\year-\two at digits{\month}-\two at digits{\day}},
+  },
+  include-spine = {
+    name = include at spine,
+    choices = {
+      false,
+      true,
+    },
+    default = false,
+  },
+}
+\newcommand\nxu at format@date[2]{%
+  \edef\nxu@@date{#2}%
+  \def\nxu@@process at date##1-##2-##3\@nil{%
+    #1{##1}{##2}{##3}%
+  }%
+  \expandafter\nxu@@process at date\nxu@@date\@nil
+}
+\newcommand\nxu at date@zh at digit[3]{#1 年 \number#2 月 \number#3 日}
+\newcommand\nxu at date@zh at digit@short[3]{#1 年 \number#2 月}
+\newcommand\nxu at date@zh at short[3]{\zhdigits{#1}年\zhnumber{#2}月}
+\newcommand\nxu at date@month[1]{%
+  \ifcase\number#1\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
+}
+\newcommand\nxu at date@en at short[3]{\nxu at date@month{#2}, #1}
+\newcommand\nxu at underline[2][6em]{\hskip1pt\underline{\hb at xt@ #1{\hss#2\hss}}\hskip3pt}
+\newcommand\nxu at uline[2][6em]{\uline{\hb at xt@ #1{\hss#2\hss}}}
+\newcommand\nxu at fixed@box[2]{%
+  \begingroup
+    \ifLuaTeX
+      \ltjsetparameter{kanjiskip = {0pt plus 2filll minus 1filll}}%
+    \else
+      \renewcommand\CJKglue{\hspace{0pt plus 2filll minus 1filll}}%
+    \fi
+    \makebox[#1][l]{#2}%
+  \endgroup
+}
+\newbox\nxu at stretch@box
+\newcommand\nxu at stretch[2]{%
+  \sbox\nxu at stretch@box{#2}%
+  \ifdim \wd\nxu at stretch@box < #1\relax
+    \begingroup
+      \ifLuaTeX
+        \ltjsetparameter{kanjiskip = {0pt plus 2filll}}%
+      \else
+        \renewcommand\CJKglue{\hspace{0pt plus 2filll}}%
+      \fi
+      \makebox[#1][l]{#2}%
+    \endgroup
+  \else
+    \box\nxu at stretch@box
+  \fi
+}
+\newbox\nxu at pad@box
+\newcommand\nxu at pad[2]{%
+  \sbox\nxu at pad@box{#2}%
+  \ifdim \wd\nxu at pad@box < #1\relax
+    \makebox[#1]{\box\nxu at pad@box}%
+  \else
+    \box\nxu at pad@box
+  \fi
+}
+\newcounter{nxu at csl@count}
+\newcommand\nxu at name@title at process[1]{%
+  \ifcase\c at nxu@csl at count  % == 0
+    \gdef\nxu@@name{#1}%
+  \or  % == 1
+    \gdef\nxu@@title{#1}%
+  \fi
+  \stepcounter{nxu at csl@count}%
+}
+\newcommand\nxu at name@title at format[2]{%
+  %\nxu at pad{3em}{\nxu at stretch{3em}{#1}}%
+  \makebox[4.5em][l]{\box\nxu at pad@box{#1}}
+  %#2
+  \nxu at stretch{1em}{#2}%
+}
+\newcommand\nxu at name@title[1]{%
+  \setcounter{nxu at csl@count}{0}%
+  \gdef\nxu@@name{}%
+  \gdef\nxu@@title{}%
+  \expandafter\comma at parse\expandafter{#1}{\nxu at name@title at process}%
+  \nxu at name@title at format{\nxu@@name}{\nxu@@title}%
+}
+\renewcommand\maketitle{%
+  \cleardoublepage
+  \pagenumbering{Alph}%
+  \nxu at pdfbookmark{-1}{\nxu at title}%
+  \nxu at titlepage
+  \ifnxu at include@spine at true
+    \spine
+  \fi
+  \clearpage
+}
+\newcommand\nxu at titlepage{%
+  \nxusetup{language = chinese}%
+  \nxu at titlepage@thesis
+  \nxu at reset@main at language
+}
+\newcommand\nxu at titlepage@thesis{%
+  \thispagestyle{empty}%
+  % \null\vskip 8.1pt%
+  \begingroup
+    \centering
+    \begingroup
+      \fontsize{10.5bp}{10.5bp}\selectfont
+      \nxu at titlepage@topinfo\par
+    \endgroup
+    \vskip 1.7cm%
+    \nxu at titlepage@name
+    \vskip 0.68cm
+    \nxu at title@page at degree@category\par
+    \vskip 0.6cm
+    \begingroup
+      \sffamily\fontsize{22bp}{30bp}\selectfont
+      \nxu at title\par
+    \endgroup
+    \vskip 8pt
+    \begingroup
+      \fontsize{16bp}{24bp}\selectfont
+      \nxu at title@en\par
+    \endgroup
+    \vskip 24.1pt%
+    \vfill
+    \begingroup
+      \fontsize{14bp}{21bp}\songti
+      \nxu at titlepage@info\par
+    \endgroup
+    \vskip 62pt%
+    \fi
+  \endgroup
+  \clearpage
+  \restoregeometry
+}
+\newcommand\nxu at set@student at id{%
+  \ifnxu at thesis@type at proposal
+    \ifx\nxu at student@id\@empty
+      \nxusetup{student-id=2000310000}%
+    \fi
+  \fi
+}
+\nxu at set@student at id
+\nxu at option@hook{thesis-type}{\nxu at set@student at id}
+\newcommand\nxu at titlepage@name{
+  \begin{center}
+  	\includegraphics[width=10.3cm]{nxu-name.pdf}
+  \end{center}
+}
+\newcommand\nxu at titlepage@topinfo{
+	\nxu at titlepage@topinfo at tabular{3em}{4em}{1em}{
+	  \nxu at topinfo@iteml{分类号}{\nxu at clc}
+	  \nxu at topinfo@iteml{密级}{\nxu at secret@level}
+	}{
+	  \nxu at topinfo@itemr{单位代码}{\nxu at code}
+	  \nxu at topinfo@itemr{学号}{\nxu at student@id}
+	}\par
+}
+\newcommand\nxu at titlepage@topinfo at tabular[5]{%
+	\def\nxu at topinfo@iteml##1##2{%
+	  \nxu at pad{#1}{\nxu at fixed@box{#1}{##1}}%
+	  \nxu at pad{#3}{:}%
+	  \makebox[6em][l]{ ##2 }\\[3bp]
+	}%
+	\def\nxu at topinfo@itemr##1##2{%
+	  \nxu at pad{#2}{\nxu at fixed@box{#2}{##1}}%
+	  \nxu at pad{#3}{:}%
+	  \makebox[6em][l]{ ##2 }\\[3bp]
+	}%
+	\begin{tabular}{l}%
+		#4%
+	\end{tabular}%
+	\hfill
+	\begin{tabular}{l}%
+		#5%
+	\end{tabular}%
+}
+\newcommand\nxu at title@page at degree@category{%
+  \begingroup
+    \fontsize{18bp}{22bp}\selectfont
+    \ifLuaTeX
+      \fontspec{\CJK at family}%
+      \ltjsetparameter{kanjiskip = {1bp}}%
+    \else
+      \CJKfamily+{}%
+      \renewcommand\CJKglue{\hspace{1bp}}%
+    \fi
+    \ifnxu at thesis@type at thesis
+      \ifnxu at degree@type at academic
+      	\ifnxu at degree@master
+      		硕士学位论文
+      	\else
+      		\ifnxu at degree@doctor
+      			博士学位论文
+      		\fi
+      	\fi
+      \else
+      	\ifnxu at degree@type at professional
+      		专业学位论文
+      \fi
+    \fi
+    \par
+  \endgroup
+}
+\newcommand\nxu at titlepage@info{%
+  \nxu at titlepage@info at tabular{0.0cm}{4.54cm}{4.44cm}{0.60cm}{%
+  	\nxu at info@item{学位申请人}{}{\nxu at author}%
+  	\nxu at info@item{指导教师}{\nxu at name@title}{\nxu at supervisor}%
+  	\nxu at info@item{合作指导教师}{\nxu at name@title}{\nxu at co@supervisor}%
+  	\ifnxu at degree@type at academic
+  		\nxu at info@item{申请学位门类级别}{}{\nxu at degree@category}%
+  		\nxu at info@item{专业名称}{}{\nxu at discipline}%
+  	\else
+  		\nxu at info@item{申请学位类别}{}{\nxu at degree@category}%
+  		\nxu at info@item{专业领域名称}{}{\nxu at discipline}%
+  	\fi
+  	\nxu at info@item{研究方向}{}{\nxu at field}%
+    \nxu at info@item{所在学院}{}{\nxu at department}%
+    \nxu at info@item{论文完成日期}{}{\sihao\nxu at format@date{\nxu at date@zh at digit}{\nxu at date}}%
+  }\par
+}
+\newcommand\nxu at titlepage@info at tabular[5]{%
+  \def\nxu at info@item##1##2##3{%
+    \ifx##3\@empty\else
+      \nxu at pad{#2}{\nxu at fixed@box{#3}{##1}}%
+      \nxu at pad{#4}{:}%
+      \uline{ \nxu at pad{14em}{\hfill ##2{##3} }}\\[7bp]
+    \fi
+  }%
+  \hspace{#1}%
+  \begin{tabular}{l}%
+    \renewcommand\arraystretch{1}%
+    #5%
+  \end{tabular}%
+}
+\newcommand\copyrightpage[1][]{%
+  \cleardoublepage
+    \def\nxu@@tmp{#1}
+    \ifx\nxu@@tmp\@empty
+      \nxusetup{language=chinese}%
+      \thispagestyle{empty}%
+      \nxu at copyright@page at graduate
+      \nxu at reset@main at language
+    \else
+      \thispagestyle{empty}%
+      \nxu at pdfbookmark{0}{关于学位论文使用授权的说明}%
+      \nxu at phantomsection
+      \kv at define@key{nxu at copyright}{file}{\includepdf{\kv at value}}%
+      \kv at set@family at handler{nxu at copyright}{%
+        \ifx\kv at value\relax
+          \includepdf{\kv at key}%
+        \else
+          \kv at handled@false
+        \fi
+      }%
+      \kvsetkeys{nxu at copyright}{#1}%
+    \fi
+}
+\newcommand{\nxu at authorization@frontdate}{%
+  日\hspace{2em} 期:}
+\newcommand\nxu at copyright@page at graduate{%
+  \null\vskip 30bp%
+  \begingroup
+	\begin{center}
+		\sffamily\fontsize{22bp}{30bp}\selectfont
+		\nxu at stretch{5.4cm}{独创性声明}
+	\end{center}
+  \endgroup
+  \vskip 12bp%
+  \begingroup
+	  \fontsize{12bp}{20bp}\selectfont
+	  本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得宁夏大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。\par
+  \endgroup
+  \vskip 30bp
+  \begingroup
+  	\fontsize{12bp}{20bp}\selectfont
+  	研究生签名:\hspace{12em}时间:\hspace{4em}年\hspace{2em}月\hspace{2em}日\par
+  \endgroup
+  \vskip 4.00cm 
+  \begingroup
+    \begin{center}
+    	\sffamily\fontsize{22bp}{30bp}\selectfont
+    	关于论文使用授权的说明
+    \end{center}
+  \endgroup
+  \vskip 12bp%
+  \begingroup
+    \fontsize{12bp}{20bp}\selectfont
+    本人完全了解宁夏大学有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件和磁盘,允许论文被查阅和借阅,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。同意宁夏大学可以用不同方式在不同媒体上发表、传播学位论文的全部或部分内容。\par
+    \textbf{(保密的学位论文在解密后应遵守此协议)}\par
+  \endgroup
+  \vskip 30bp
+  \begingroup
+  \fontsize{12bp}{20bp}\selectfont
+  研究生签名:\hspace{12em}时间:\hspace{4em}年\hspace{2em}月\hspace{2em}日\par
+  \vskip 28bp
+  导师签名:\hspace{13em}时间:\hspace{4em}年\hspace{2em}月\hspace{2em}日\par
+  \endgroup
+}
+\nxu at define@key{
+  keywords,
+  keywords* = {
+    name = keywords at en,
+  },
+}
+\newcommand\nxu at clist@use[2]{%
+  \def\nxu@@tmp{}%
+  \def\nxu at clist@processor##1{%
+    \ifx\nxu@@tmp\@empty
+      \def\nxu@@tmp{#2}%
+    \else
+      #2%
+    \fi
+    ##1%
+  }%
+  \expandafter\comma at parse\expandafter{#1}{\nxu at clist@processor}%
+}
+\newenvironment{abstract}{%
+  \thispagestyle{empty}
+  \nxusetup{language = chinese}%
+  \ifnxu at degree@graduate
+    \begingroup
+      \ifnxu at main@language at english
+        \ctexset{%
+          chapter/format = \centering\sffamily\fontsize{16bp}{20bp}\selectfont,
+        }%
+      \fi
+      \nxu at chapter*{\nxu at abstract@name}%
+    \endgroup
+  \else
+    \nxu at chapter*[]{\nxu at abstract@name}%
+  \fi
+}{%
+  \par
+  %\null\par
+  \noindent
+  \textbf{关键词:}%
+  \nxu at clist@use{\nxu at keywords}{,}%
+  \gdef\nxu at keywords{}%
+  \nxu at reset@main at language % switch back to main language
+}
+\newenvironment{abstract*}{%
+  \nxusetup{language = english}%
+  \ifnxu at degree@graduate
+    \nxu at chapter*[]{\bfseries \nxu at abstract@name at en}%
+    \addcontentsline{toc}{chapter}{\nxu at abstract@name at en}%
+  \else
+    \nxu at chapter*[]{\nxu at abstract@name at en}%
+  \fi
+}{%
+  \par
+  %\null\par
+  \noindent
+  \textbf{Keywords:}\space
+  \nxu at clist@use{\nxu at keywords@en}{, }%
+  \ifnxu at degree@graduate
+    \vspace*{\stretch{1}}%
+  \fi
+  \nxu at reset@main at language % switch back to main language
+}
+\newenvironment{denotation}[1][2.5cm]{%
+  \nxu at chapter*{\nxu at denotation@name}%
+  \vskip-30bp\xiaosi[1.6]\begin{nxu at denotation}[labelwidth=#1]
+}{%
+  \end{nxu at denotation}
+}
+\newlist{nxu at denotation}{description}{1}
+\setlist[nxu at denotation]{%
+  nosep,
+  font=\normalfont,
+  align=left,
+  leftmargin=!, % sum of the following 3 lengths
+  labelindent=0pt,
+  labelwidth=2.5cm,
+  labelsep*=0.5cm,
+  itemindent=0pt,
+}
+\newcommand{\nxu at signature}{签\hspace{1em}名:}
+\newcommand{\nxu at backdate}{日\hspace{1em}期:}
+\newenvironment{acknowledgements}{%
+  \@mainmatterfalse
+  \nxu at end@appendix at ref@section
+  \nxu at chapter*{\nxu at acknowledgements@name}%
+}{%
+}
+\let\acknowledgement\acknowledgements
+\let\endacknowledgement\endacknowledgements
+\def\nxu at listof#1{% #1: float type
+  \setcounter{tocdepth}{2} % restore tocdepth in case being modified
+  \@ifstar
+    {\nxu at chapter*[]{\csname list#1name\endcsname}\@starttoc{\csname ext@#1\endcsname}}
+    {\nxu at chapter*{\csname list#1name\endcsname}\@starttoc{\csname ext@#1\endcsname}}%
+}
+\renewcommand\listoffigures{%
+  \nxu at listof{figure}%
+}
+\titlecontents{figure}
+  [\z@]{}
+  {\contentspush{\figurename~\thecontentslabel\quad}}{}
+  {\nobreak\nxu at leaders\nobreak\hfil\thecontentspage}
+\renewcommand\listoftables{%
+  \nxu at listof{table}%
+}
+\titlecontents{table}
+  [\z@]{}
+  {\contentspush{\tablename~\thecontentslabel\quad}}{}
+  {\nxu at leaders\thecontentspage}
+\newcommand\listoffiguresandtables{%
+  \nxu at chapter*{\nxu at list@figure at table@name}%
+  \@starttoc{lof}%
+  \par
+  \null\par
+  \@starttoc{lot}%
+}
+\def\ext at equation{loe}
+\def\equcaption#1{%
+  \addcontentsline{\ext at equation}{equation}%
+                  {\protect\numberline{#1}}}
+\newcommand\listofequations{\nxu at listof{equation}}
+\titlecontents{equation}
+  [0pt]{\addvspace{6bp}}
+  {\nxu at equation@name~\thecontentslabel}{}
+  {\nobreak\nxu at leaders\nobreak\thecontentspage}
+\contentsuse{equation}{loe}
+\nxu at define@key{
+  cite-style = {
+    name = cite at style,
+    choices = {
+      super,
+      inline,
+      author-year,
+    }
+  }
+}
+\def\bibliographystyle#1{%
+  \gdef\bu at bibstyle{#1}%
+  \ifx\@begindocumenthook\@undefined\else
+    \expandafter\AtBeginDocument
+  \fi
+    {\if at filesw
+       \immediate\write\@auxout{\string\bibstyle{#1}}%
+       \immediate\write\@auxout{\string\gdef\string\bu at bibstyle{#1}}%
+     \fi}%
+}
+\def\bibliography#1{%
+  \if at filesw
+    \immediate\write\@auxout{\string\bibdata{\zap at space#1 \@empty}}%
+    \immediate\write\@auxout{\string\gdef\string\bu at bibdata{#1}}%
+  \fi
+  \gdef\bu at bibdata{#1}%
+  \@input@{\jobname.bbl}}
+\PassOptionsToPackage{compress}{natbib}
+\AtEndOfPackageFile*{natbib}{
+  \DeclareRobustCommand\inlinecite{\@inlinecite}
+  \def\@inlinecite#1{\begingroup\let\@cite\NAT at citenum\citep{#1}\endgroup}
+  \let\onlinecite\inlinecite
+  \newcommand\bibstyle at super{%
+    \bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}}
+  \newcommand\bibstyle at inline{%
+    \bibpunct{[}{]}{,}{n}{,}{,}}
+  \@namedef{bibstyle at author-year}{%
+    \bibpunct{(}{)}{;}{a}{,}{,}}
+  \nxu at option@hook{cite-style}{\@nameuse{bibstyle@\nxu at cite@style}}
+  \@namedef{bibstyle at nxuthesis-numeric}{\citestyle{super}}
+  \@namedef{bibstyle at nxuthesis-author-year}{\citestyle{author-year}}
+  \@namedef{bibstyle at cell}{\citestyle{author-year}}
+  %\@namedef{bibstyle at nxuthesis-bachelor}{\citestyle{super}}
+  \renewcommand\NAT at citesuper[3]{%
+    \ifNAT at swa
+      \if*#2*\else
+        #2\NAT at spacechar
+      \fi
+      % \unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close}%
+      %  \if*#3*\else\NAT at spacechar#3\fi\else #1\fi\endgroup}
+      \unskip\kern\p@
+      \textsuperscript{%
+        \NAT@@open#1\NAT@@close
+        \if*#3*\else#3\fi
+      }%
+      \kern\p@
+    \else
+      #1%
+    \fi
+    \endgroup
+  }
+  \renewcommand\NAT at citenum[3]{%
+    \ifNAT at swa
+      \NAT@@open
+      \if*#2*\else
+        #2\NAT at spacechar
+      \fi
+      % #1\if*#3*\else\NAT at cmt#3\fi\NAT@@close
+      #1\NAT@@close
+      \if*#3*\else
+        \textsuperscript{#3}%
+      \fi
+    \else
+      #1%
+    \fi
+    \endgroup
+  }
+  \def\NAT at citexnum[#1][#2]#3{%
+    \NAT at reset@parser
+    \NAT at sort@cites{#3}%
+    \NAT at reset@citea
+    \@cite{\def\NAT at num{-1}\let\NAT at last@yr\relax\let\NAT at nm\@empty
+      \@for\@citeb:=\NAT at cite@list\do
+      {\@safe at activestrue
+      \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+      \@safe at activesfalse
+      \@ifundefined{b@\@citeb\@extra at b@citeb}{%
+        {\reset at font\bfseries?}
+          \NAT at citeundefined\PackageWarning{natbib}%
+        {Citation `\@citeb' on page \thepage \space undefined}}%
+      {\let\NAT at last@num\NAT at num\let\NAT at last@nm\NAT at nm
+        \NAT at parse{\@citeb}%
+        \ifNAT at longnames\@ifundefined{bv@\@citeb\@extra at b@citeb}{%
+          \let\NAT at name=\NAT at all@names
+          \global\@namedef{bv@\@citeb\@extra at b@citeb}{}}{}%
+        \fi
+        \ifNAT at full\let\NAT at nm\NAT at all@names\else
+          \let\NAT at nm\NAT at name\fi
+        \ifNAT at swa
+        \@ifnum{\NAT at ctype>\@ne}{%
+          \@citea
+          \NAT at hyper@{\@ifnum{\NAT at ctype=\tw@}{\NAT at test{\NAT at ctype}}{\NAT at alias}}%
+        }{%
+          \@ifnum{\NAT at cmprs>\z@}{%
+          \NAT at ifcat@num\NAT at num
+            {\let\NAT at nm=\NAT at num}%
+            {\def\NAT at nm{-2}}%
+          \NAT at ifcat@num\NAT at last@num
+            {\@tempcnta=\NAT at last@num\relax}%
+            {\@tempcnta\m at ne}%
+          \@ifnum{\NAT at nm=\@tempcnta}{%
+            \@ifnum{\NAT at merge>\@ne}{}{\NAT at last@yr at mbox}%
+          }{%
+            \advance\@tempcnta by\@ne
+            \@ifnum{\NAT at nm=\@tempcnta}{%
+              % \ifx\NAT at last@yr\relax
+              %   \def at NAT@last at yr{\@citea}%
+              % \else
+              %   \def at NAT@last at yr{--\NAT at penalty}%
+              % \fi
+              \def at NAT@last at yr{-\NAT at penalty}%
+            }{%
+              \NAT at last@yr at mbox
+            }%
+          }%
+          }{%
+          \@tempswatrue
+          \@ifnum{\NAT at merge>\@ne}{\@ifnum{\NAT at last@num=\NAT at num\relax}{\@tempswafalse}{}}{}%
+          \if at tempswa\NAT at citea@mbox\fi
+          }%
+        }%
+        \NAT at def@citea
+        \else
+          \ifcase\NAT at ctype
+            \ifx\NAT at last@nm\NAT at nm \NAT at yrsep\NAT at penalty\NAT at space\else
+              \@citea \NAT at test{\@ne}\NAT at spacechar\NAT at mbox{\NAT at super@kern\NAT@@open}%
+            \fi
+            \if*#1*\else#1\NAT at spacechar\fi
+            \NAT at mbox{\NAT at hyper@{{\citenumfont{\NAT at num}}}}%
+            \NAT at def@citea at box
+          \or
+            \NAT at hyper@citea at space{\NAT at test{\NAT at ctype}}%
+          \or
+            \NAT at hyper@citea at space{\NAT at test{\NAT at ctype}}%
+          \or
+            \NAT at hyper@citea at space\NAT at alias
+          \fi
+        \fi
+      }%
+      }%
+        \@ifnum{\NAT at cmprs>\z@}{\NAT at last@yr}{}%
+        \ifNAT at swa\else
+          % \@ifnum{\NAT at ctype=\z@}{%
+          %   \if*#2*\else\NAT at cmt#2\fi
+          % }{}%
+          \NAT at mbox{\NAT@@close}%
+          \@ifnum{\NAT at ctype=\z@}{%
+            \if*#2*\else
+              \textsuperscript{#2}%
+            \fi
+          }{}%
+          \NAT at super@kern
+        \fi
+    }{#1}{#2}%
+  }%
+  \renewcommand\NAT at cite%
+      [3]{\ifNAT at swa\NAT@@open\if*#2*\else#2\NAT at spacechar\fi
+          % #1\if*#3*\else\NAT at cmt#3\fi\NAT@@close\else#1\fi\endgroup}
+          #1\NAT@@close\if*#3*\else\textsuperscript{#3}\fi\else#1\fi\endgroup}
+  \def\NAT at citex%
+    [#1][#2]#3{%
+    \NAT at reset@parser
+    \NAT at sort@cites{#3}%
+    \NAT at reset@citea
+    \@cite{\let\NAT at nm\@empty\let\NAT at year\@empty
+      \@for\@citeb:=\NAT at cite@list\do
+      {\@safe at activestrue
+      \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+      \@safe at activesfalse
+      \@ifundefined{b@\@citeb\@extra at b@citeb}{\@citea%
+        {\reset at font\bfseries ?}\NAT at citeundefined
+                  \PackageWarning{natbib}%
+        {Citation `\@citeb' on page \thepage \space undefined}\def\NAT at date{}}%
+      {\let\NAT at last@nm=\NAT at nm\let\NAT at last@yr=\NAT at year
+        \NAT at parse{\@citeb}%
+        \ifNAT at longnames\@ifundefined{bv@\@citeb\@extra at b@citeb}{%
+          \let\NAT at name=\NAT at all@names
+          \global\@namedef{bv@\@citeb\@extra at b@citeb}{}}{}%
+        \fi
+      \ifNAT at full\let\NAT at nm\NAT at all@names\else
+        \let\NAT at nm\NAT at name\fi
+      \ifNAT at swa\ifcase\NAT at ctype
+        \if\relax\NAT at date\relax
+          \@citea\NAT at hyper@{\NAT at nmfmt{\NAT at nm}\NAT at date}%
+        \else
+          \ifx\NAT at last@nm\NAT at nm\NAT at yrsep
+              \ifx\NAT at last@yr\NAT at year
+                \def\NAT at temp{{?}}%
+                \ifx\NAT at temp\NAT at exlab\PackageWarningNoLine{natbib}%
+                {Multiple citation on page \thepage: same authors and
+                year\MessageBreak without distinguishing extra
+                letter,\MessageBreak appears as question mark}\fi
+                \NAT at hyper@{\NAT at exlab}%
+              \else\unskip\NAT at spacechar
+                \NAT at hyper@{\NAT at date}%
+              \fi
+          \else
+            \@citea\NAT at hyper@{%
+              \NAT at nmfmt{\NAT at nm}%
+              \hyper at natlinkbreak{%
+                \NAT at aysep\NAT at spacechar}{\@citeb\@extra at b@citeb
+              }%
+              \NAT at date
+            }%
+          \fi
+        \fi
+      \or\@citea\NAT at hyper@{\NAT at nmfmt{\NAT at nm}}%
+      \or\@citea\NAT at hyper@{\NAT at date}%
+      \or\@citea\NAT at hyper@{\NAT at alias}%
+      \fi \NAT at def@citea
+      \else
+        \ifcase\NAT at ctype
+          \if\relax\NAT at date\relax
+            \@citea\NAT at hyper@{\NAT at nmfmt{\NAT at nm}}%
+          \else
+          \ifx\NAT at last@nm\NAT at nm\NAT at yrsep
+              \ifx\NAT at last@yr\NAT at year
+                \def\NAT at temp{{?}}%
+                \ifx\NAT at temp\NAT at exlab\PackageWarningNoLine{natbib}%
+                {Multiple citation on page \thepage: same authors and
+                year\MessageBreak without distinguishing extra
+                letter,\MessageBreak appears as question mark}\fi
+                \NAT at hyper@{\NAT at exlab}%
+              \else
+                \unskip\NAT at spacechar
+                \NAT at hyper@{\NAT at date}%
+              \fi
+          \else
+            \@citea\NAT at hyper@{%
+              \NAT at nmfmt{\NAT at nm}%
+              \hyper at natlinkbreak{\NAT at spacechar\NAT@@open\if*#1*\else#1\NAT at spacechar\fi}%
+                {\@citeb\@extra at b@citeb}%
+              \NAT at date
+            }%
+          \fi
+          \fi
+        \or\@citea\NAT at hyper@{\NAT at nmfmt{\NAT at nm}}%
+        \or\@citea\NAT at hyper@{\NAT at date}%
+        \or\@citea\NAT at hyper@{\NAT at alias}%
+        \fi
+        \if\relax\NAT at date\relax
+          \NAT at def@citea
+        \else
+          \NAT at def@citea at close
+        \fi
+      \fi
+      }}\ifNAT at swa\else
+        % \if*#2*\else\NAT at cmt#2\fi
+        \if\relax\NAT at date\relax\else\NAT@@close\fi
+        \if*#2*\else\textsuperscript{#2}\fi
+      \fi}{#1}{#2}}
+  \renewcommand\bibsection{\nxu at chapter*{\bibname}}
+  \newcommand\nxu at set@bibliography at format{%
+      \renewcommand\bibfont{\fontsize{10.5bp}{16bp}\selectfont}%
+      \setlength{\bibsep}{3bp \@plus 3bp \@minus 3bp}%
+      \setlength{\bibhang}{21bp}%
+  }
+  \nxu at set@bibliography at format
+  \nxu at option@hook{degree}{\nxu at set@bibliography at format}
+  \nxu at option@hook{main-language}{\nxu at set@bibliography at format}
+  \patchcmd\thebibliography{%
+    \clubpenalty4000%
+  }{%
+    \interlinepenalty=5000\relax
+    \clubpenalty=10000\relax
+  }{}{\nxu at patch@error{\thebibliography}}
+  \patchcmd\thebibliography{%
+    \widowpenalty4000%
+  }{%
+    \widowpenalty=10000\relax
+  }{}{\nxu at patch@error{\thebibliography}}
+  \def\@biblabel#1{[#1]\hfill}
+  \renewcommand\NAT at bibsetnum[1]{%
+    % \settowidth\labelwidth{\@biblabel{#1}}%
+    % \setlength{\leftmargin}{\labelwidth}%
+    % \addtolength{\leftmargin}{\labelsep}%
+    \setlength{\leftmargin}{1cm}%
+    \setlength{\itemindent}{\z@}%
+    \setlength{\labelsep}{0.1cm}%
+    \setlength{\labelwidth}{0.9cm}%
+    \setlength{\itemsep}{\bibsep}
+    \setlength{\parsep}{\z@}%
+    \ifNAT at openbib
+      \addtolength{\leftmargin}{\bibindent}%
+      \setlength{\itemindent}{-\bibindent}%
+      \setlength{\listparindent}{\itemindent}%
+      \setlength{\parsep}{0pt}%
+    \fi
+  }
+}
+\AtEndOfPackageFile*{biblatex}{
+  \AtBeginDocument{
+    \ifthenelse{\equal{\blx at bbxfile}{apa}}{\def\bibname{REFERENCES}}{}
+    \ifthenelse{\equal{\blx at bbxfile}{apa6}}{\def\bibname{REFERENCES}}{}
+    \ifthenelse{\equal{\blx at bbxfile}{mla}}{\def\bibname{WORKS CITED}}{}
+    \ifthenelse{\equal{\blx at bbxfile}{mla-new}}{\def\bibname{WORKS CITED}}{}
+  }
+  \DeclareRobustCommand\inlinecite{\parencite}
+  \defbibheading{bibliography}[\bibname]{\nxu at chapter*{\bibname}}
+  \newcommand\nxu at set@bibliography at format{%
+      \renewcommand\bibfont{\fontsize{10.5bp}{16bp}\selectfont}%
+      \setlength{\bibitemsep}{3bp \@plus 3bp \@minus 3bp}%
+      \setlength{\biblabelsep}{0.1cm}%
+      \setlength{\bibhang}{21bp}%
+  }
+  \nxu at set@bibliography at format
+  \nxu at option@hook{degree}{\nxu at set@bibliography at format}
+  \nxu at option@hook{main-language}{\nxu at set@bibliography at format}
+}
+\AtEndOfPackageFile*{apacite}{
+  \AtBeginDocument{
+    \nxu at set@chapter at names
+  }
+  \renewcommand\bibliographytypesize{\fontsize{10.5bp}{17bp}\selectfont}
+  \setlength{\bibitemsep}{6bp}
+  \ifnxu at main@language at chinese
+    \setlength{\bibleftmargin}{21bp}
+    \setlength{\bibindent}{-\bibleftmargin}
+  \else
+    \setlength{\bibleftmargin}{0.5in}
+    \setlength{\bibindent}{-\bibleftmargin}
+  \fi
+  \def\st at rtbibchapter{%
+    \if at numberedbib%
+      \chapter{\bibname}%   e.g.,   6. References
+    \else%
+      \nxu at chapter*{\bibname}%   e.g.,   References
+    \fi%
+  }%
+}
+\g at addto@macro\appendix{%
+  \@mainmattertrue
+}
+\nxu at define@key{
+  toc-depth = {
+    name = toc at depth,
+  },
+}
+\nxu at option@hook{toc-depth}{%
+  \ifx\@begindocumenthook\@undefined
+    \protected at write\@auxout{}{%
+      \string\ttl at writefile{toc}{%
+        \protect\setcounter{tocdepth}{\nxu at toc@depth}%
+      }%
+    }%
+  \else
+    \setcounter{tocdepth}{\nxu at toc@depth}%
+  \fi
+}
+\g at addto@macro\appendix{%
+  \nxusetup{
+    toc-depth = 0,
+  }%
+}
+\nxu at define@key{
+  appendix-figure-in-lof = {
+    name = appendix at figure@in at lof,
+    choices = {
+      true,
+      false,
+    },
+    default = false,
+  },
+}
+\nxu at option@hook{appendix-figure-in-lof}{%
+  \ifnxu at appendix@figure at in@lof at true
+    \addtocontents{lof}{\string\let\string\contentsline\string\ttl at contentsline}%
+    \addtocontents{lot}{\string\let\string\contentsline\string\ttl at contentsline}%
+    \addtocontents{loe}{\string\let\string\contentsline\string\ttl at contentsline}%
+  \else
+    \addtocontents{lof}{\string\let\string\contentsline\string\ttl at gobblecontents}%
+    \addtocontents{lot}{\string\let\string\contentsline\string\ttl at gobblecontents}%
+    \addtocontents{loe}{\string\let\string\contentsline\string\ttl at gobblecontents}%
+  \fi
+}
+\g at addto@macro\appendix{%
+  \nxusetup{
+    appendix-figure-in-lof = false,
+  }%
+}
+\newcommand\nxu at end@appendix at ref@section{}
+\AtBeginOfPackageFile*{bibunits}{
+  \def\bibliography#1{%
+    \if at filesw
+      \immediate\write\@auxout{\string\bibdata{\zap at space#1 \@empty}}%
+      \immediate\write\@auxout{\string\gdef\string\bu at bibdata{#1}}%
+    \fi
+    \@input@{\jobname.bbl}%
+    \gdef\bu at bibdata{#1}%
+  }
+  \def\bibliographystyle#1{%
+    \ifx\@begindocumenthook\@undefined\else
+      \expandafter\AtBeginDocument
+    \fi
+      {\if at filesw
+        \immediate\write\@auxout{\string\bibstyle{#1}}%
+        \immediate\write\@auxout{\string\gdef\string\bu at bibstyle{#1}}%
+      \fi}%
+      \gdef\bu at bibstyle{#1}%
+  }
+}
+\AtEndOfPackageFile*{bibunits}{
+  \def\@startbibunit{%
+    \global\let\@startbibunitorrelax\relax
+    \global\let\@finishbibunit\@finishstartedbibunit
+    \global\advance\@bibunitauxcnt 1
+    \if at filesw
+      {\endlinechar-1
+      \makeatletter
+      \@input{\@bibunitname.aux}}%
+      \immediate\openout\@bibunitaux\@bibunitname.aux
+      \immediate\write\@bibunitaux{\string\bibstyle{\@localbibstyle}}%
+    \fi
+  }
+  \def\bu at bibliography#1{%
+    \putbib[#1]%
+  }
+  \def\bu at bibliographystyle#1{%
+    \if at filesw
+      \immediate\write\@bibunitaux{\string\gdef\string\@localbibstyle{#1}}%
+    \fi
+    \gdef\@localbibstyle{#1}%
+  }
+  \providecommand\printbibliography{\putbib\relax}%
+  \g at addto@macro\appendix{%
+    \renewcommand\@bibunitname{\jobname-appendix-\@alph\c at chapter}%
+    \bibliographyunit[\chapter]%
+    \renewcommand\bibsection{%
+      \ctexset{section/numbering = false}%
+      \section{\bibname}%
+      \ctexset{section/numbering = true}%
+    }%
+    \ifnxu at degree@graduate
+      \renewcommand\citenumfont{\@Alph\c at chapter.}%
+      \renewcommand\@extra at binfo{@-\@alph\c at chapter}%
+      \renewcommand\@extra at b@citeb{@-\@alph\c at chapter}%
+      \renewcommand\bibnumfmt[1]{[\@Alph\c at chapter.#1]\hfill}%
+    \fi
+  }
+  \renewcommand\nxu at end@appendix at ref@section{%
+    \bibliographyunit\relax
+  }
+  \AtEndDocument{\nxu at end@appendix at ref@section}
+  \renewcommand\nxu at set@survey at bibheading{%
+    \renewcommand\bibsection{%
+      \par
+      \vskip 20bp%
+      \nxu at pdfbookmark{1}{\bibname}%
+      \begingroup
+        \centering
+        \xiaosi[1.667]\bibname\par
+      \endgroup
+      \vskip 6bp%
+    }%
+  }%
+  % \let\@xtestdef\@gobbletwo  % This doesn't work
+  \def\bibunits at rerun@warning{\relax}
+}
+\PassOptionsToPackage{defernumbers = true}{biblatex}
+\AtEndOfPackageFile*{biblatex}{
+  \DeclareRefcontext{appendix}{}
+  \g at addto@macro\appendix{%
+    \pretocmd\chapter{%
+      \newrefsection
+      \@tempcnta=\c at chapter
+      \advance\@tempcnta\@ne
+      \newrefcontext[labelprefix = {\@Alph\@tempcnta.}]{appendix}%
+    }{}{\nxu at patch@error{\chapter}}%
+    \defbibheading{bibliography}[\bibname]{%
+      \ctexset{section/numbering = false}%
+      \section{#1}%
+      \ctexset{section/numbering = true}%
+    }%
+  }
+  \renewcommand\nxu at set@survey at bibheading{%
+    \defbibheading{bibliography}[\bibname]{%
+      \par
+      \vskip 20bp%
+      \nxu at pdfbookmark{1}{\bibname}%
+      \begingroup
+        \centering
+        \xiaosi[1.667]##1\par
+      \endgroup
+      \vskip 6bp%
+    }%
+  }%
+  \def\bibliographystyle#1{%
+    \nxu at warning{'bibliographystyle' invalid for 'biblatex'.}%
+  }
+}
+\@ifpackagelater{titletoc}{2019/07/14}{
+  \newcommand\nxu at print@contents[5]{%
+    \printcontents[#1]{#2}{#3}[#4]{}%
+  }
+}{
+  \newcommand\nxu at print@contents[5]{%
+    \printcontents[#1]{#2}{#3}{\setcounter{tocdepth}{#4}#5}%
+  }
+}
+\newenvironment{survey}{%
+  \chapter{外文资料的调研阅读报告}%
+  \nxusetup{language = english}%
+  \let\title\nxu at appendix@title
+  \let\maketitle\nxu at appendix@maketitle
+  \nxu at set@partial at toc@format
+  \renewcommand\tableofcontents{%
+    \section*{Contents}%
+    \nxu at pdfbookmark{1}{Contents}%
+    \nxu at print@contents{survey}{l}{1}{2}{}%
+    \vskip 20bp%
+  }%
+  \let\appendix\nxu at appendix@appendix
+  \nxu at set@survey at bibheading
+  \renewcommand\bibname{参考文献}%
+  \startcontents[survey]%
+}{%
+  \stopcontents[survey]%
+  \nxu at reset@main at language % restore language
+}
+\newcommand\nxu at set@appendix at bib@heading{}
+\newenvironment{translation}{%
+  \chapter{外文资料的书面翻译}%
+  \nxusetup{language = chinese}%
+  \let\title\nxu at appendix@title
+  \let\maketitle\nxu at appendix@maketitle
+  \renewenvironment{abstract}{%
+    \ctexset{
+      section = {
+        format    += \centering,
+        numbering  = false,
+      },
+    }%
+    \section{摘要}%
+  }{%
+    \par
+    \ifx\nxu at keywords\@empty\else
+      \textbf{关键词:}\nxu at clist@use{\nxu at keywords}{;}\par
+    \fi
+  }%
+  \nxu at set@partial at toc@format
+  \renewcommand\tableofcontents{%
+    \section*{目录}%
+    \nxu at pdfbookmark{1}{目录}%
+    \nxu at print@contents{translation}{l}{1}{2}{}%
+    \vskip 20bp%
+  }%
+  \let\appendix\nxu at appendix@appendix
+  \def\bibsection{%
+    \begingroup
+      \ctexset{section/numbering=false}%
+      \section{\bibname}%
+    \endgroup
+  }%
+  \startcontents[translation]%
+}{%
+  \stopcontents[translation]%
+  \nxu at reset@main at language % restore language
+}
+\newenvironment{translation-index}{}{}
+\AtEndOfPackageFile*{bibunits}{
+  \renewenvironment{translation-index}{%
+    \begin{bibunit}%
+      \renewcommand\@bibunitname{\jobname-index}%
+      \renewcommand\bibname{书面翻译对应的原文索引}%
+      \nxu at set@survey at bibheading
+  }{%
+    \end{bibunit}%
+  }
+}
+\AtEndOfPackageFile*{biblatex}{
+  \renewenvironment{translation-index}{%
+    \endrefsection
+    \begin{refsection}%
+      \renewcommand\bibname{书面翻译对应的原文索引}%
+      \nxu at set@survey at bibheading
+  }{%
+    \end{refsection}%
+  }
+}
+\DeclareRobustCommand\nxu at appendix@title[1]{\gdef\nxu at appendix@@title{#1}}
+\newcommand\nxu at appendix@maketitle{%
+  \par
+  \begin{center}%
+    \xiaosi[1.667]\nxu at appendix@@title
+  \end{center}%
+  \par
+}
+\newcommand\nxu at set@partial at toc@format{%
+  \titlecontents{section}
+    [\z@]{}
+    {\contentspush{\thecontentslabel\quad}}{}
+    {\nxu at leaders\thecontentspage}%
+  \titlecontents{subsection}
+    [1em]{}
+    {\contentspush{\thecontentslabel\quad}}{}
+    {\nxu at leaders\thecontentspage}%
+  \titlecontents{subsubsection}
+    [2em]{}
+    {\contentspush{\thecontentslabel\quad}}{}
+    {\nxu at leaders\thecontentspage}%
+}
+\newcommand\nxu at appendix@appendix{%
+  \def\theHsection{\Hy at AlphNoErr{section}}%
+  \setcounter{section}{0}%
+  \setcounter{subsection}{0}%
+  \renewcommand\thesection{\thechapter.\@Alph\c at section}%
+}%
+\newcommand\nxu at set@survey at bibheading{}
+\newenvironment{resume}{%
+  \@mainmatterfalse
+  \nxu at end@appendix at ref@section
+  \nxu at chapter*{\nxu at resume@name}%
+  \ctexset{
+    section = {
+      format    += \centering,
+      numbering = false,
+    },
+  }%
+  \ifnxu at language@chinese
+    \ctexset{
+      subsection = {
+        format     = \sffamily\fontsize{12bp}{20bp}\selectfont,
+        numbering  = false,
+        aftertitle = :,
+      },
+    }%
+    \setlist[achievements]{
+      topsep     = 6bp,
+      itemsep    = 6bp,
+      leftmargin = 1cm,
+      labelwidth = 1cm,
+      labelsep   = 0pt,
+      first      = {\fontsize{10.5bp}{14bp}\selectfont},
+      align      = left,
+      label      = [\arabic*],
+      resume     = achievements,
+    }%
+  \else
+    \ctexset{
+      subsection = {
+        beforeskip = 0pt,
+        afterskip  = 0pt,
+        format     = \bfseries\normalsize,
+        indent     = \parindent,
+        numbering  = false,
+      },
+    }%
+    \setlist[achievements]{
+      topsep     = 0bp,
+      itemsep    = 0bp,
+      leftmargin = 1.75cm,
+      labelsep   = 0.5cm,
+      align      = right,
+      label      = [\arabic*],
+      resume     = achievements,
+    }%
+  \fi
+}{}
+\newcommand\resumeitem[1]{%
+  \nxu at error{The "\protect\resumeitem" is obsolete. Please update to the new format}%
+}
+\newcommand\researchitem[1]{%
+  \nxu at error{The "\protect\researchitem" is obsolete. Please update to the new format}%
+}
+\newlist{achievements}{enumerate}{1}
+\setlist[achievements]{
+  topsep     = 6bp,
+  partopsep  = 0bp,
+  itemsep    = 6bp,
+  parsep     = 0bp,
+  leftmargin = 10mm,
+  itemindent = 0pt,
+  align      = left,
+  label      = [\arabic*],
+  resume     = achievements,
+}
+\newenvironment{publications}{%
+  \nxu at deprecate{"publications" environment}{"achievements"}%
+  \begin{achievements}%
+}{%
+  \end{achievements}%
+}
+\newcommand\publicationskip{%
+  \nxu at error{The "\protect\publicationskip" is obsolete. Do not use it}%
+}
+\NewEnviron{comments}[1][]{%
+  \nxu at end@appendix at ref@section
+  \ifnxu at degree@graduate
+    \@mainmatterfalse
+    \kv at define@key{nxu at comments}{name}{\let\nxu at comments@name\kv at value}%
+    \kv at set@family at handler{nxu at comments}{%
+      \ifx\kv at value\relax
+        \let\nxu at comments@name\kv at key
+      \else
+        \kv at handled@false
+      \fi
+    }%
+    \kvsetkeys{nxu at comments}{#1}%
+    \chapter{\nxu at comments@name}%
+    \BODY\clearpage
+  \fi
+}
+\NewEnviron{resolution}{%
+  \nxu at end@appendix at ref@section
+  \ifnxu at degree@graduate
+    \@mainmatterfalse
+    \chapter{\nxu at resolution@name}%
+    \BODY\clearpage
+  \fi
+}
+\newcommand{\record}[1]{%
+  \let\nxu at record@file\@empty
+  \kv at define@key{nxu at record}{file}{\let\nxu at record@file\kv at value}%
+  \kv at set@family at handler{nxu at record}{%
+    \ifx\kv at value\relax
+      \let\nxu at record@file\kv at key
+    \else
+      \kv at handled@false
+    \fi
+  }%
+  \kvsetkeys{nxu at record}{#1}%
+  \ifx\nxu at record@file\@empty
+    \nxu at error{File path of \protect\record\space is required}
+  \fi
+  \cleardoublepage
+  \nxu at pdfbookmark{0}{综合论文训练记录表}%
+  \includepdf[pages=-]{\nxu at record@file}%
+}
+\PassOptionsToPackage{
+  linktoc            = all,
+  bookmarksdepth     = 2,
+  bookmarksnumbered  = true,
+  bookmarksopen      = true,
+  bookmarksopenlevel = 1,
+  bookmarksdepth     = 3,
+  unicode            = true,
+  psdextra           = true,
+  breaklinks         = true,
+  plainpages         = false,
+  pdfdisplaydoctitle = true,
+  hidelinks,
+}{hyperref}
+\AtEndOfPackageFile*{hyperref}{
+  \newcounter{nxu at bookmark}
+  \renewcommand\nxu at pdfbookmark[2]{%
+    \phantomsection
+    \stepcounter{nxu at bookmark}%
+    \pdfbookmark[#1]{#2}{nxuchapter.\thenxu at bookmark}%
+  }
+  \renewcommand\nxu at phantomsection{%
+    \phantomsection
+  }
+  \pdfstringdefDisableCommands{%
+    \let\\\relax
+    \let\quad\relax
+    \let\qquad\relax
+    \let\hspace\@gobble
+  }%
+  \@ifpackagelater{hyperref}{2019/04/27}{}{%
+    \g at addto@macro\psdmapshortnames{\let\mu\textmu}
+  }%
+  \ifnxu at main@language at chinese
+    \hypersetup{
+      pdflang = zh-CN,
+    }%
+  \else
+    \hypersetup{
+      pdflang = en-US,
+    }%
+  \fi
+  \AtBeginDocument{%
+    \ifnxu at main@language at chinese
+      \hypersetup{
+        pdftitle    = \nxu at title,
+        pdfauthor   = \nxu at author,
+        pdfsubject  = \nxu at degree@category,
+        pdfkeywords = \nxu at keywords,
+      }%
+    \else
+      \hypersetup{
+        pdftitle    = \nxu at title@en,
+        pdfauthor   = \nxu at author@en,
+        pdfsubject  = \nxu at degree@category at en,
+        pdfkeywords = \nxu at keywords@en,
+      }%
+    \fi
+    \hypersetup{
+      pdfcreator={\nxuthesis-v\version}}
+  }%
+}
+\AtEndOfPackageFile*{mathtools}{
+  \@ifpackageloaded{unicode-math}{
+    \let\underbrace\LaTeXunderbrace
+    \let\overbrace\LaTeXoverbrace
+  }{}
+}
+\AtEndOfPackageFile*{nomencl}{
+  \let\nomname\nxu at denotation@name
+  \def\thenomenclature{\begin{denotation}[\nom at tempdim]}
+  \def\endthenomenclature{\end{denotation}}
+}
+\AtEndOfPackageFile*{siunitx}{%
+  \newcommand\nxu at set@siunitx at language{%
+    \ifnxu at language@chinese
+      \sisetup{
+        list-final-separator = { 和 },
+        list-pair-separator  = { 和 },
+        range-phrase         = {~},
+      }%
+    \else
+      \ifnxu at language@english
+        \sisetup{
+          list-final-separator = {, and },
+          list-pair-separator  = { and },
+          range-phrase         = { to },
+        }%
+      \fi
+    \fi
+  }
+  \nxu at set@siunitx at language
+  \nxu at option@hook{language}{\nxu at set@siunitx at language}
+}
+\AtEndOfPackageFile*{amsthm}{%
+  \newtheoremstyle{nxu}
+    {\z@}{\z@}
+    {\normalfont}{\z@}
+    {\normalfont\sffamily}{\nxu at theorem@separator}
+    {0.5em}{}
+  \theoremstyle{nxu}
+  \newtheorem{assumption}{\nxu at assumption@name}[chapter]%
+  \newtheorem{definition}{\nxu at definition@name}[chapter]%
+  \newtheorem{proposition}{\nxu at proposition@name}[chapter]%
+  \newtheorem{lemma}{\nxu at lemma@name}[chapter]%
+  \newtheorem{theorem}{\nxu at theorem@name}[chapter]%
+  \newtheorem{axiom}{\nxu at axiom@name}[chapter]%
+  \newtheorem{corollary}{\nxu at corollary@name}[chapter]%
+  \newtheorem{exercise}{\nxu at exercise@name}[chapter]%
+  \newtheorem{example}{\nxu at example@name}[chapter]%
+  \newtheorem{remark}{\nxu at remark@name}[chapter]%
+  \newtheorem{problem}{\nxu at problem@name}[chapter]%
+  \newtheorem{conjecture}{\nxu at conjecture@name}[chapter]%
+  \renewenvironment{proof}[1][\nxu at proof@name]{\par
+    \pushQED{\qed}%
+    % \normalfont \topsep6\p@\@plus6\p@\relax
+    \normalfont \topsep\z@\relax
+    \trivlist
+    \item[\hskip\labelsep
+      %     \itshape
+      % #1\@addpunct{.}]\ignorespaces
+      \sffamily
+      #1]\ignorespaces
+  }{%
+    \popQED\endtrivlist\@endpefalse
+  }
+  \renewcommand\qedsymbol{\nxu at qed}
+}
+\AtEndOfPackageFile*{ntheorem}{%
+  \theorembodyfont{\normalfont}%
+  \theoremheaderfont{\normalfont\sffamily}%
+  \theoremsymbol{\nxu at qed}%
+  \newtheorem*{proof}{\nxu at proof@name}%
+  \theoremstyle{plain}%
+  \theoremsymbol{}%
+  \theoremseparator{\nxu at theorem@separator}%
+  \newtheorem{assumption}{\nxu at assumption@name}[chapter]%
+  \newtheorem{definition}{\nxu at definition@name}[chapter]%
+  \newtheorem{proposition}{\nxu at proposition@name}[chapter]%
+  \newtheorem{lemma}{\nxu at lemma@name}[chapter]%
+  \newtheorem{theorem}{\nxu at theorem@name}[chapter]%
+  \newtheorem{axiom}{\nxu at axiom@name}[chapter]%
+  \newtheorem{corollary}{\nxu at corollary@name}[chapter]%
+  \newtheorem{exercise}{\nxu at exercise@name}[chapter]%
+  \newtheorem{example}{\nxu at example@name}[chapter]%
+  \newtheorem{remark}{\nxu at remark@name}[chapter]%
+  \newtheorem{problem}{\nxu at problem@name}[chapter]%
+  \newtheorem{conjecture}{\nxu at conjecture@name}[chapter]%
+}
+\PassOptionsToPackage{chapter}{algorithm}
+\AtEndOfPackageFile*{algorithm}{
+  \floatname{algorithm}{\nxu at algorithm@name}
+  \renewcommand\listofalgorithms{%
+    \nxu at listof{algorithm}%
+  }
+  \renewcommand\listalgorithmname{\nxu at list@algorithm at name}
+  \def\ext at algorithm{loa}
+  \contentsuse{algorithm}{loa}
+  \titlecontents{algorithm}
+    [\z@]{}
+    {\contentspush{\fname at algorithm~\thecontentslabel\quad}}{}
+    {\nxu at leaders\thecontentspage}
+}
+\PassOptionsToPackage{algochapter}{algorithm2e}
+\AtEndOfPackageFile*{algorithm2e}{
+  \renewcommand\algorithmcfname{\nxu at algorithm@name}
+  \SetAlgoCaptionLayout{nxu at caption@font}
+  \SetAlCapSty{relax}
+  \SetAlgoCaptionSeparator{\hspace*{1em}}
+  \SetAlFnt{\fontsize{11bp}{14.3bp}\selectfont}
+  \renewcommand\listofalgorithms{%
+    \nxu at listof{algorithmcf}%
+  }
+  \renewcommand\listalgorithmcfname{\nxu at list@algorithm at name}
+  \def\ext at algorithmcf{loa}
+  \contentsuse{algocf}{loa}
+  \titlecontents{algocf}
+    [\z@]{}
+    {\contentspush{\algorithmcfname~\thecontentslabel\quad}}{}
+    {\nxu at leaders\thecontentspage}
+}
+\AtEndOfPackageFile*{minted}{
+  \newcommand\nxu at set@listing at language{%
+    \ifnxu at language@chinese
+      \floatname{listing}{代码}%
+    \else
+      \floatname{listing}{Listing}%
+    \fi
+  }
+  \nxu at set@listing at language
+  \nxu at option@hook{language}{\nxu at set@listing at language}
+}
+\nxu at define@key{
+  spine-font = {
+    name = spine at font,
+  },
+  spine-student-id = {
+    name = spine at student@id,
+  },
+  spine-title = {
+    name = spine at title,
+  },
+  spine-author = {
+    name = spine at author,
+  },
+}
+\renewcommand\nxu at spine@font{%
+  \ifnxu at degree@doctor
+    \fontsize{16bp}{20.8bp}\selectfont
+  \else
+    \fontsize{15bp}{19.5bp}\selectfont
+  \fi
+}
+\newcommand*\CJKmovesymbol[1]{\raise.3em\hbox{#1}}
+\newcommand*\CJKmove{%
+  \punctstyle{plain}%
+  \let\CJKsymbol\CJKmovesymbol
+  \let\CJKpunctsymbol\CJKsymbol
+}
+\NewDocumentCommand{\spine}{
+	O{
+	  \ifx\nxu at spine@student at id\@empty
+		\nxu at student@id
+	  \else
+		\nxu at spine@student at id
+	  \fi
+	}
+    O{
+      \ifx\nxu at spine@title\@empty
+        \nxu at title
+      \else
+        \nxu at spine@title
+      \fi
+    }
+    O{
+      \ifx\nxu at spine@author\@empty
+        \nxu at author
+      \else
+        \nxu at spine@author
+      \fi
+    }}{%
+  \clearpage
+  \newgeometry{
+    vmargin = 5.0cm,
+    hmargin = 1cm,
+  }%
+  \thispagestyle{empty}%
+  \ifnxu at main@language at chinese
+    \nxu at pdfbookmark{0}{书脊}%
+  \else
+    \nxu at pdfbookmark{0}{Spine}%
+  \fi
+  \begingroup
+    \noindent\hfill
+    \rotatebox[origin=lt]{-90}{%
+      \makebox[\textheight]{%
+        \fangsong
+        \addCJKfontfeatures*{RawFeature={vertical}}%
+        \nxu at spine@font
+        \CJKmove
+        #1\hfill
+        #2\hfill
+        #3
+      }%
+    }%
+  \endgroup
+  \clearpage
+  \restoregeometry
+}
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+\DeclareRobustCommand\file{\nolinkurl}
+\DeclareRobustCommand\env{\textsf}
+\DeclareRobustCommand\pkg{\textsf}
+\DeclareRobustCommand\cls{\textsf}
+\sloppy
+\endinput
+%%
+%% End of file `nxuthesis.cls'.


Property changes on: trunk/Master/texmf-dist/tex/latex/nxuthesis/nxuthesis.cls
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2024-05-24 20:58:02 UTC (rev 71343)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2024-05-24 20:59:31 UTC (rev 71344)
@@ -620,7 +620,7 @@
     numberedblock numberpt
     numerica numerica-plus numerica-tables numericplots
     numname numnameru numprint numspell nunito
-    nwafuthesis nwejm
+    nwafuthesis nwejm nxuthesis
   oberdiek objectz obnov
     ocg-p ocgx ocgx2 ocherokee ocr-b ocr-b-outline ocr-latex octave octavo
     odesandpdes odsfile ofs

Modified: trunk/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc	2024-05-24 20:58:02 UTC (rev 71343)
+++ trunk/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc	2024-05-24 20:59:31 UTC (rev 71344)
@@ -169,6 +169,7 @@
 depend nihbiosketch
 depend nostarch
 depend nrc
+depend nxuthesis
 depend onrannual
 depend opteng
 depend osda

Added: trunk/Master/tlpkg/tlpsrc/nxuthesis.tlpsrc
===================================================================


More information about the tex-live-commits mailing list.