⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ctex.dtx

📁 编写必备的软件包
💻 DTX
📖 第 1 页 / 共 5 页
字号:
%<*ctex|cls>
\RequirePackage{keyval}[1999/03/16]
\ifCTEX@indent
  \RequirePackage{indentfirst}
\fi
\ifCTEX@psfont
  \RequirePackage[T1]{fontenc}
  \RequirePackage{textcomp}
  \RequirePackage{mathptmx}
  \RequirePackage[scaled]{helvet}
  \RequirePackage{courier}
\else
  \RequirePackage{type1cm}
\fi
%</ctex|cls>
%    \end{macrocode}
%
% fancyhdr~宏包,控制页眉页脚的设置
%    \begin{macrocode}
%<*ctex|cls>
\ifCTEX@fancyhdr
  \RequirePackage{fancyhdr}
\fi
%</ctex|cls>
%    \end{macrocode}
%
% CCTfntef~宏包和~CJKfntef~宏包
% \changes{v0.7b}{2005/12/09}{调整宏包导入位置,解决~fntef~类宏包早于相应中文宏包导入的问题}
% \changes{v0.7d}{2005/12/28}{在~fntef~类宏包后使用~\cs{normalem}~恢复~\cs{em}~宏的缺省定义}
%    \begin{macrocode}
%<*cct>
\ifCTEX@fntef
  \RequirePackage{CCTfntef}
  \normalem
\fi
%</cct>
%<*cjk>
\ifCTEX@fntef
  \RequirePackage{CJKfntef}
  \normalem
\fi
%</cjk>
%    \end{macrocode}
%
% ctexcap~宏包需要先装入~ctex~宏包。
%    \begin{macrocode}
%<*ctexcap>
\ifCTEX@caption
  \PassOptionsToPackage{cap}{ctex}
