summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-06-06 21:12:36 +0000
committerKarl Berry <karl@freefriends.org>2020-06-06 21:12:36 +0000
commit37f53e8a8423b2fc2d4d553ceeae604c7ce66b27 (patch)
tree9c180f6707e2378a784fe113be7ee73b1d7a49ae /Master/texmf-dist/source/latex
parent064deb07bb23380362fff63e0d3f1162d2ea2765 (diff)
ctex (6jun20)
git-svn-id: svn://tug.org/texlive/trunk@55440 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r--Master/texmf-dist/source/latex/ctex/ctex.dtx242
1 files changed, 161 insertions, 81 deletions
diff --git a/Master/texmf-dist/source/latex/ctex/ctex.dtx b/Master/texmf-dist/source/latex/ctex/ctex.dtx
index bc86f369f79..c0a472bab2b 100644
--- a/Master/texmf-dist/source/latex/ctex/ctex.dtx
+++ b/Master/texmf-dist/source/latex/ctex/ctex.dtx
@@ -443,7 +443,7 @@ Copyright and Licence
%<class|style|ctexcap|ctexhook|ctexpatch>\NeedsTeXFormat{LaTeX2e}
%<class>\input{ctexbackend.cfg}
%<class|style|ctexcap|ctexhook|ctexpatch>\RequirePackage{expl3}
-%<+!driver>\GetIdInfo$Id: ctex.dtx 4819efe 2020-05-16 21:20:43 +0800 Qing Lee <sobenlee@gmail.com> $
+%<+!driver>\GetIdInfo$Id: ctex.dtx 76d4e94 2020-06-06 23:22:18 +0800 Qing Lee <sobenlee@gmail.com> $
%<ctex> {Chinese adapter in LaTeX (CTEX)}
%<ctex>\ProvidesExplPackage{\ExplFileName}
%<ctexsize> {Chinese font size definition (CTEX)}
@@ -530,7 +530,7 @@ Copyright and Licence
%<founder>\ProvidesExplFile{ctex-fontset-founder.def}
%<ubuntu> {Ubuntu fonts definition (CTEX)}
%<ubuntu>\ProvidesExplFile{ctex-fontset-ubuntu.def}
-%<!driver> {\ExplFileDate}{2.5.2}{\ExplFileDescription}
+%<!driver> {\ExplFileDate}{2.5.3}{\ExplFileDescription}
%</!(fd|ctexspa|dict|backend)>
%<c19&rm>\ProvidesFile{c19rm.fd}%
%<c19&sf>\ProvidesFile{c19sf.fd}%
@@ -548,10 +548,10 @@ Copyright and Licence
%<backend>\ProvidesFile{ctexbackend.cfg}%
%<dict&theorem&GBK>\ProvidesDictionary{translator-theorem-dictionary}{ChineseGBK}%
%<dict&theorem&UTF8>\ProvidesDictionary{translator-theorem-dictionary}{ChineseUTF8}%
-%<fd> [2020/05/16 v2.5.2 Chinese font definition (CTEX)]
-%<ctexspa> [2020/05/16 v2.5.2 Space info for CJKpunct (CTEX)]
-%<backend> [2020/05/16 v2.5.2 Backend configuration file (CTEX)]
-%<dict&theorem> [2020/05/16 v2.5.2 Chinese translation for theorem name (CTEX)]
+%<fd> [2020/06/06 v2.5.3 Chinese font definition (CTEX)]
+%<ctexspa> [2020/06/06 v2.5.3 Space info for CJKpunct (CTEX)]
+%<backend> [2020/06/06 v2.5.3 Backend configuration file (CTEX)]
+%<dict&theorem> [2020/06/06 v2.5.3 Chinese translation for theorem name (CTEX)]
%</!(driver|readme|install|zhmap|spa|docstrip)>
%<*driver>
\documentclass{ctxdoc}
@@ -575,7 +575,7 @@ Copyright and Licence
% \changes{v2.4.15}{2019/03/23}{同步 \LaTeXiii{} 2019/03/05。}
% \changes{v2.5.1}{2020/05/02}{\pkg{zhconv} 更名为 \pkg{ctex-zhconv}。}
%
-% \CheckSum{6116}
+% \CheckSum{6222}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -3214,16 +3214,6 @@ Copyright and Licence
% \item \pkg{xkeyval} 宏包。
% \end{itemize}
% \item \pkg{fontspec} 宏包。
-% \item \pkg{xunicode-addon} 宏包,属于 \pkg{xeCJK} 宏集,它还依赖
-% \begin{itemize}
-% \item \pkg{xunicode} 宏包,它还依赖
-% \begin{itemize}
-% \item \pkg{graphics} 宏集。
-% \item \pkg{graphics-cfg} 宏包。
-% \item \pkg{graphics-def} 宏包。
-% \item \pkg{tipa} 宏包。
-% \end{itemize}
-% \end{itemize}
% \item[\ding{229}] 以上是使用 \LuaLaTeX{} 编译时的依赖项。
% \item \pkg{pxeverysel} 宏包,属于 \pkg{platex-tools} 宏集。
% \item \pkg{zhmetrics-uptex} 宏包。
@@ -3430,25 +3420,36 @@ Copyright and Licence
% \end{macrocode}
% \end{macro}
%
+% \changes{v2.5.3}{2020/06/06}{正确关闭和恢复 \LaTeXiii 语法环境。}
+%
% \begin{macro}[int]{\ctex_file_wrapper:nnn}
% 设置文件操作的 \tn{catcode} 环境,参数 |#1| 是设置,|#2| 是文件操作,|#3| 是恢复。
% 默认关闭 \LaTeXiii{} 语法环境,并设置 |@| 的 \tn{catcode} 为 $11$。
+% 这里最自然的使用 \pkg{l3cctab} 来实现,但目前 \pkg{l3cctab} 还属于
+% \pkg{l3experimental},我们暂时不依赖它。
% \begin{macrocode}
%</!ctexsize>
-\cs_new_protected:Npn \ctex_file_wrapper:nnn #1#2#3
+\cs_new_protected:Npn \ctex_file_wrapper:nnn
{
- \use:x
+ \exp_args:NNx \ExplSyntaxOff
+ \@@_file_wrapper_aux:nnnn
{
- \ExplSyntaxOff
- \char_set_catcode_letter:n { 64 }
- #1
- \exp_not:n {#2}
\bool_if:NTF \l__kernel_expl_bool
{ \ExplSyntaxOn }
{ \ExplSyntaxOff }
+ }
+ }
+\cs_new_protected:Npn \@@_file_wrapper_aux:nnnn #1#2#3#4
+ {
+ \use:x
+ {
+ \char_set_catcode_letter:n { 64 }
+ #2
+ \exp_not:n {#3}
\char_set_catcode:nn { 64 } { \char_value_catcode:n { 64 } }
- #3
+ #4
}
+ #1
}
% \end{macrocode}
% \end{macro}
@@ -4623,10 +4624,10 @@ Copyright and Licence
"A960-"A97F, "AC00-"D7FF}
\ltjdefcharrange{8}{"A7, "A8, "B0, "B1, "B4, "B6, "D7, "F7}
% \end{macrocode}
-% 将引号、破折号等中西文公用的标点符号归入字符范围 9,将他们设置为 JAchar。
+% 将间隔号、引号、破折号等中西文公用的标点符号归入字符范围 9,将他们设置为 JAchar。
% \begin{macrocode}
\ltjdefcharrange{9}{%
- "2018, "2019, "201C, "201D, "2013, "2014, "2025, "2026, "2027, "2E3A}
+ "00B7, "2018, "2019, "201C, "201D, "2013, "2014, "2025, "2026, "2027, "2E3A}
% \end{macrocode}
% \changes{v2.4.11}{2017/08/17}{不把希腊和西里尔字母设置为 JAchar。}
% \pkg{LuaTeX-ja} 默认把字符范围 2 和 3 设置为 JAchar,我们这里把它们都改成 ALchar。
@@ -4659,15 +4660,13 @@ Copyright and Licence
%<@@=ctex_ltj>
% \end{macrocode}
%
-% \changes{v2.3}{2015/09/26}{更新 \pkg{unicode-math} 宏包补丁。}
+% \changes{v2.5.3}{2020/05/31}{不再依赖 \pkg{xunicode},单独补丁 \file{tuenc.def}。}
%
-% 在 \LaTeX{} 下,\pkg{LuaTeX-ja} 对 \pkg{fontspec}、\pkg{xunicode}、\pkg{unicode-math}
-% 和 \pkg{listings} 打了补丁。其中前三个是把 \tn{char} 换成 \tn{ltjalchar},确保
-% 字符是 ALchar 类。我们这里用 \pkg{xunicode-addon} 来处理 \pkg{xunicode}。
+% \begin{macro}{\CTEX@alchar, \CTEX@beginallalchar, \CTEX@endallalchar}
+% 分组中的字符都是 ALchar 类。
% \begin{macrocode}
-\RequirePackage { xunicode-addon }
-\AtBeginUTFCommand { \CTEX@beginallalchar }
-\AtEndUTFCommand { \CTEX@endallalchar }
+\cs_new_protected:Npn \CTEX@alchar #1
+ { \CTEX@beginallalchar #1 \CTEX@endallalchar }
\cs_new_protected:Npn \CTEX@beginallalchar
{
\group_begin:
@@ -4677,6 +4676,110 @@ Copyright and Licence
\cs_new_protected:Npn \CTEX@endallalchar
{ \group_end: }
% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\CTEX@chardef@text@cmd}
+% 补丁 \tn{chardef@text@cmd},应用于 \tn{DeclareTextSymbol},使其定义的符号都是 ALchar。
+% \begin{macrocode}
+\cs_new_protected:Npn \CTEX@chardef@text@cmd #1
+ {
+ \cs_set_eq:NN \@ifdefinable \@@@@ifdefinable
+ \tl_set:Nn \l_@@_cmd_tl {#1}
+ \tex_afterassignment:D \@@_chardef_text_cmd:
+ \tex_chardef:D #1
+ }
+\tl_new:N \l_@@_cmd_tl
+\cs_new_protected:Npn \@@_chardef_text_cmd:
+ { \exp_after:wN \@@_chardef_text_cmd_aux:N \l_@@_cmd_tl }
+\cs_new_protected:Npn \@@_chardef_text_cmd_aux:N #1
+ {
+ \int_compare:nNnF {#1} < { "80 }
+ { \cs_set_protected:Npx #1 { \CTEX@alchar { \tex_Uchar:D #1 } } }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\CTEX@text@composite@x}
+% \tn{@text@composite@x} 的重定义,应用于 \tn{DeclareUnicodeComposite} 等。
+% \begin{macrocode}
+\cs_new_protected:Npn \CTEX@text@composite@x #1#2
+ {
+ \CTEX@beginallalchar
+ \cs_if_exist_use:NF #1 {#2}
+ \CTEX@endallalchar
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\CTEX@add@unicode@accent}
+% \tn{add@unicode@accent} 的重定义,应用于 \tn{DeclareUnicodeAccent}。
+% \begin{macrocode}
+\cs_new_protected:Npx \CTEX@add@unicode@accent #1#2
+ {
+ \CTEX@beginallalchar
+ \exp_not:N \tl_if_blank:nTF {#2} { \tex_Uchar:D "A0 ~ } {#2}
+ \exp_not:N \tex_Uchar:D \tex_numexpr:D #1 \scan_stop:
+ \CTEX@endallalchar
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\CTEX@patch@text@cmd}
+% 单独补丁由 \tn{DeclareTextCommand} 定义的命令。
+% \begin{macrocode}
+\cs_new_protected:Npn \CTEX@patch@text@cmd #1
+ {
+ \exp_args:NNc \@@_patch_text_cmd:NN #1
+ { \UnicodeEncodingName \token_to_str:N #1 }
+ }
+\cs_new_protected:Npn \@@_patch_text_cmd:NN #1#2
+ {
+ \cs_set_eq:NN \CTEX@textcmd #2
+ \ctex_preto_cmd:NnnTF \CTEX@textcmd
+ { \ExplSyntaxOff \makeatletter }
+ { \CTEX@beginallalchar }
+ {
+ \ctex_appto_cmd:NnnTF \CTEX@textcmd
+ { \ExplSyntaxOff \makeatletter }
+ { \CTEX@endallalchar }
+ { \cs_set_eq:NN #2 \CTEX@textcmd }
+ { \ctex_patch_failure:N #1 }
+ }
+ { \ctex_patch_failure:N #1 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\CTEX@patch@tunec}
+% 重新载入 \tn{tunec.def},使补丁生效。
+% \begin{macrocode}
+\cs_new_protected:Npn \CTEX@patch@tunec
+ {
+ \cs_set_eq:NN \chardef@text@cmd \CTEX@chardef@text@cmd
+ \ctex_file_input:n { tuenc.def }
+ \cs_set_eq:NN \@text@composite@x \CTEX@text@composite@x
+ \cs_set_eq:NN \add@unicode@accent \CTEX@add@unicode@accent
+ \CTEX@patch@text@cmd \textasteriskcentered
+ }
+\@ifpackageloaded { xunicode }
+ { }
+ { \CTEX@patch@tunec }
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.3}{2015/09/26}{更新 \pkg{unicode-math} 宏包补丁。}
+%
+% 在 \LaTeX{} 下,\pkg{LuaTeX-ja} 对 \pkg{fontspec}、\pkg{xunicode}、\pkg{unicode-math}
+% 和 \pkg{listings} 打了补丁。其中前三个是把 \tn{char} 换成 \tn{ltjalchar},确保
+% 字符是 ALchar 类。我们这里用 \pkg{xunicode-addon} 来处理 \pkg{xunicode}。
+% \begin{macrocode}
+\ctex_at_end_package:nn { xunicode }
+ {
+ \RequirePackage { xunicode-addon }
+ \AtBeginUTFCommand { \CTEX@beginallalchar }
+ \AtEndUTFCommand { \CTEX@endallalchar }
+ }
+% \end{macrocode}
%
% \changes{v2.4.2}{2016/05/15}{恢复 \pkg{luatexja} 对 \tn{emshape} 和
% \tn{eminnershape} 的重定义。}
@@ -6495,47 +6598,7 @@ Copyright and Licence
{ \ctex_hypersetup:n { pdfencoding = unicode } }
%</pdftex>
% \end{macrocode}
-% 在 \XeTeX{} 下,\pkg{hyperref} 在处理带有非 ASCII 字符和 |\%| 的书签时有问题^^A
-% \footnote{\url{https://github.com/CTeX-org/ctex-kit/issues/39}}。
-% 事实上,\pkg{hyperref} 在驱动文件 \file{hxetex.def} 中设置了
-% \tn{Hy@unicodetrue},从而书签总是会被 \tn{HyPsd@ConvertToUnicode} 转化成
-% \texttt{UTF-16BE} 编码的形式(抄录自 \tn{pdfstringdef}的定义):
-% \begin{verbatim}
-% \ifHy@unicode
-% \HyPsd@ConvertToUnicode#1%
-% \ifx\HyPsd@pdfencoding\HyPsd@pdfencoding@auto
-% \ltx@IfUndefined{StringEncodingConvertTest}{%
-% }{%
-% \EdefUnescapeString\HyPsd@temp#1%
-% \ifxetex
-% \let\HyPsd@UnescapedString\HyPsd@temp
-% \StringEncodingConvertTest\HyPsd@temp\HyPsd@temp
-% {utf16be}{ascii-print}{%
-% \EdefEscapeString\HyPsd@temp\HyPsd@temp
-% \global\let#1\HyPsd@temp
-% \HyPsd@EscapeTeX#1%
-% \Hy@unicodefalse
-% }{%
-% \HyPsd@ToBigChars#1%
-% }%
-% \end{verbatim}
-% 通过宏包选项 \opt{pdfencoding=unicode} 设置 \tn{HyPsd@pdfencoding} 为
-% \opt{unicode},可以避免随后再将书签从 \texttt{UTF-16BE} 字节流转化回正常
-% 字符(其中使用的 \tn{HyPsd@ToBigChars} 没有考虑书签中含有 |\%| 的情况)。
-% Heiko Oberdiek 在 \file{README} 中说明了将书签转化回正常字符的意图:避免
-% XDVIPDFMX 的警告^^A
-% \footnote{\url{http://project.ktug.org/dvipdfmx/mailman/dvipdfmx/2009-December/000153.html}}:
-% \begin{verbatim}
-% ** WARNING ** Failed to convert input string to UTF16...
-% \end{verbatim}
-% \XeTeX{} 的维护者 Khaled Hosny 已经注意到了这个问题^^A
-% \footnote{\url{http://tug.org/pipermail/tex-live/2013-December/034613.html}}。
-% 需要注意的是,\file{hxetex.def} 重载了宏包选项 \opt{unicode},目的是不能设置
-% 它为 \opt{false},但也导致它不会改变 \tn{HyPsd@pdfencoding}。如果
-% \pkg{hyperref} 先于 \CTeX{} 被载入,那么 \opt{unicode} 选项是没有意义的。
-% 因此要通过意义相同但在 \XeTeX{} 下更保险的 \opt{pdfencoding} 选项来设置。
-% 为了与 \XeTeX 下的行为一致(使用 \tn{HyPsd@LoadUnicode} 载入 \file{puenc.def}),
-% 在 \LuaTeX{} 下也启用这个选项。
+% \XeTeX 和 \LuaTeX 统一设置 \opt{pdfencoding} 为 \opt{unicode}。
% \begin{macrocode}
%<*xetex|luatex>
\ctex_hypersetup:n { pdfencoding = unicode }
@@ -8937,11 +9000,12 @@ Copyright and Licence
{
\seq_map_inline:Nn \c_@@_headings_seq
{ \ctex_fix_varioref_label:n { ##1 } }
+ \ctex_at_end_package:nn { cleveref } { \ctex_cleveref_hook: }
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_fix_varioref_label:n}
+% \begin{macro}{\ctex_fix_varioref_label:n}
% \pkg{varioref} 宏包的 \tn{labelformat} 实际上是定义一个以 |\the<#1>| 为参数的宏
% |\p@<#1>|。\LaTeX{} 在定义计数器 |<#1>| 时,都会将 |\p@<#1>| 初始化为 \tn{@empty}。
% 如果这个宏非空,说明用户自定义了标签格式,我们就不再修改。这里不能使用
@@ -8960,6 +9024,22 @@ Copyright and Licence
% \end{macrocode}
% \end{macro}
%
+% \changes{v2.5.3}{2020/06/04}{兼容 \pkg{cleveref}。}
+% \begin{macro}{\ctex_cleveref_hook:}
+% 需要将\pkg{cleveref} 包对应命令中 |\p@|\meta{counter} 的参数及时展开,以兼容 \tn{labelformat}。
+% \begin{macrocode}
+\cs_new_protected:Npn \ctex_cleveref_hook:
+ {
+ \ctex_patch_cmd:Nnn \refstepcounter@noarg
+ { \endcsname \csname the }
+ { \expandafter \endcsname \csname the }
+ \ctex_patch_cmd:Nnn \refstepcounter@optarg
+ { \endcsname \csname the }
+ { \expandafter \endcsname \csname the }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \changes{v2.5}{2020/04/19}{应用新内核中的 \tn{labelformat}。}
%
% 如果 \pkg{varioref} 已经被载入,则使用它来设置。
@@ -10750,17 +10830,17 @@ Copyright and Licence
% 文件标识信息。
% \begin{macrocode}
%<adobe>\ProvidesFile{ctex-zhmap-adobe.tex}%
-%<adobe> [2020/05/16 v2.5.2 Adobe font map loader for DVIPDFMx (CTEX)]
+%<adobe> [2020/06/06 v2.5.3 Adobe font map loader for DVIPDFMx (CTEX)]
%<fandol>\ProvidesFile{ctex-zhmap-fandol.tex}%
-%<fandol> [2020/05/16 v2.5.2 Fandol font map loader for DVIPDFMx (CTEX)]
+%<fandol> [2020/06/06 v2.5.3 Fandol font map loader for DVIPDFMx (CTEX)]
%<founder>\ProvidesFile{ctex-zhmap-founder.tex}%
-%<founder> [2020/05/16 v2.5.2 Founder font map loader for pdfTeX and DVIPDFMx (CTEX)]
+%<founder> [2020/06/06 v2.5.3 Founder font map loader for pdfTeX and DVIPDFMx (CTEX)]
%<mac>\ProvidesFile{ctex-zhmap-mac.tex}%
-%<mac> [2020/05/16 v2.5.2 Mac font map loader for DVIPDFMx (CTEX)]
+%<mac> [2020/06/06 v2.5.3 Mac font map loader for DVIPDFMx (CTEX)]
%<ubuntu>\ProvidesFile{ctex-zhmap-ubuntu.tex}%
-%<ubuntu> [2020/05/16 v2.5.2 Ubuntu font map loader for DVIPDFMx (CTEX)]
+%<ubuntu> [2020/06/06 v2.5.3 Ubuntu font map loader for DVIPDFMx (CTEX)]
%<windows>\ProvidesFile{ctex-zhmap-windows.tex}%
-%<windows> [2020/05/16 v2.5.2 Windows font map loader for pdfTeX and DVIPDFMx (CTEX)]
+%<windows> [2020/06/06 v2.5.3 Windows font map loader for pdfTeX and DVIPDFMx (CTEX)]
% \end{macrocode}
%
% \paragraph{\pkg{ctex-zhmap-adobe.tex}}