\fi
\RequirePackage{ctex}
%</ctexcap>
%    \end{macrocode}
%
% 文档类还需要的宏包:
%    \begin{macrocode}
%<*cls>
%</cls>
%    \end{macrocode}
%
%
%
%
% \subsection{辅助定义}
%
%
% 我们定义一些将在后面使用的宏。
%
%    \begin{macrocode}
%<*ctex|cls>
\DeclareRobustCommand\CTeX{C\kern-.05em\TeX{}}
\newcommand*\CTEX@key{\define@key{CTEX}}
\newcommand*\CTEXoptions[1][]{\setkeys{CTEX}{#1}}
\newcommand*\CTEX@subkey[1]{\define@key{CTEX#1}}
\newcommand*\CTEXsetup[2][]{\setkeys{CTEX#2}{#1}}
%</ctex|cls>
%    \end{macrocode}
%
%
%    \begin{macrocode}
%<*ctex|cls>
%<article>\def\CTEX@cls@article{}
%<report>\def\CTEX@cls@report{}
%<book>\def\CTEX@cls@book{}
%<*ctex>
\@ifclassloaded{article}{\def\CTEX@cls@article{}}{}
\@ifclassloaded{report}{\def\CTEX@cls@report{}}{}
\@ifclassloaded{book}{\def\CTEX@cls@book{}}{}
%</ctex>
\def\ifCTEX@cls#1{%
  \expandafter\ifx\csname CTEX@cls@#1\endcsname\relax
    \expandafter\@secondoftwo
  \else
    \expandafter\@firstoftwo
  \fi}
%</ctex|cls>
%    \end{macrocode}
%
%
% \changes{v0.7c}{2005/12/20}{增加对~\cs{if@mainmatter}~的判断,以兼容~amsbook~宏包}
%    \begin{macrocode}
%<*ctexcap>
\@ifundefined{if@mainmatter}{\let\if@mainmatter\iftrue}{}
%</ctexcap>
%    \end{macrocode}
%
%
%    \begin{macrocode}
%<*ctex|cls>
\def\CTEX@replacecommand#1#2#3{%
  \expandafter\expandafter\expandafter\let\expandafter
    \csname #1#3\expandafter\endcsname
    \csname #2#3\endcsname
  \expandafter\expandafter\expandafter\def\expandafter
    \csname #2#3\expandafter\endcsname
    {\csname #1#3\endcsname}}
%</ctex|cls>
%    \end{macrocode}
%
%
%
%
% \subsection{通用中文设置}
%
%
% 和~CCT~以及~CJK~相关的内容分放在各自的~\texttt{.clo}~文件中
%    \begin{macrocode}
%<*ctex|cls>
\ifCTEX@cct
  \input{ctexcct.clo}
\else
  \input{ctexcjk.clo}
\fi
%</ctex|cls>
%    \end{macrocode}
%
%
% \changes{v0.7}{2005/11/25}{将~ctex.def~文件和~ctexcap.cfg~文件的读取时间前移,使得可以在导言中使用设置命令}
% 所有包含中文字符的定义都需要从~\texttt{ctex.def}~读入。
%    \begin{macrocode}
%<*ctex|cls>
\AtEndOfPackage{%
  \makeatletter
  \InputIfFileExists{ctex.def}{}{%
    \PackageError{ctex}{%
      Can't find ctex.def}{%
      There will be unexpected errors if you continue.}}
  \makeatother}
%</ctex|cls>
%    \end{macrocode}
%
%
% 如果使用中文标题,则还要读入~\texttt{ctexcap.cfg}~的内容。
%    \begin{macrocode}
%<*ctexcap|cls>
\ifCTEX@caption
  \AtEndOfPackage{%
    \makeatletter
    \InputIfFileExists{ctexcap.cfg}{}{%
      \PackageError{ctex}{%
        Can't find ctexcap.cfg}{%
        The english captions are used if you continue.}}
    \makeatother}
\fi
%</ctexcap|cls>
%    \end{macrocode}
%
%
% \changes{v0.7a}{2005/11/28}{将~ctex.cfg~文件的读取时间前移,使得导言中的设置命令优先}
% 最后再从~\texttt{ctex.cfg}~读入用户的自定义设置。
%    \begin{macrocode}
%<*ctex|cls>
\AtEndOfPackage{%
  \makeatletter
  \InputIfFileExists{ctex.cfg}{}{%
    \PackageWarning{ctex}{%
      Can't find ctex.cfg}}
  \makeatother}
%</ctex|cls>
%    \end{macrocode}
%
%
% \begin{macro}{\CTEXindent}
% \begin{macro}{\CTEXnoindent}
% 段首缩进~2~个汉字的距离,需要考虑到字距。
%    \begin{macrocode}
%<*ctex|cls>
\newcommand*\CTEXindent{\CTEXsetfont\parindent2\ccwd}
\newcommand*\CTEXnoindent{\parindent\z@}
\ifCTEX@indent
  \AtBeginDocument{\CTEXindent}
\fi
%</ctex|cls>
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
%
% \begin{macro}{\CTEX@spaceChar}
% \changes{v0.2a}{2004/02/11}{加快处理速度,改善和~CJKpunct~的兼容性}
%    \begin{macrocode}
%<ctex|cls>\def\CTEX@spaceChar{\hskip \f@size \p@}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\baselinestretch}
% \changes{v0.2a}{2004/02/11}{增加对行距的设置}
% \changes{v0.4b}{2004/07/13}{把行距参数从~1.2~改为~1.3}
% 通常中文文档需要较宽的行距。
%    \begin{macrocode}
%<ctex|cls>\def\baselinestretch{1.3}
%    \end{macrocode}
% \end{macro}
%
%
% \subsubsection{中文字号}
%
% 首先给出中文字号和~\TeX{}~字体大小的对应关系。
% 定义中使用~pt~为单位。中文字号大小参考~Word~的定义。
%
% 1 in = 72 bp = 72.27 pt
%
% 行距 = 字体大小 $\times$ 1.2
%
% \changes{v0.2b}{2004/02/13}{修改缺省的行距}
% \changes{v0.4}{2004/05/13}{中文字号定义改为直接使用~pt~为单位}
%    \begin{macrocode}
%<*ctex|cls>
\def\CTEX@fs@eight{5.02}   \def\CTEX@fs@eightskip{6.02}   %八号字    5bp
\def\CTEX@fs@seven{5.52}   \def\CTEX@fs@sevenskip{6.62}   %七号字  5.5bp
\def\CTEX@fs@ssix{6.52}    \def\CTEX@fs@ssixskip{7.83}    %小六号  6.5bp
\def\CTEX@fs@six{7.53}     \def\CTEX@fs@sixskip{9.03}     %六号字  7.5bp
\def\CTEX@fs@sfive{9.03}   \def\CTEX@fs@sfiveskip{10.84}  %小五号    9bp
\def\CTEX@fs@five{10.54}   \def\CTEX@fs@fiveskip{12.65}   %五号字 10.5bp
\def\CTEX@fs@sfour{12.05}  \def\CTEX@fs@sfourskip{14.45}  %小四号   12bp
\def\CTEX@fs@four{14.05}   \def\CTEX@fs@fourskip{16.86}   %四号字   14bp
\def\CTEX@fs@sthree{15.06} \def\CTEX@fs@sthreeskip{18.07} %小三号   15bp
\def\CTEX@fs@three{16.06}  \def\CTEX@fs@threeskip{19.27}  %三号字   16bp
\def\CTEX@fs@stwo{18.07}   \def\CTEX@fs@stwoskip{21.68}   %小二号   18bp
\def\CTEX@fs@two{22.08}    \def\CTEX@fs@twoskip{26.50}    %二号字   22bp
\def\CTEX@fs@sone{24.09}   \def\CTEX@fs@soneskip{28.91}   %小一号   24bp
\def\CTEX@fs@one{26.10}    \def\CTEX@fs@oneskip{31.32}    %一号字   26bp
\def\CTEX@fs@szero{36.14}  \def\CTEX@fs@szeroskip{43.36}  %小初号   36bp
\def\CTEX@fs@zero{42.16}   \def\CTEX@fs@zeroskip{50.59}   %初号字   42bp
%</ctex|cls>
%    \end{macrocode}
%
% 定义相应的数学字体的大小(用于上下脚标)。
%    \begin{macrocode}
%<*ctex|cls>
\DeclareMathSizes{\CTEX@fs@eight}{\CTEX@fs@eight}{5}{5}
\DeclareMathSizes{\CTEX@fs@seven}{\CTEX@fs@seven}{5}{5}
\DeclareMathSizes{\CTEX@fs@ssix}{\CTEX@fs@ssix}{5}{5}
\DeclareMathSizes{\CTEX@fs@six}{\CTEX@fs@six}{5}{5}
\DeclareMathSizes{\CTEX@fs@sfive}{\CTEX@fs@sfive}{6}{5}
\DeclareMathSizes{\CTEX@fs@five}{\CTEX@fs@five}{7}{5}
\DeclareMathSizes{\CTEX@fs@sfour}{\CTEX@fs@sfour}{8}{6}
\DeclareMathSizes{\CTEX@fs@four}
                 {\CTEX@fs@four}{\CTEX@fs@five}{\CTEX@fs@six}
\DeclareMathSizes{\CTEX@fs@sthree}
                 {\CTEX@fs@sthree}{\CTEX@fs@sfour}{\CTEX@fs@sfive}
\DeclareMathSizes{\CTEX@fs@three}
                 {\CTEX@fs@three}{\CTEX@fs@four}{\CTEX@fs@five}
\DeclareMathSizes{\CTEX@fs@stwo}
                 {\CTEX@fs@stwo}{\CTEX@fs@sthree}{\CTEX@fs@sfour}
\DeclareMathSizes{\CTEX@fs@two}
                 {\CTEX@fs@two}{\CTEX@fs@three}{\CTEX@fs@four}
\DeclareMathSizes{\CTEX@fs@sone}
                 {\CTEX@fs@sone}{\CTEX@fs@stwo}{\CTEX@fs@sthree}
\DeclareMathSizes{\CTEX@fs@one}
                 {\CTEX@fs@one}{\CTEX@fs@two}{\CTEX@fs@three}
\DeclareMathSizes{\CTEX@fs@szero}
                 {\CTEX@fs@szero}{\CTEX@fs@sone}{\CTEX@fs@stwo}
\DeclareMathSizes{\CTEX@fs@zero}
                 {\CTEX@fs@zero}{\CTEX@fs@one}{\CTEX@fs@two}
%</ctex|cls>
%    \end{macrocode}
%
%
% \begin{macro}{\zihao}
% \changes{v0.1b}{2003/08/17}{删除多余的~\cs{newcount}~命令}
% \changes{v0.4}{2004/05/13}{删除~\cs{CTEX@fontsize}~命令,
%                            改为直接使用~\cs{fontsize}~命令}
% 这个命令用于改变中文字号。当前中文字号保存在~|\CTEX@zihao|~中。
% 注意,如果没用过~|\zihao|~命令,则~|\CTEX@zihao|~没有定义。
% \begin{macro}{\CTEX@zihao}
%    \begin{macrocode}
%<*ctex|cls>
\def\CTEX@zihao{}
%    \end{macrocode}
% \end{macro}
% 如果是负数,表示是小号字体
%    \begin{macrocode}
\DeclareRobustCommand*\zihao[1]{\def\CTEX@zihao{#1}%
  \ifnum #11<0%
    \@tempcnta=-#1
    \ifcase\@tempcnta%
        \fontsize\CTEX@fs@szero\CTEX@fs@szeroskip%
    \or \fontsize\CTEX@fs@sone\CTEX@fs@soneskip%
    \or \fontsize\CTEX@fs@stwo\CTEX@fs@stwoskip%
    \or \fontsize\CTEX@fs@sthree\CTEX@fs@sthreeskip%
    \or \fontsize\CTEX@fs@sfour\CTEX@fs@sfourskip%
    \or \fontsize\CTEX@fs@sfive\CTEX@fs@sfiveskip%
    \or \fontsize\CTEX@fs@ssix\CTEX@fs@ssixskip%
%    \end{macrocode}
% 如果不在预定义的字号范围~(-0 -- -6)~,则报告一个错误
%    \begin{macrocode}
    \else \PackageError{ctex}{%
            Undefined Chinese font size in command \protect\zihao}{%
            The old font size is used if you continue.}%
    \fi%
%    \end{macrocode}
% 否则是正常字号
%    \begin{macrocode}
  \else%
    \@tempcnta=#1
    \ifcase\@tempcnta%
        \fontsize\CTEX@fs@zero\CTEX@fs@zeroskip%
    \or \fontsize\CTEX@fs@one\CTEX@fs@oneskip%
    \or \fontsize\CTEX@fs@two\CTEX@fs@twoskip%
    \or \fontsize\CTEX@fs@three\CTEX@fs@threeskip%
    \or \fontsize\CTEX@fs@four\CTEX@fs@fourskip%
    \or \fontsize\CTEX@fs@five\CTEX@fs@fiveskip%
    \or \fontsize\CTEX@fs@six\CTEX@fs@sixskip%
    \or \fontsize\CTEX@fs@seven\CTEX@fs@sevenskip%
    \or \fontsize\CTEX@fs@eight\CTEX@fs@eightskip%
%    \end{macrocode}
% 如果不在预定义的字号范围~(0 -- 8)~,则报告一个错误
%    \begin{macrocode}
    \else \PackageError{ctex}{%
            Undefined Chinese font size in command \protect\zihao}{%
            The old font size is used if you continue.}%
    \fi%
  \fi%
  \selectfont\ignorespaces}
%</ctex|cls>
%    \end{macrocode}
% \end{macro}
%
%
% \subsubsection{缺省字号大小}
%
% \changes{v0.2b}{2004/02/13}{修改缺省的字号大小}
% \changes{v0.2d}{2004/04/23}{补上字号定义中行间距参数中缺少的~\cs{CTEX@bp}}
% 缺省字体只对文档类有效,下面使用中文小四号字时的设置。
%
%    \begin{macrocode}
%<*cls>
\ifCTEX@sfoursize
  \renewcommand\normalsize{% 12bp
    \@setfontsize\normalsize{\CTEX@fs@sfour}{\CTEX@fs@sfourskip}%
    \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
    \abovedisplayshortskip \z@ \@plus3\p@
    \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
    \belowdisplayskip \abovedisplayskip
    \let\@listi\@listI}
  \normalsize
  \renewcommand\small{% 10.5bp
    \@setfontsize\small{\CTEX@fs@five}{\CTEX@fs@fiveskip}%
    \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
    \abovedisplayshortskip \z@ \@plus3\p@
    \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
    \def\@listi{\leftmargin\leftmargini
                \topsep 9\p@ \@plus3\p@ \@minus5\p@
                \parsep 4.5\p@ \@plus2\p@ \@minus\p@
                \itemsep \parsep}%
    \belowdisplayskip \abovedisplayskip}
  \renewcommand\footnotesize{% 9bp
    \@setfontsize\footnotesize{\CTEX@fs@sfive}{\CTEX@fs@sfiveskip}%
    \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
    \abovedisplayshortskip \z@ \@plus3\p@
    \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
    \def\@listi{\leftmargin\leftmargini
                \topsep 6\p@ \@plus2\p@ \@minus2\p@
                \parsep 3\p@ \@plus2\p@ \@minus\p@
                \itemsep \parsep}%
    \belowdisplayskip \abovedisplayskip}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -