<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% \iffalse meta-comment
%
% Copyright (C) 2014, 2017 by Leo Liu &lt;leoliu.pku@gmail.com&gt;
% ---------------------------------------------------------------------------
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
%
% The Current Maintainer of this work is Leo Liu.
%
% This work consists of the files seealso.dtx and seealso.ins
% and the derived filebase seealso.sty.
%
% \fi
%
% \iffalse
%&lt;*driver&gt;
\ProvidesFile{seealso.dtx}
%&lt;/driver&gt;
%&lt;package&gt;\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%&lt;package&gt;\ProvidesPackage{seealso}
%&lt;*package&gt;
    [2017/03/23 v1.2 makeidx's see and seealso with page number support.]
%&lt;/package&gt;
%
%&lt;*driver&gt;
\documentclass{ltxdoc}
\usepackage[a4paper,left=2in,right=1in,top=1in,bottom=1in]{geometry}
\newcommand\pkg[1]{\textsf{#1}}
\usepackage[UTF8,hyperref]{ctex}
\makeatletter
\renewcommand\glossary@prologue{%
  \section*{ç‰ćś¬ĺŽ†ĺŹ˛}
  \markboth{ç‰ćś¬ĺŽ†ĺŹ˛}{ç‰ćś¬ĺŽ†ĺŹ˛}}
\renewcommand\index@prologue{%
  \section*{Index / ä»Łç&nbsp;ç´˘ĺĽ•}
  \markboth{Index / ä»Łç&nbsp;ç´˘ĺĽ•}{Index / ä»Łç&nbsp;ç´˘ĺĽ•}
  ć–śä˝“çš„ć•°ĺ­—čˇ¨ç¤şĺŻąĺş”éˇąčŻ´ćŽć‰€ĺś¨çš„éˇµç&nbsp;ă€‚ä¸‹ĺ’çşżçš„ć•°ĺ­—čˇ¨ç¤şĺ®šäą‰ć‰€ĺś¨çš„ä»Łç&nbsp;čˇŚĺŹ·ďĽ›č€Śç›´
  ç«‹ä˝“çš„ć•°ĺ­—čˇ¨ç¤şĺŻąĺş”éˇąä˝żç”¨ć—¶ć‰€ĺś¨çš„čˇŚĺŹ·ă€‚}
\def\option{\begingroup
   \catcode`\\12
   \MakePrivateLetters \option@}
\let\endoption\endtrivlist
\long\def\option@#1{\endgroup \topsep\MacroTopsep \trivlist
  \edef\saved@macroname{\string#1}%
  \def\makelabel##1{\llap{##1}}%
  \if@inlabel
    \let\@tempa\@empty \count@\macro@cnt
    \loop \ifnum\count@&gt;\z@
      \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
    \edef\makelabel##1{\llap{\vtop to\baselineskip
                               {\@tempa\hbox{##1}\vss}}}%
    \advance \macro@cnt \@ne
  \else  \macro@cnt\@ne  \fi
  \edef\@tempa{\noexpand\item[%
     \noexpand\PrintEnvName
     {\string#1}]}%
  \@tempa
  \global\advance\c@CodelineNo\@ne
      \SpecialMainOptionIndex{#1}\nobreak
  \global\advance\c@CodelineNo\m@ne
  \ignorespaces}
\def\SpecialMainOptionIndex#1{\@bsphack
  \special@index{%
    #1\actualchar
    {\string\ttfamily\space#1}
    (option)%
    \encapchar main}%
  \@esphack}
\def\SpecialOptionIndex#1{\@bsphack
  \begingroup
    \HD@target
    \let\HDorg@encapchar\encapchar
    \edef\encapchar usage{%
      \HDorg@encapchar hdclindex{\the\c@HD@hypercount}{usage}}%
    \index{#1\actualchar{\protect\ttfamily#1}
           (option)\encapchar usage}%
    \index{options:\levelchar#1\actualchar{\protect\ttfamily#1}\encapchar
           usage}%
  \endgroup
  \@esphack}
\def\DescribeOption{\leavevmode\@bsphack\begingroup\MakePrivateLetters
  \Describe@Option}
\def\Describe@Option#1{\endgroup
              \marginpar{\raggedleft\PrintDescribeEnv{#1}}%
              \SpecialOptionIndex{#1}\@esphack\ignorespaces}
\def\stylemeaning#1{\texttt{%
  \expandafter\expandafter\expandafter\strip@prefix
    \expandafter\meaning\csname seealso@#1\endcsname}}
\renewcommand\author[2][]{%
  \ifstrempty{#1}{}{%
    \hypersetup{pdfauthor=#1}}%
  \def\@author{#2}}
\renewcommand\title[2][]{%
  \ifstrempty{#1}{}{%
    \hypersetup{pdftitle=#1}}%
  \def\@title{#2}}
\makeatother
\usepackage{seealso}
\usepackage{fancyvrb}
\fvset{gobble=2}
\usepackage{hypdoc}
\hypersetup{pdfstartview=FitH}
\AtBeginDocument{\MakeShortVerb\|}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
\begin{document}
  \DocInput{seealso.dtx}
  \PrintChanges
  \PrintIndex
\end{document}
%&lt;/driver&gt;
% \fi
%
% \CheckSum{279}
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&amp;
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \&lt;
%   Equals        \=     Greater than  \&gt;     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
%
% \changes{v0.1}{2014/04/04}{ĺťĺ§‹ç‰ćś¬ă€‚}
% \changes{v1.0}{2014/04/05}{ĺŠźč˝čľĺ®Śĺ¤‡çš„ç‰ćś¬ă€‚}
%
% \DoNotIndex{\newcommand,\newenvironment,\^,\~,\@for,\@ifnextchar,
% \@let@token,\@onlypreamble, \active, \AtBeginDocument,\begingroup,\catcode,
% \csdef,\cslet,\cslet,\csuse, \DeclareBoolOption,\def,\define@key,\do,
% \docsvlist, \dolistloop,\edef,\else, \emph,\empty,\endgroup,\expandafter,
% \fi, \forcsvlist, \forlistcsloop, \forlistloop, \futurelet,\global,
% \ifcsdef, \ifcsempty,\ifinlist,\ifinlistcs, \ifstrempty,\ifundef,\ifx,
% \ignorespaces, \kvsetkeys,\lccode,\let, \listadd,\listbreak, \listcsgadd,
% \lowercase,\newif, \next, \noexpand,\ProcessKeyvalOptions, \RequirePackage,
% \reserved@a, \SetupKeyvalOptions,\space,\unexpanded,\unless}
%
% \GetFileInfo{seealso.dtx}
% \title[The seealso Package (\fileversion)]
%   {\hypertarget{English}{The \pkg{seealso} Package (\fileversion)}
%    \makebox[0pt][l]{\hspace{3cm}\large
%      \hyperlink{Chinese}{$\Rightarrow$ \textsf{ä¸­ć–‡ç‰}}}}
% \author[LiĂş HÇŽiyĂˇng (Leo Liu) &lt;leoliu.pku@gmail.com&gt;]
%   {LiĂş HÇŽiyĂˇng (Leo Liu) \\ \nolinkurl{leoliu.pku@gmail.com}}
% \date{\filedate}
%
% \maketitle
%
% \section{Introduction}
%
% When preparing index, the macros |\see| and |\seealso| defined by \LaTeXe's
% standard package \pkg{makeidx} are handy to use. They are used as special
% page format command, to present cross reference of index entry. For example,
% if we use
% \begin{Verbatim}
% \index{math|see{mathematics}}
% \end{Verbatim}
% to reference the index entry ``mathematics'', we will get
% \begin{quote}
% math, \emph{see} mathematics
% \end{quote}
% in the output index.
%
% However, |\see| and |\seealso| commands in \LaTeXe{} cannot produce page
% numbers. Moreover, if we use multiple |\see| or |\seealso|'s for one entry,
% there will be multiple reference targets produced. Therefore we may get
% this unexpected output:
% \begin{quote}
% math, \emph{see} mathematics, \emph{see} mathematics, \emph{see} mathematics
% \end{quote}
% if we have used \verb=\index{math|see{mathematics}}= at 3 different places
% in the document.
%
% The \pkg{seealso} package solve the problem. If we use
% \begin{Verbatim}
% \usepackage{seealso}
% \end{Verbatim}
% all cross references of index entry will produce page numbers, and the
% reference targets, which we call \emph{see list}, will be merged. The
% previous example will produce an output like this:
% \begin{quote}
% math, \seepage{mathematics}{2}, \seepage{mathematics}{4}, \seepage{mathematics}{5}
% \end{quote}
%
% \section{Reference}
%
% \subsection{Package Loading}
%
% The basic usage of the package is to simply load the package
% \begin{Verbatim}
% \usepackage{seealso}
% \end{Verbatim}
% then |\see| and |\seealso| commands will be redefined to support page number
% output and reference target merging.
%
% The \pkg{seealso} package should be loaded after \pkg{makeidx},
% \pkg{imakeidx}, etc. Or the redefinition of |\see| and |\seealso| may be
% broken.
%
% \subsection{Package Options}
%
% \DescribeOption{override}
% |override| is a boolean option, with a default value |true|. When it is set
% the original |\see| and |\seealso| will be overridden. However, when it is
% set to be |false|, say
% \begin{Verbatim}
% \usepackage[override=false]{seealso}
% \end{Verbatim}
% then |\see| and |\seealso| will not be overridden, and |\seepage| and
% |\seealsopage| should be used for page number output.
%
% \DescribeOption{activecr}
% |activecr| is a boolean option, with a default value |true|. When it is set,
% the see list will be output at the end of an index entry line (in a |.ind|
% file). If we set |activecr=false|, however, the see list will not be output
% automatically, one should use |\SeealsoPrintList| manually at the end of the
% index entry instead. Usually |\SeealsoPrintList| is added via |delim_t|
% style of Makeindex.
%
% \subsection{The \cs{see} and \cs{seealso} Commands}
%
% \DescribeMacro{\seepage}
% \DescribeMacro{\seealsopage}
% |\seepage| and |\seealsopage| provide the main functions of this package.
% They provide the same faculty of cross reference, but output page numbers
% and prevent redundancy. For example, suppose that there are
% \begin{Verbatim}
% \index{foo|seepage{bar}}
% \end{Verbatim}
% in page 1, 2, and 3, we will have a |.ind| file as below:
% \begin{Verbatim}
% foo, \seepage{bar}{1}, \seepage{bar}{2}, \seepage{bar}{3}
% \end{Verbatim}
% And the output of the index will be:
% \begin{quote}
% foo, \seepage{bar}{1}, \seepage{bar}{2}, \seepage{bar}{3}
% \end{quote}
%
% It is possible to use different references for one index entry. For example
% we can use
% \begin{Verbatim}
% \index{foo|seepage{bar}}
% \end{Verbatim}
% and
% \begin{Verbatim}
% \index{foo|seepage{foobaz}}
% \end{Verbatim}
% several times, the generated |.ind| file may be:
% \begin{Verbatim}
% foo, \seepage{bar}{1}, \seepage{bar}{2}, \seepage{foobaz}{3}
% \end{Verbatim}
% And the output of the index will be:
% \begin{quote}
% foo, \seepage{bar}{1}, \seepage{bar}{2}, \seepage{foobaz}{3}
% \end{quote}
%
% \DescribeMacro{\seenopage}
% \DescribeMacro{\seealsonopage}
% The macros |\seenopage| and |\seealsonopage| save the original definitions
% of |\see| and |\seealso| before loading \pkg{seealso}, which do not produce
% page numbers.
%
% \DescribeMacro{\see}
% \DescribeMacro{\seealso}
% When option |override| is |true|, which is the default, |\see| and
% |\seealso| works just as |\seepage| and |\seealsopage|.
%
% \DescribeMacro{\SeealsoPrintList}
% |\seepage| and |\seealsopage| will collect the see lists, which will be
% output at the end of the line under default |activecr| option. However, when
% |activecr| is set to be |false|, the see lists won't be output at the end of
% source line where |\seepage| and |\seealsopage| are. In the latter case, we
% can add |\SeealsoPrintList| manually at the end of line to output the see
% lists. Usually we can set |delim_t| variable in the style file of Makeindex,
% for example:
% \begin{Verbatim}
% % example.ist
% delim_t "\\SeealsoPrintList"
% \end{Verbatim}
% Then a |\SeealsoPrintList| will be appended at the end of every non-empty
% index entry, and the see lists will be output properly.
%
% \DescribeMacro{\DeclareSeealsoMacro}
% |\DeclareSeealsoMacro| can be used to define a new macro like |\see| and
% |\seealso|. The syntax is
% \begin{quote}
% |\DeclareSeealsoMacro\|\meta{macro}|{|\meta{seelist}|}{|\meta{name}|}|
% \end{quote}
% where |\|\meta{macro} is the macro name, \meta{seelist} is the new see list,
% and \meta{name} is the name of the see list to be output (like |\seename|).
% Using |\DeclareSeealsoMacro|, two macros will be defined, the one is
% |\|\meta{macro}, the other is |\|\meta{macro}|name|. If there has no
% |\|\meta{macro}|name| predefined, it is defined to be \meta{name}, or the
% definition remains unchanged.
%
% For example, |\seepage| and |\seealsopage| are defined like this:
% \begin{Verbatim}
% \DeclareSeealsoMacro\seepage{see}{see}
% \DeclareSeealsoMacro\seealsopage{also}{see also}
% \end{Verbatim}
% The definitions above also provide the default value of |\seename| and
% |\alsoname| to be |see| and |see also|, respectively.
%
% \subsection{Output Styles}
%
% \DescribeMacro{\seealsosetup}
% The macro |\seealsosetup| is used to configure the output style of see
% lists. The syntax is:
% \begin{quote}
% |\seealsosetup[|\meta{seelists}|]{|\meta{kv-options}|}|
% \end{quote}
% where \meta{seelists} is a comma separated list, each item of which is a see
% list to be setup. \meta{seelists} can also be omitted or set to be empty,
% which means we are setting up the default output style of all kind of see
% lists. \meta{kv-options} is the options in key-value syntax.
%
% All possible output styles are summarized in table~\ref{tab:outstyleen}.
% \begin{table}[htbp]
% \centering
% \begin{tabular}{lp{4cm}ll}
% \hline
% Key &amp; Meaning &amp; Argument &amp; Default Value \\
% \hline
% |name| &amp; The name of see list to be output, e.g. |\seename| &amp; none
%   &amp; (invalid) \\
% |listsep| &amp; The separator before a see list &amp; none
%   &amp; \stylemeaning{listsep} \\
% |itemsep| &amp; The separator between see list items &amp; none
%   &amp; \stylemeaning{itemsep} \\
% |nameformat| &amp; Output format of the see list name &amp; |#1|
%   &amp; \stylemeaning{nameformat} \\
% |itemformat| &amp; Output format of the see list items &amp; |#1|
%   &amp; \stylemeaning{itemformat} \\
% |pageformat| &amp; Output format of the page numbers &amp; |#1|
%   &amp; \stylemeaning{pageformat} \\
% \hline
% \end{tabular}
% \caption{Output styles used by \cs{seealsosetup}}\label{tab:outstyleen}
% \end{table}
%
% For example, if we want to set all page numbers produced by |\seealsopage|
% to be italic, we can use:
% \begin{Verbatim}
% \seealsosetup[also]{pageformat=\textit{#1}}
% \end{Verbatim}
%
% Besides the output styles, |\seealsosetup| accepts |enditem| and |enditem+|
% options, which is a list of token that determines whether to output the see
% list at the end of line, if |activecr| option is true. The default value of
% the list includes some common macros in |theindex| environment:
% |\indexspace|, |\item|, |\subitem|, |\subsubitem|, and |\end|. For example,
% if we have a special index which supports 4th level item |\subsubsubitem|
% and a special space |\myindexspace|, we can use
% \begin{Verbatim}
% \seealsosetup{enditem+={\subsubsubitem,\myindexspace}}
% \end{Verbatim}
% to add the new macros to the list.
%
% \DescribeMacro{\SeealsoGobble}
% |\SeealsoGobble| takes a character \meta{c} as argument. It checks the
% following character, gobble it and ignore spaces if it is \meta{c}, or do
% nothing if it is not \meta{c}. This macro is useful in |pageformat| style
% to prevent outputting the page numbers, like this:
% \begin{Verbatim}
% \seealsosetup[see,also]{pageformat=\SeealsoGobble{,}}
% \end{Verbatim}
%
%
% \section{Known Issues}
%
% Here are some known problems and their solutions:
% \begin{itemize}
% \item
% Since the output format of page numbers of |\seepage|, |\seealsopage| is the
% same as normal page numbers, it may be ambiguous if we use normal |\index|
% and \verb=\index{...|seepage}= simultaneously. Usually we should avoid using
% different style of |\index| with or without |\seepage| and |\seealsopage|.
% If it is impossible, we can set special page number format to identify them,
% or we can use |\SeealsoGobble| to disable page numbers.
% \end{itemize}
%
%
% \clearpage
% \title{\hypertarget{Chinese}{\pkg{seealso} ĺ®ŹĺŚ… (\fileversion)}
%   \makebox[0pt][l]{\hspace{3cm}\large
%     \hyperlink{English}{$\Rightarrow$ \textsf{English Version}}}}
% \author{ĺćµ·ć´‹ \\ \nolinkurl{leoliu.pku@gmail.com}}
% \date{\filedate}
%
% \maketitle
%
% \section{ç®€ä»‹}
%
% ĺś¨ç´˘ĺĽ•ç”źćć—¶ďĽŚ\LaTeXe{} çš„ć&nbsp;‡ĺ‡†ĺ®ŹĺŚ… \pkg{makeidx} ĺ®šäą‰äş† |\see| ä¸Ž |\seealso|
% ä¸¤ä¸Şĺ®ŹďĽŚĺ®ä»¬é€šĺ¸¸ćŻĺś¨ |\index| ä¸­ä˝śä¸şä¸€ç§Ťç‰ąć®Šçš„éˇµç&nbsp;ć&nbsp;ĽĺĽŹä˝żç”¨ďĽŚčˇ¨ç¤şç´˘ĺĽ•éˇąçš„ĺĽ•
% ç”¨ă€‚äľ‹ĺ¦‚ä˝żç”¨
% \begin{Verbatim}
% \index{math|see{mathematics}}
% \end{Verbatim}
% äĽšä˝żç´˘ĺĽ•éˇą math ĺĽ•ç”¨ĺ° mathematicsă€‚ç”źćç±»äĽĽ
% \begin{quote}
% math, \emph{see} mathematics
% \end{quote}
% çš„ç´˘ĺĽ•ćťˇç›®ă€‚
%
% ä¸Ťčż‡ďĽŚ\LaTeXe{} çš„ |\see| ä¸Ž |\seealso| ĺ‘˝ä»¤ĺą¶ä¸ŤäĽšä¸şäş¤ĺŹ‰ĺĽ•ç”¨çš„ç´˘ĺĽ•éˇąčľ“ĺ‡şéˇµ
% ç&nbsp;ă€‚ć›´ä¸Ąé‡Ťçš„é—®é˘ćŻďĽŚĺ¦‚ćžśĺŻąä¸€ä¸Şç´˘ĺĽ•éˇąä˝żç”¨äş†ĺ¤šć¬ˇäş¤ĺŹ‰ĺĽ•ç”¨ďĽŚĺ™äĽšĺ¤šć¬ˇčľ“ĺ‡şç›¸ĺŚçš„ç›®
% ć&nbsp;‡ĺĽ•ç”¨ă€‚ĺ›&nbsp;ć­¤ĺŹŻč˝ĺ‡şçŽ°čż™ć&nbsp;·çš„ĺ°´ĺ°¬ć•ćžśďĽš
% \begin{quote}
% math, \emph{see} mathematics, \emph{see} mathematics, \emph{see} mathematics
% \end{quote}
% ĺ…¶ä¸­ĺŹŻč˝ĺś¨ä¸‰ä¸Şä¸ŤĺŚçš„ĺś°ć–ąä˝żç”¨äş† \verb=\index{math|see{mathematics}}=ă€‚
%
% \pkg{seealso} ĺ®ŹĺŚ…ĺŤłä¸şč§Łĺ†łčż™ç§Ťé—®é˘č€ŚçĽ–ĺ†™ă€‚ĺŹŞč¦ä˝żç”¨äş†
% \begin{Verbatim}
% \usepackage{seealso}
% \end{Verbatim}
% ĺ™äş¤ĺŹ‰ĺĽ•ç”¨çš„ç´˘ĺĽ•éˇąäĽšĺŚć—¶ćľç¤şéˇµç&nbsp;ďĽŚĺŚć—¶ĺ¤šä¸Şäş¤ĺŹ‰ĺĽ•ç”¨çš„ç›®ć&nbsp;‡ďĽć‘ä»¬ç§°ä¸ş\emph{ĺŹ‚č§
% ĺ—čˇ¨}ďĽ‰äĽšĺĺą¶ćľç¤şă€‚ĺ‰Ťéť˘çš„äľ‹ĺ­ĺ°±ĺŹŻč˝äĽščľ“ĺ‡şďĽš
% \begin{quote}
% math, \seepage{mathematics}{2}, \seepage{mathematics}{4}, \seepage{mathematics}{5}
% \end{quote}
% čż™ć&nbsp;·çš„ć&nbsp;ĽĺĽŹă€‚
%
% \section{ĺŹ‚č€ć‰‹ĺ†Ś}
%
% \subsection{ĺ®ŹĺŚ…č˝˝ĺ…Ą}
%
% ĺźşćś¬çš„ç”¨ćł•ĺ°±ćŻç›´ćŽĄä˝żç”¨
% \begin{Verbatim}
% \usepackage{seealso}
% \end{Verbatim}
% čż™ć&nbsp;· |\see| ĺ’Ś |\seealso| ĺ‘˝ä»¤ĺ°±äĽšč˘«é‡Ťĺ®šäą‰ä¸şć”ŻćŚčľ“ĺ‡şéˇµç&nbsp;ĺ’Śĺĺą¶ç›®ć&nbsp;‡çš„ć&nbsp;ĽĺĽŹă€‚
%
% ćł¨ć„Ź \pkg{seealso} ĺ®ŹĺŚ…çš„č˝˝ĺ…Ąĺş”čŻĄć™šäşŽ \pkg{makeidx}ă€\pkg{imakeidx} ç­‰ĺ®šäą‰
% |\see|ă€|\seealso| çš„ĺ®ŹĺŚ…ďĽŚĺ¦ĺ™ĺ…¶ĺŠźč˝ĺ°†äĽšĺ¤±ć•ă€‚
%
% \subsection{ĺ®ŹĺŚ…é€‰éˇą}
%
% \DescribeOption{override}
% |override| ćŻĺ¸ĺ°”ĺž‹é€‰éˇąďĽŚé»č®¤ä¸ş |true|ă€‚čˇ¨ç¤şč¦†ç›–ĺ·˛ćś‰çš„ |\see| ä¸Ž |\seealso|
% ĺ®šäą‰ă€‚ĺ¦‚ćžśč®ľç˝®
% \begin{Verbatim}
% \usepackage[override=false]{seealso}
% \end{Verbatim}
% ĺ™ä¸ŤĺŻą |\see| ä¸Ž |\seealso| č¦†ç›–ďĽŚč¦ä˝żç”¨ |\seepage| ĺ’Ś
% |\seealsopage| ĺ‘˝ä»¤č°ç”¨ç›¸ĺş”çš„ĺŠźč˝ă€‚
%
% \DescribeOption{activecr}
% |activecr| ćŻĺ¸ĺ°”ĺž‹é€‰éˇąďĽŚé»č®¤ä¸ş |true|ă€‚čˇ¨ç¤şć‰“ĺĽ€ĺś¨ďĽ|.ind| ć–‡ä»¶ä¸­ďĽ‰ç´˘ĺĽ•éˇąčˇŚ
% ćś«č‡ŞĺŠ¨čľ“ĺ‡şć‰€ćś‰ĺŹ‚č§ĺ—čˇ¨çš„ĺŠźč˝ă€‚ĺ¦‚ćžśč®ľç˝® |activecr=false|ďĽŚĺ™ĺż…éˇ»ć‰‹ĺ·ĄďĽé€šĺ¸¸é€š
% čż‡č®ľç˝® Makeindex çš„ |delim_t| ć&nbsp;ĽĺĽŹďĽ‰ĺś¨ç´˘ĺĽ•éˇąćś«ĺŠ&nbsp;ä¸Š |\SeealsoPrintList| čľ“ĺ‡ş
% ĺŹ‚č§ĺ—čˇ¨ă€‚
%
% \subsection{\cs{see} ä¸Ž \cs{seealso} ĺ‘˝ä»¤}
%
% \DescribeMacro{\seepage}
% \DescribeMacro{\seealsopage}
% |\seepage| ä¸Ž |\seealsopage| ćŹäľ›äş†ĺ®ŹĺŚ…çš„ä¸»č¦ĺŠźč˝ďĽŚĺ®ä»¬ä¸ŽĺŽźĺ§‹çš„
% |\see|ă€|\seealso| ĺ‘˝ä»¤ç±»äĽĽćŹäľ›ç´˘ĺĽ•éˇąçš„äş¤ĺŹ‰ĺĽ•ç”¨ĺŠźč˝ďĽŚä˝†ĺŚć—¶äĽščľ“ĺ‡şéˇµç&nbsp;ďĽŚĺą¶éż
% ĺ…Ťé‡Ťĺ¤Ťčľ“ĺ‡şäş¤ĺŹ‰ĺĽ•ç”¨ă€‚äľ‹ĺ¦‚ďĽŚĺś¨ć–‡ćˇŁä¸­ç¬¬ 1, 2, 3 éˇµĺ†ĺ«ĺ¤šć¬ˇä˝żç”¨
% \begin{Verbatim}
% \index{foo|seepage{bar}}
% \end{Verbatim}
% ĺ™ĺś¨ |.ind| ć–‡ä»¶ä¸­äĽšç”źćďĽš
% \begin{Verbatim}
% foo, \seepage{bar}{1}, \seepage{bar}{2}, \seepage{bar}{3}
% \end{Verbatim}
% č€Śčľ“ĺ‡şçš„ç»“ćžśĺ°†äĽšćŻďĽš
% \begin{quote}
% foo, \seepage{bar}{1}, \seepage{bar}{2}, \seepage{bar}{3}
% \end{quote}
%
% ĺŚä¸€ä¸ŞčŻŤĺŹŻä»Ąćś‰ä¸ŤĺŚçš„ĺŹ‚č§ĺĽ•ç”¨éˇąç›®ďĽŚäľ‹ĺ¦‚ĺś¨ä¸ŤĺŚçš„ä˝Ťç˝®ĺ‡&nbsp;ć¬ˇä˝żç”¨
% \begin{Verbatim}
% \index{foo|seepage{bar}}
% \end{Verbatim}
% ĺ’Ś
% \begin{Verbatim}
% \index{foo|seepage{foobaz}}
% \end{Verbatim}
% ĺ™ |.ind| ć–‡ä»¶ä¸­ĺŹŻč˝ç”źćďĽš
% \begin{Verbatim}
% foo, \seepage{bar}{1}, \seepage{bar}{2}, \seepage{foobaz}{3}
% \end{Verbatim}
% äşŽćŻĺ°†ĺľ—ĺ°čľ“ĺ‡şç»“ćžś
% \begin{quote}
% foo, \seepage{bar}{1}, \seepage{bar}{2}, \seepage{foobaz}{3}
% \end{quote}
%
% \DescribeMacro{\seenopage}
% \DescribeMacro{\seealsonopage}
% |\seenopage| ä¸Ž |\seealsonopage| čż™ä¸¤ä¸Şĺ®Źĺ™äżťĺ­äş†ĺś¨č°ç”¨ \pkg{seealso} ĺ®ŹĺŚ…äą‹
% ĺ‰ŤďĽŚ|\see| ä¸Ž |\seealso| çš„ĺŽźĺ§‹ĺ®šäą‰ďĽŚĺ®ä»¬ä¸ŤäĽščľ“ĺ‡şéˇµç&nbsp;ă€‚
%
% \DescribeMacro{\see}
% \DescribeMacro{\seealso}
% ĺś¨é»č®¤çš„ |override| é€‰éˇąä¸‹ďĽŚ|\see| ä¸Ž |\seealso| çš„ĺŠźč˝ä¸Ž
% |\seepage|ă€|\seealsopage| ç›¸ĺŚă€‚
%
% \DescribeMacro{\SeealsoPrintList}
% |\seepage| ĺ’Ś |\seealsopage| äĽšć”¶é›†ĺŹ‚č§ĺ—čˇ¨ďĽŚĺś¨é»č®¤çš„ |activecr| é€‰éˇąä¸ş
% |ture| ć—¶äĽšĺś¨čˇŚćś«č‡ŞĺŠ¨čľ“ĺ‡şă€‚ä˝†ĺ¦‚ćžś |activecr| é€‰éˇąč®ľç˝®ä¸ş |false|ďĽŚĺ™
% |\seepage| ä¸Ž |\seealsopage| ć‰€ĺś¨čˇŚç»“ćťźĺŽä¸ŤäĽšč‡ŞĺŠ¨čľ“ĺ‡şĺŹ‚č§ĺ—čˇ¨ă€‚ć­¤ć—¶ďĽŚĺŹŻä»Ąć‰‹
% ĺ·Ąĺś¨ć­¤čˇŚćś€ĺŽĺŠ&nbsp;ä¸Š |\SeealsoPrintList| ĺ®ŹďĽŚčľ“ĺ‡şĺŹ‚č§ĺ—čˇ¨ă€‚é€šĺ¸¸ĺŹŻä»Ąĺś¨ Makeindex
% çš„ć&nbsp;ĽĺĽŹć–‡ä»¶ä¸­ďĽŚčľ“ĺ‡şć&nbsp;ĽĺĽŹé€‰éˇą |delim_t| é‡Śéť˘ĺŠ&nbsp;ä¸Š |\SeealsoPrintList| ĺ®ŹďĽŚĺ¦‚ďĽš
% \begin{Verbatim}
% % example.ist
% delim_t "\\SeealsoPrintList"
% \end{Verbatim}
% čż™ć&nbsp;·ďĽŚćŻŹä¸Şéťžç©şç´˘ĺĽ•éˇąčľ“ĺ‡şçš„ćś€ĺŽé˝äĽšĺŠ&nbsp;ä¸Š |\SeealsoPrintList|ďĽŚćŚ‰éś€č¦čľ“ĺ‡şĺŹ‚č§ĺ—
% čˇ¨ă€‚
%
% \DescribeMacro{\DeclareSeealsoMacro}
% |\DeclareSeealsoMacro| ĺ‘˝ä»¤ç”¨äşŽç”źćć–°çš„ç±»äĽĽ |\see| ä¸Ž |\seealso| çš„ĺ®Źă€‚ĺ…¶čŻ­
% ćł•ä¸şďĽš
% \begin{quote}
% |\DeclareSeealsoMacro\|\meta{macro}|{|\meta{seelist}|}{|\meta{name}|}|
% \end{quote}
% ĺ…¶ä¸­ |\|\meta{macro} ćŻć–°çš„ĺ®ŹĺŤç§°ďĽŚ\meta{seelist} ćŻć–°çš„ĺŹ‚č§ĺ—čˇ¨
% ĺŤďĽŚ\meta{name} ćŻčľ“ĺ‡şĺŹ‚č§ĺ—čˇ¨ć—¶çš„ĺŤç§°ă€‚ä˝żç”¨čŻĄĺ‘˝ä»¤äĽšç”źćä¸¤ä¸Şĺ®ŹďĽŚä¸€ä¸ŞćŻ
% |\|\meta{macro}ďĽŚä¸€ä¸ŞćŻĺŻąĺş”çš„ĺŤç§° |\|\meta{macro}|name|ă€‚
% |\|\meta{macro}|name| ĺ¦‚ćžśäş‹ĺ…ć˛ˇćś‰ĺ®šäą‰ďĽŚĺ™ĺ®šäą‰ĺ…¶ĺ€Ľä¸ş \meta{name}ďĽŚĺ¦ĺ™äżťćŚä¸Ť
% ĺŹă€‚
%
% äľ‹ĺ¦‚ďĽŚ|\seepage| ĺ’Ś |\seealsopage| ĺ°±ćŻčż™ć&nbsp;·ĺ®šäą‰çš„ďĽš
% \begin{Verbatim}
% \DeclareSeealsoMacro\seepage{see}{see}
% \DeclareSeealsoMacro\seealsopage{also}{see also}
% \end{Verbatim}
% ä¸Ščż°ĺ‘˝ä»¤ĺŚć—¶ĺ®šäą‰äş† |\seename| çš„ĺ¤‡é€‰ĺ€Ľä¸ş |see|ďĽŚä»ĄĺŹŠ |\alsoname| çš„ĺ¤‡é€‰ĺ€Ľä¸ş
% |see also|ă€‚
%
% \subsection{ć&nbsp;ĽĺĽŹč®ľç˝®}
%
% \DescribeMacro{\seealsosetup}
% |\seealsosetup| ĺ‘˝ä»¤ç”¨äşŽč®ľç˝®ĺŹ‚č§ĺ—čˇ¨çš„čľ“ĺ‡şć&nbsp;ĽĺĽŹă€‚ĺ…¶čŻ­ćł•ä¸şďĽš
% \begin{quote}
% |\seealsosetup[|\meta{seelists}|]{|\meta{kv-options}|}|
% \end{quote}
% ĺ…¶ä¸­ďĽŚĺŹŻé€‰ĺŹ‚ć•° \meta{seelists} ćŻä¸€ä¸Şé€—ĺŹ·ĺ†éš”çš„ĺ—čˇ¨ďĽŚćŻŹä¸€éˇąčˇ¨ç¤şč¦č®ľç˝®ĺ…¶ć&nbsp;ĽĺĽŹ
% çš„ĺŹ‚č§ĺ—čˇ¨ďĽŚĺ¦‚ćžśä¸Ťč®ľç˝® \meta{seelists} ć–č®ľä¸şç©şďĽŚĺ™č®ľç˝®é»č®¤çš„čľ“ĺ‡şć&nbsp;ĽĺĽŹă€‚č€Śé€‰
% éˇą \meta{kv-options} ĺ™ćŻčľ“ĺ‡şć&nbsp;ĽĺĽŹéˇąă€‚
%
% ĺŹŻç”¨çš„čľ“ĺ‡şć&nbsp;ĽĺĽŹč§čˇ¨~\ref{tab:outstylezh}ă€‚
% \begin{table}[htbp]
% \centering
% \begin{tabular}{llll}
% \hline
% é€‰éˇą &amp; ć„Źäą‰ &amp; ĺŹ‚ć•° &amp; é»č®¤ĺ€Ľ \\
% \hline
% |name| &amp; čľ“ĺ‡şĺŹ‚č§ĺ—čˇ¨çš„ĺŤç§° &amp; ć—&nbsp; &amp; ďĽä¸ŤĺŹŻç”¨ďĽ‰ \\
% |listsep| &amp; ĺŹ‚č§ĺ—čˇ¨ĺ‰Ťçš„ĺ†éš”ç¬¦ &amp; ć—&nbsp; &amp; \stylemeaning{listsep} \\
% |itemsep| &amp; ĺŹ‚č§ĺ—čˇ¨éˇąé—´çš„ĺ†éš”ç¬¦ &amp; ć—&nbsp; &amp; \stylemeaning{itemsep} \\
% |nameformat| &amp; čľ“ĺ‡şĺŹ‚č§ĺŤâ€śsee alsoâ€ťçš„ć&nbsp;ĽĺĽŹ &amp; |#1| &amp; \stylemeaning{nameformat} \\
% |itemformat| &amp; ĺŹ‚č§ĺ—čˇ¨éˇąçš„ć&nbsp;ĽĺĽŹ &amp; |#1| &amp; \stylemeaning{itemformat} \\
% |pageformat| &amp; éˇµç&nbsp;ć&nbsp;ĽĺĽŹ &amp; |#1| &amp; \stylemeaning{pageformat} \\
% \hline
% \end{tabular}
% \def\tablename{čˇ¨}
% \caption{\cs{seealsosetup} ä˝żç”¨çš„čľ“ĺ‡şć&nbsp;ĽĺĽŹ}\label{tab:outstylezh}
% \end{table}
%
% äľ‹ĺ¦‚ďĽŚĺ¦‚ćžśč¦č®©ć‰€ćś‰ |\seealsopage| ĺ‘˝ä»¤ç”źćçš„éˇµç&nbsp;ä»Ąć–śä˝“ćľç¤şďĽŚĺ°±ĺŹŻä»Ąä˝żç”¨
% \begin{Verbatim}
% \seealsosetup[also]{pageformat=\textit{#1}}
% \end{Verbatim}
%
% é™¤äş†čľ“ĺ‡şć&nbsp;ĽĺĽŹďĽŚ|\seealsosetup| čżćŽĄĺŹ— |enditem| ĺ’Ś |enditem+| é€‰éˇąďĽŚç”¨äşŽč®ľç˝®
% \pkg{seealso} ĺ®ŹĺŚ…ĺś¨ |activecr| é€‰éˇąč®ľç˝®ć—¶ďĽŚčż›ĺ…ĄčˇŚĺ°ľäą‹ĺŽé‡ĺ°ä»€äąč®°ĺŹ·ć—¶ĺ†łĺ®ščľ“
% ĺ‡şĺŹ‚č§ĺ—čˇ¨ă€‚é€šĺ¸¸ć…ĺ†µä¸‹ĺą¶ä¸Ťéś€č¦č®ľç˝®čŻĄé€‰éˇąďĽŚ|enditem| é€‰éˇąçš„é»č®¤ĺ€Ľĺ·˛ç»ŹĺŚ…ć‹¬äş†ĺś¨
% ć&nbsp;‡ĺ‡†çš„ |theindex| çŽŻĺ˘ä¸­äĽšĺ‡şçŽ°çš„ä¸€äş›ĺ®ŹďĽš|\indexspace|ă€|\item|ă€|\subitem|ă€
% |\subsubitem|ă€|\end|ă€‚ä˝żç”¨ |enditem+| é€‰éˇąĺ™ĺŹŻä»Ąĺ‘ĺ—čˇ¨ä¸­ĺ˘žĺŠ&nbsp;ć–°çš„č®°ĺŹ·ă€‚äľ‹
% ĺ¦‚ďĽŚĺ¦‚ćžśćźç§Ťç‰ąć®Šçš„ç´˘ĺĽ•ć”ŻćŚ 4 çş§éˇą |\subsubsubitem| ĺ’Śç‰ąć®Šçš„é—´éš”
% |\myindexspace|ďĽŚĺ°±ĺŹŻä»Ąä˝żç”¨
% \begin{Verbatim}
% \seealsosetup{enditem+={\subsubsubitem,\myindexspace}}
% \end{Verbatim}
% ĺ‘ĺ—čˇ¨ä¸­ć·»ĺŠ&nbsp;ć–°çš„č®°ĺŹ·ă€‚
%
% \DescribeMacro{\SeealsoGobble}
% |\SeealsoGobble| ĺ®ŹćŽĄĺŹ—ä¸€ä¸Şĺ­—ç¬¦ä˝śä¸şĺŹ‚ć•°ďĽŚĺ®ćŁ€ćźĄĺŽéť˘ćŻĺ¦ćś‰ć­¤ĺ­—ç¬¦ďĽŚĺ¦‚ćžśćŻĺ™ĺž
% ćŽ‰ć­¤ĺ­—ç¬¦ĺŹŠĺŽéť˘çš„ç©şć&nbsp;ĽďĽŚĺ¦ĺ™ä»€äąé˝ä¸Ťĺšă€‚ĺś¨ |pageformat| é€‰éˇąä¸­ä˝żç”¨čż™ä¸Şĺ®ŹĺŹŻä»Ąç”¨
% ćťĄç¦ć­˘ćľç¤şĺŹ‚č§éˇąçš„éˇµç&nbsp;ďĽŚĺŹä¸‹éť˘čż™ć&nbsp;·ďĽš
% \begin{Verbatim}
% \seealsosetup[see,also]{pageformat=\SeealsoGobble{,}}
% \end{Verbatim}
%
% \section{ĺ·˛çźĄé—®é˘}
%
% ä»Ąä¸‹ćŻä¸€äş›ĺ·˛çźĄçš„é—®é˘ĺ’Śč§Łĺ†łć–ąćˇďĽš
% \begin{itemize}
% \item
% ç”±äşŽ |\seepage|, |\seealsopage| çš„éˇµç&nbsp;ćľç¤şĺ˝˘ĺĽŹä¸Žć™®é€šéˇµç&nbsp;ç›¸ĺŚďĽŚć‰€ä»ĄĺŹŻč˝äĽšé€&nbsp;ć
% éˇµç&nbsp;é‡ŤĺŹ&nbsp;çš„ć…ĺ†µă€‚ćś€ĺĄ˝ĺ°˝é‡Źéżĺ…Ťäş¤ĺŹ‰ĺĽ•ç”¨çš„éˇąç›®ćś‰ĺ¤šç§Ťĺ˝˘ĺĽŹçš„ç´˘ĺĽ•ă€‚ĺ¦‚ćžśä¸Ťč˝éżĺ…ŤďĽŚä¸ş
% č§Łĺ†łć­¤é—®é˘ďĽŚĺŹŻä»Ąč®ľç˝®ç‰ąĺ«çš„éˇµç&nbsp;čľ“ĺ‡şć&nbsp;ĽĺĽŹä»Ąç¤şĺŚşĺ†ďĽŚć–č€…ĺ€źç”¨ |\SeealsoGobble| č®ľ
% ç˝®ä¸Ťčľ“ĺ‡şéˇµç&nbsp;ă€‚
% \end{itemize}
%
% \StopEventually{}
%
% \clearpage
% \section{Implementation / ä»Łç&nbsp;ĺ®žçŽ°}
%
% \iffalse
%&lt;*package&gt;
% \fi
%
% \subsection{ĺ‡†ĺ¤‡ĺ·Ąä˝ś}
%
% ĺĽ•ĺ…Ąç›¸ĺ…łçĽ–ç¨‹ĺ·Ąĺ…·ă€‚
%
% \pkg{etoolbox} ćŻĺźşćś¬ĺ®Źĺ·Ąĺ…·ă€‚ĺŽźćś‰çš„ \cs{ifinlist} ĺ’Ś \cs{ifinlistcs} ä¸Ťč˝ç”¨
% äşŽĺ¸¦čŠ±ć‹¬ĺŹ·çš„ć–‡ĺ­—çš„ćźĄć‰ľďĽŚäĽšé™ĺ¶ć‘ä»¬çš„ä˝żç”¨ă€‚ä¸şć­¤ćŚ‰ \pkg{etoolbox} ć‰‹ĺ†Śçš„ĺ»şč®®ďĽŚ
% čˇĄĺ……äş† \cs{seealso@ifstrinlist} ĺ’Ś \cs{seealso@ifstrinlistcs} ä¸¤ä¸Şĺ®ŹćťĄĺś¨ĺ—čˇ¨
% ä¸­ćśç´˘ĺ­—ç¬¦ä¸˛ă€‚ĺ®ä»¬äĽšćŻ” \cs{ifinlist} ä¸Ž \cs{ifinlistcs} ć€§č˝ç•Ąĺ·®ä¸€ç‚ąă€‚
% \changes{v1.2}{2017/03/23}{ĺ…č®¸ \cs{see} ç­‰ĺ‘˝ä»¤ĺŹ‚ć•°ä¸­ĺ¸¦čŠ±ć‹¬ĺŹ·ă€‚}
%    \begin{macrocode}
\RequirePackage{etoolbox}
% {&lt;listmacro&gt;}{&lt;string&gt;}{&lt;true&gt;}{&lt;false&gt;}
\long\def\seealso@ifinlist@#1#2#3#4{%
  \def\next{#4}%
  \def\do##1{%
    \ifstrequal{##1}{#2}
      {\def\next{#3}\listbreak}
      {}}%
  \dolistloop{#1}%
  \next}
% {&lt;string&gt;}{&lt;listmacro&gt;}{&lt;true&gt;}{&lt;false&gt;}
\protected\long\def\seealso@ifinlist#1#2{%
  \seealso@ifinlist@{#2}{#1}}
% {&lt;string&gt;}{&lt;listcsname&gt;}{&lt;true&gt;}{&lt;false&gt;}
\protected\long\def\seealso@ifinlistcs#1#2{%
  \expandafter\seealso@ifinlist@\csname #2\endcsname{#1}}
%    \end{macrocode}
% 
% \pkg{kvoptions} ç”¨äşŽĺ¤„ç†ĺ®ŹĺŚ…é€‰éˇąă€‚
%    \begin{macrocode}
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
  family=seealso@opt,
  prefix=seealso@,
  setkeys=\kvsetkeys}
%    \end{macrocode}
%
% ĺŁ°ćŽĺ®ŹĺŚ…é€‰éˇąă€‚
%
% \begin{option}{override}
% \changes{v1.0}{2014/04/05}{ć–°ĺ˘žé€‰éˇąă€‚}
% é‡Ťĺ®šäą‰ |\see| ä¸Ž |\seealso| ä¸şćś‰éˇµç&nbsp;çš„ĺ˝˘ĺĽŹă€‚é»č®¤ć‰“ĺĽ€ă€‚
%    \begin{macrocode}
\DeclareBoolOption[true]{override}
%    \end{macrocode}
% \end{option}
%
% \begin{option}{activecr}
% \changes{v1.0}{2014/04/05}{ć–°ĺ˘žé€‰éˇąă€‚}
% ä˝żç”¨ćŤ˘čˇŚç¬¦ä˝śä¸şčľ“ĺ‡ş |\see| ç­‰ĺ‘˝ä»¤çš„ćŚ‡ä»¤ă€‚é»č®¤ć‰“ĺĽ€ă€‚
%    \begin{macrocode}
\DeclareBoolOption[true]{activecr}
%    \end{macrocode}
% \end{option}
%
% ć‰§čˇŚé€‰éˇąă€‚
%    \begin{macrocode}
\ProcessKeyvalOptions*
%    \end{macrocode}
%
% \begin{macro}{\seealso@charlet}
% ĺŹ‚ć•° |#1| ćŻä¸€ä¸Şĺ­—ç¬¦ć– |\| ĺŠ&nbsp;ĺ­—ç¬¦çš„ĺ˝˘ĺĽŹďĽŚ|\seealso@charlet| ĺ°†ć­¤ĺ­—ç¬¦çś‹ĺšć´»ĺŠ¨
% ĺ­—ç¬¦çš„ĺ®ŹďĽŚä˝żç”¨ |\let| ä¸ŽĺŽéť˘çš„ĺ†…ĺ®ąčµ‹ĺ€ĽďĽŚä˝†ćś¬čş«ä¸Ťć”ąĺŹĺ­—ç¬¦çš„ catcodeă€‚
%    \begin{macrocode}
\def\seealso@charlet#1{%
  \begingroup\lccode`\~=`#1\lowercase{\endgroup\let~}}
%    \end{macrocode}
% \end{macro}
%
% \subsection{ĺŹ‚č§ĺ—čˇ¨ĺŹŠĺ…¶ĺ®žçŽ°}
%
% \begin{macro}{\seealso@macrolist}
% ĺ—čˇ¨č®°ĺ˝•ć‰€ćś‰ç‹¬ç«‹çš„ç±»äĽĽ |\seepage| çš„ĺ®Źă€‚é»č®¤ĺŹŞćś‰ |see| ĺ’Ś |also| ä¸¤ç»„ďĽŚĺŻąĺş”
% ĺ‘˝ä»¤ |\seepage| ĺ’Ś |\seealsopage|ă€‚
%    \begin{macrocode}
\let\seealso@macrolist\empty
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\seealso@clearlist}
% ć¸…ç©şĺŹ‚č§ĺ—čˇ¨ďĽŚĺ¦‚ |\seealso@see@list|ă€|\seealso@also@list|ă€‚
%    \begin{macrocode}
\def\seealso@clearlist#1{%
  \global\cslet{seealso@#1@list}\empty}
\AtBeginDocument{\forlistloop\seealso@clearlist\seealso@macrolist}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\SeealsoPrintList}
% čľ“ĺ‡şĺŹ‚č§ĺ—čˇ¨ďĽŚĺ¦‚ |\seealso@see@list|ă€|\seealso@also@list|ă€‚
%    \begin{macrocode}
\newcommand\SeealsoPrintList{%
  \forlistloop\seealso@printlist\seealso@macrolist
  \forlistloop\seealso@clearlist\seealso@macrolist}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ifseealso@gobblefirstlistsep}
% ćµ‹čŻ•ćŻĺ¦ĺż˝ç•Ąç¬¬ä¸€ä¸Şĺ—čˇ¨ĺ†éš”ç¬¦ďĽĺ›&nbsp;ä¸şĺ‰Ťéť˘ä˝żç”¨äş† |\SeealsoGobble|ďĽ‰ă€‚
%    \begin{macrocode}
\newif\ifseealso@gobblefirstlistsep
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ifseealso@firstitem}
% ćµ‹čŻ•ćŻĺ¦ćŻĺś¨čľ“ĺ‡şĺŹ‚č§ĺ—čˇ¨çš„ç¬¬ä¸€éˇąă€‚
%    \begin{macrocode}
\newif\ifseealso@firstitem
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\seealso@printlist}
% čľ“ĺ‡şĺŹ‚č§ĺ—čˇ¨ |#1|ă€‚ĺ¦‚ćžśĺ—čˇ¨ä¸şç©şĺ™ć—&nbsp;ć“Ťä˝śă€‚
%    \begin{macrocode}
\def\seealso@printlist#1{%
  \ifcsempty{seealso@#1@list}
    {}
    {\ifseealso@gobblefirstlistsep
       \seealso@gobblefirstlistsepfalse
     \else
       \csuse{seealso@#1@listsep}%
     \fi
     \csuse{seealso@#1@nameformat}{\csuse{#1name}}%
     \seealso@firstitemtrue
     \forlistcsloop{\seealso@listitem{#1}}{seealso@#1@list}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\seealso@listitem}
% čľ“ĺ‡şĺŹ‚č§ĺ—čˇ¨çš„ä¸€éˇąă€‚ĺ¦‚ćžśä¸ŤćŻç¬¬ä¸€éˇąďĽŚĺŚć—¶čľ“ĺ‡şĺ†éš”ç¬¦ă€‚
%    \begin{macrocode}
\def\seealso@listitem#1#2{%
  \ifseealso@firstitem
    \seealso@firstitemfalse
  \else
    \csuse{seealso@#1@itemsep}%
  \fi
  \csuse{seealso@#1@itemformat}{#2}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DeclareSeealsoMacro}
% \changes{v1.0}{2014/04/05}{ć–°ĺ˘žä»Ąĺ®šäą‰ć–°çš„ĺŹ‚č§ĺ‘˝ä»¤ă€‚}
% ĺ®šäą‰ä¸€ä¸Şć–°çš„ĺ¸¦éˇµç&nbsp;çš„ĺŹ‚č§ĺ‘˝ä»¤ă€‚|#1| ćŻĺ‘˝ä»¤ĺŤďĽŚ|#2| ćŻčŻĄĺ‘˝ä»¤ä˝żç”¨çš„ĺŹ‚č§ĺ—
% čˇ¨ďĽŚ|#3| ćŻĺ—čˇ¨čľ“ĺ‡şć—¶ä˝żç”¨çš„ĺŤĺ­—ă€‚
%    \begin{macrocode}
\newcommand\DeclareSeealsoMacro[3]{%
%    \end{macrocode}
% é¦–ĺ…ĺ®šäą‰ĺŹ‚č§ĺ‘˝ä»¤ |#1| ćś¬čş«ă€‚
%    \begin{macrocode}
  \newcommand#1[2]{%
    \seealso@setactivecr
    \seealso@ifinlistcs{##1}{seealso@#2@list}
      {}
      {\listcsgadd{seealso@#2@list}{##1}}%
    \csuse{seealso@#2@pageformat}{##2}}%
%    \end{macrocode}
% ĺ°†ĺŹ‚č§ĺ‘˝ä»¤ĺŠ&nbsp;ĺ…Ąĺ—čˇ¨ă€‚
%    \begin{macrocode}
  \listadd\seealso@macrolist{#2}%
%    \end{macrocode}
% ĺ®šäą‰ |name| é€‰éˇąďĽŚç”¨ćťĄč®ľç˝® |\|\meta{macro}|name|ă€‚ĺ¦‚ |\seename| ĺ’Ś
% |\alsoname|ă€‚
%    \begin{macrocode}
  \define@key{seealso@#2}{name}{%
    \csdef{#2name}{##1}}%
%    \end{macrocode}
% ĺ¦‚ćžśäş‹ĺ…ć˛ˇćś‰ĺ®šäą‰ďĽŚĺ™ĺ®šäą‰ |\|\meta{macro}|name| ä¸ş |#3|ă€‚
%    \begin{macrocode}
  \ifcsdef{#2name}
    {}
    {\kvsetkeys{seealso@#2}{name=#3}}%
%    \end{macrocode}
% ĺ®šäą‰ć—&nbsp;ĺŹ‚é€‰éˇąă€‚
%    \begin{macrocode}
  \def\do##1{%
    \define@key{seealso@#2}{##1}{%
      \csdef{seealso@#2@##1}{####1}}%
    \kvsetkeys{seealso@#2}{##1=\csuse{seealso@##1}}}%
  \docsvlist{listsep,itemsep}%
%    \end{macrocode}
% ĺ®šäą‰ćś‰ä¸€ä¸ŞĺŹ‚ć•°çš„é€‰éˇąă€‚
%    \begin{macrocode}
  \def\do##1{%
    \define@key{seealso@#2}{##1}{%
      \csdef{seealso@#2@##1}########1{####1}}%
      \kvsetkeys{seealso@#2}{##1=\csuse{seealso@##1}{####1}}}%
  \docsvlist{nameformat,itemformat,pageformat}}
\@onlypreamble{\DeclareSeealsoMacro}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ifseealso@iscractive}
% ĺ¤ć–­ĺ˝“ĺ‰ŤćŤ˘čˇŚç¬¦ćŻĺ¦ĺ·˛ç»Źč˘«ćż€ć´»ă€‚
%    \begin{macrocode}
\newif\ifseealso@iscractive
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\seealso@setactivecr}
% |activecr| é€‰éˇąä¸şçśźć—¶ďĽŚč®ľç˝®ćŤ˘čˇŚç¬¦ä¸ş |\seealso@cr| ĺą¶ćż€ć´»ă€‚
%    \begin{macrocode}
\def\seealso@setactivecr{%
  \ifseealso@activecr
    \unless\ifseealso@iscractive
      \catcode`\^^M=\active
      \seealso@charlet\^^M\seealso@cr
      \seealso@iscractivetrue
    \fi
  \fi}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\seealso@cr}
% \changes{v1.1}{2014/04/07}{ĺ¤„ç†ćŠčˇŚé—®é˘ă€‚}
% ćŻĺś¨ |activecr| é€‰éˇąä¸‹ďĽŚćŤ˘čˇŚç¬¦çš„ĺ®šäą‰ă€‚ĺ®ćŁ€ćµ‹ĺŽéť˘çš„č®°ĺŹ·ćŻĺ¦ĺś¨
% |\seealso@enditemlist| ä¸­ďĽŚä»Ąĺ¤ć–­ćŻĺ¦ĺ¤„äşŽćŠčˇŚçŠ¶ć€ďĽŚĺ†łĺ®šćŻĺ¦čľ“ĺ‡şĺ—čˇ¨ă€‚
%    \begin{macrocode}
\def\seealso@cr{%
  \futurelet\next\seealso@cr@aux}
%    \end{macrocode}
% |\seealso@cr@aux| ćŻĺ®žé™…ĺ®Śćĺ¤ć–­ćŠčˇŚä¸Žčľ“ĺ‡şçš„čľ…ĺŠ©čż‡ç¨‹ă€‚ĺ¦‚ćžśćŠčˇŚďĽŚĺ™čˇĄĺ…¨ćŠčˇŚé€&nbsp;
% ćçš„ç©şç™˝ďĽ›ĺ¦ĺ™ĺŹ–ć¶ćż€ć´»ćŤ˘čˇŚç¬¦ä¸şĺ®ŹďĽŚĺą¶čľ“ĺ‡şĺŹ‚č§ĺ—čˇ¨ă€‚
%    \begin{macrocode}
\def\seealso@cr@aux{%
  \seealso@testwrap
  \ifseealso@wrap
    \space
  \else
    \catcode`\^^M=5
    \seealso@iscractivefalse
    \SeealsoPrintList
  \fi}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ifseealso@wrap}
% ĺ¤ć–­ĺ˝“ĺ‰ŤćŻĺ¦ĺś¨ćŠčˇŚçš„čˇŚĺ°ľă€‚
%    \begin{macrocode}
\newif\ifseealso@wrap
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\seealso@testwrap}
% ćŁ€ćźĄç”± |\seealso@cr| čŽ·ĺŹ–çš„ä¸‹ä¸€č®°ĺŹ· |\next| ćŻĺ¦ĺś¨ĺ—čˇ¨
% |\seealso@enditemlist| ä¸­ďĽŚçˇ®ĺ®šĺ˝“ĺ‰ŤćŻĺ¦ĺś¨ćŠčˇŚčˇŚĺ°ľă€‚
%    \begin{macrocode}
\def\seealso@testwrap{%
  \seealso@wraptrue
  \forlistloop\seealso@testwrap@aux\seealso@enditemlist}
\def\seealso@testwrap@aux#1{%
  \ifx#1\next
    \seealso@wrapfalse
    \expandafter\listbreak
  \fi}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\seealso@enditemlist}
% čˇ¨ç¤şç´˘ĺĽ•éˇąç»“ćťźçš„č®°ĺŹ·ĺ—čˇ¨ă€‚ç”¨äşŽĺ¤ć–­ćŻĺ¦ĺ¤„äşŽćŠčˇŚçŠ¶ć€ă€‚
%    \begin{macrocode}
\let\seealso@enditemlist\empty
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\seealso@enditemlistadd}
% ĺ‘ç»“ćťźč®°ĺŹ·ĺ—čˇ¨ä¸­ĺ˘žĺŠ&nbsp;ä¸€éˇąă€‚
%    \begin{macrocode}
\def\seealso@enditemlistadd#1{%
  \seealso@ifinlist{#1}\seealso@enditemlist
    {}
    {\listadd\seealso@enditemlist{#1}}}
%    \end{macrocode}
% \end{macro}
% ä¸‹éť˘ĺ®šäą‰ç»“ćťźč®°ĺŹ·ĺ—čˇ¨çš„ĺś¨ |seealso| ć—Źä¸‹çš„é”® |enditem| ä¸Ž |enditem+|ďĽŚĺ…č®¸ç”¨
% ć·č‡Şĺ®šäą‰ć­¤ĺ—čˇ¨ă€‚čż™é‡Śč¦ć±‚ĺ—čˇ¨ć€»ĺŚ…ĺ« |\seealso@cr|ă€‚
%    \begin{macrocode}
\define@key{seealso}{enditem}{%
  \let\seealso@enditemlist\empty
  \listadd\seealso@enditemlist{\seealso@cr}%
  \forcsvlist\seealso@enditemlistadd{#1}}
\define@key{seealso}{enditem+}{%
  \forcsvlist\seealso@enditemlistadd{#1}}
%    \end{macrocode}
% ç»“ćťźč®°ĺŹ·ĺ—čˇ¨çš„é»č®¤ĺ€ĽďĽŚé™¤äş† |\seealso@cr| ĺ¤–ďĽŚčżĺŚ…ć‹¬é€šĺ¸¸ĺś¨ |theindex| ç­‰çŽŻĺ˘
% ä¸­ĺ‡şçŽ°çš„ĺ…¶ä»–ä¸€äş›ĺ®Źă€‚
%    \begin{macrocode}
\kvsetkeys{seealso}{%
  enditem={\indexspace,\item,\subitem,\subsubitem,\end}}
%    \end{macrocode}
%
% ä¸‹éť˘ĺ®šäą‰ĺŹ‚č§ĺ—čˇ¨çš„é»č®¤čľ“ĺ‡şć&nbsp;ĽĺĽŹă€‚ä»Ąä¸‹ĺ®Źç»™ĺ‡şçš„é˝ćŻĺ…¨ĺ±€çš„é»č®¤ĺ€ĽďĽŚĺŹŻä»ĄĺŤ•ç‹¬äż®ć”ąćŻŹ
% ä¸€éˇąçš„čľ“ĺ‡şć&nbsp;ĽĺĽŹă€‚
% \begin{macro}{\seealso@listsep}
% ĺŹ‚č§ĺ—čˇ¨äą‹ĺ‰Ťçš„ĺ†éš”ç¬¦ă€‚
%    \begin{macrocode}
\def\seealso@listsep{,\space}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\seealso@itemsep}
% ĺŹ‚č§ĺ—čˇ¨éˇąäą‹é—´çš„ĺ†éš”ç¬¦ă€‚
%    \begin{macrocode}
\def\seealso@itemsep{,\space}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\seealso@nameformat}
% ĺŹ‚č§ĺŤâ€śsee alsoâ€ťçš„čľ“ĺ‡şć&nbsp;ĽĺĽŹă€‚
%    \begin{macrocode}
\def\seealso@nameformat#1{\emph{#1}\space}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\seealso@itemformat}
% ĺŹ‚č§ĺ—čˇ¨éˇąçš„čľ“ĺ‡şć&nbsp;ĽĺĽŹă€‚
%    \begin{macrocode}
\def\seealso@itemformat#1{#1}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\seealso@pageformat}
% ĺŹ‚č§éˇµç&nbsp;çš„čľ“ĺ‡şć&nbsp;ĽĺĽŹă€‚
%    \begin{macrocode}
\def\seealso@pageformat#1{#1}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\seealso@define@key}
% \begin{macro}{\seealso@define@keyarg}
% ĺ®šäą‰ |seealso| ć—Źçš„é”®ďĽŚç”¨äşŽč®ľç˝®čľ“ĺ‡şć&nbsp;ĽĺĽŹă€‚
%    \begin{macrocode}
\def\seealso@define@key#1{%
  \define@key{seealso}{#1}{%
    \csdef{seealso@#1}{##1}}}
\def\seealso@define@keyarg#1{%
  \define@key{seealso}{#1}{%
    \csdef{seealso@#1}####1{##1}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% ä¸şćŻŹä¸Şčľ“ĺ‡şć&nbsp;ĽĺĽŹĺ®šäą‰é”®ă€‚
%    \begin{macrocode}
\forcsvlist\seealso@define@key{listsep,itemsep}
\forcsvlist\seealso@define@keyarg{nameformat,itemformat,pageformat}
%    \end{macrocode}
%
% \begin{macro}{\SeealsoGobble}
% \changes{v1.0}{2014/04/06}{ć”ŻćŚĺžćŽ‰ĺ†éš”ç¬¦çš„éˇµç&nbsp;ć&nbsp;ĽĺĽŹďĽŚĺŤłä¸Ťćľç¤şéˇµç&nbsp;ă€‚}
% \changes{v1.1}{2014/04/07}{ĺ¤„ç† \pkg{hyperref} ĺ…Ľĺ®ąć€§ă€‚}
% \changes{v1.1}{2014/04/09}{ä¸Ťĺ†Ťč¦ć±‚č®ľç˝® \texttt{listsep} ä¸şç©şă€‚}
% ćŁ€ćźĄĺŽéť˘çš„ĺ­—ç¬¦ćŻĺ¦ |#1|ďĽŚĺ¦‚ćžśćŻĺ™ĺžćŽ‰ĺ†éš”ç¬¦ |#1| ĺŹŠĺŽéť˘çš„ç©şć&nbsp;Ľă€‚čż™ä¸Şĺ®ŹĺŹŻç”¨äşŽ
% č®ľç˝® |pageformat| ć&nbsp;ĽĺĽŹďĽŚĺžćŽ‰ä¸€ä¸Şç±»äĽĽ |,\space| ç±»ĺž‹çš„ĺ†éš”ç¬¦ă€‚
%
% čż™é‡ŚćŁ€ćźĄćŻĺ¦ĺ®šäą‰äş† \pkg{hyperref} çš„ |\hyperindexformat|ďĽčˇ¨ç¤şć‰“ĺĽ€äş†ç´˘ĺĽ•çš„č¶…
% é“ľćŽĄĺŠźč˝ďĽ‰ďĽŚĺ¦‚ćžśćś‰ |\hyperindexformat|ďĽŚĺ™éś€č¦č°ć•´ĺŹ‚ć•°ć¬ˇĺşŹä»Ąč§Łĺ†ł
% |\hyperindexformat| ä¸Ž |\see| ç­‰ĺ‘˝ä»¤ĺµŚĺĄ—çš„é—®é˘ă€‚
%    \begin{macrocode}
\AtBeginDocument{%
  \ifundef\hyperindexformat{%
    \let\SeealsoGobble\seealso@gobble
  }{%
    \def\SeealsoGobble#1{\seealso@swap{\seealso@gobble{#1}}}%
    \def\seealso@swap#1#2#3#4{#2#3#4#1}%
  }}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\seealso@gobble}
% ĺ®žé™…çš„ |\SeealsoGobble| ĺ‘˝ä»¤ďĽŚćŁ€ćźĄĺŽéť˘çš„ĺ­—ç¬¦ćŻĺ¦ |#1|ďĽŚĺ¦‚ćžśćŻĺ™ĺžćŽ‰ĺ†éš”ç¬¦
% |#1| ĺŹŠĺŽéť˘çš„ç©şć&nbsp;Ľă€‚
%    \begin{macrocode}
\def\seealso@gobble#1{%
  \@ifnextchar#1%
    {\seealso@gobbleignorespaces}
%    \end{macrocode}
% ĺ¦‚ćžś |\SeealsoGobble| ĺŽéť˘ĺŤłĺ°†čľ“ĺ‡şďĽŚĺŤłä¸şćŤ˘čˇŚç¬¦ć– |\SeealsoPrintList|ďĽŚĺ™ĺ†łĺ®š
% ĺŽéť˘ä¸Ťĺ†Ťčľ“ĺ‡şç¬¬ä¸€ä¸ŞĺŹ‚č§ĺ—čˇ¨çš„ |listsep|ă€‚
%    \begin{macrocode}
    {\ifseealso@activecr
       \ifx\@let@token\seealso@cr
         \seealso@gobblefirstlistseptrue
       \fi
     \else
       \ifx\@let@token\SeealsoPrintList
         \seealso@gobblefirstlistseptrue
       \fi
     \fi}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\seealso@gobbleignorespaces}
% \changes{v1.1}{2014/04/08}{ć­Łçˇ®ĺ¤„ç† \cs{SeealsoGobble} ĺś¨č‡ŞĺŠ¨ćŠčˇŚä¸‹çš„čˇŚä¸şă€‚}
% ĺžćŽ‰ĺ†éš”ç¬¦ĺŹ‚ć•° |#1|ďĽé€šĺ¸¸ćŻä¸€ä¸Şé€—ĺŹ·ďĽ‰ĺą¶ĺż˝ç•ĄĺŽéť˘çš„ç©şć&nbsp;Ľă€‚
%
% ä¸şäş†ĺ¤„ç†ćŠčˇŚć—¶äĽšé‡ĺ°çš„ćŤ˘čˇŚç¬¦ĺ®Ź |\seealso@cr|ďĽŚĺś¨ĺŹ‘çŽ°ĺŽéť˘çš„ĺŹ‚ć•°ćŻ
% |\seealso@cr| ć—¶ĺ°±é€’ĺ˝’č°ç”¨č‡Şčş«ćŠŠ |\seealso@cr| äąźć¸…é™¤ćŽ‰ă€‚ć­¤ć—¶ĺ°±ĺĄ˝ĺŹç›´ćŽĄćŠŠä¸¤
% čˇŚčżžćŽĄčµ·ćťĄďĽŚä¸Ťĺ†Ťč°ç”¨ |\seealso@cr| çš„ĺ¤Ťćť‚ĺ¤ć–­ćµç¨‹ă€‚
%    \begin{macrocode}
\def\seealso@gobbleignorespaces#1{%
  \@ifnextchar\seealso@cr{\seealso@gobbleignorespaces}{\ignorespaces}}
%    \end{macrocode}
% \end{macro}
%
% \subsection{ĺ®šäą‰ç”¨ć·ćŽĄĺŹŁ}
%
% \begin{macro}{\seealsosetup}
% \changes{v1.0}{2014/04/05}{ć–°ĺ˘žć&nbsp;ĽĺĽŹč®ľç˝®ă€‚}
% \changes{v1.1}{2014/04/09}{ć­Łçˇ®ĺ¤„ç†ćś‰ĺŹ‚ć•°çš„ć&nbsp;ĽĺĽŹă€‚}
% č®ľç˝®čľ“ĺ‡şć&nbsp;ĽĺĽŹă€‚ĺŹŻé€‰ĺŹ‚ć•°ćŻä¸€ä¸Şé€—ĺŹ·ĺ—čˇ¨ďĽšĺ¦‚ćžśĺŹŻé€‰ĺŹ‚ć•°ä¸şç©şďĽŚç”¨ |#2| č®ľç˝®é»č®¤çš„čľ“
% ĺ‡şć&nbsp;ĽĺĽŹďĽ›ĺ¦ĺ™ĺŻąĺŹŻé€‰ĺŹ‚ć•°çš„ćŻŹä¸€éˇąďĽŚč®ľç˝®ĺŹ‚ć•° |#2| çš„ć&nbsp;ĽĺĽŹă€‚ä¸şäş†éżĺ…Ťĺ›&nbsp;ĺµŚĺĄ—ĺ®šäą‰é€&nbsp;
% ćä˝żç”¨ć—¶ĺŹ‚ć•°ä¸Ťĺľ—ä¸Ťä˝żç”¨ĺŹŚé‡Ť |##|ďĽŚčż™é‡Śä˝śäş†ç‰ąĺ«çš„ĺ±•ĺĽ€ĺ¤„ç†ă€‚
%    \begin{macrocode}
\newcommand\seealsosetup[2][]{%
  \ifstrempty{#1}{%
    \kvsetkeys{seealso}{#2}%
  }{%
    \edef\do##1{%
      \noexpand\kvsetkeys{seealso@##1}{\unexpanded{#2}}}%
    \docsvlist{#1}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\seenopage}
% \begin{macro}{\seealsonopage}
% äżťĺ­ć—§çš„ |\see| ä¸Ž |\seealso| ĺ‘˝ä»¤ĺ®šäą‰ďĽŚä˝żç”¨ |override| é€‰éˇąć—¶ĺŹŻä¸´ć—¶ä˝żç”¨ć—§çš„
% ĺ®šäą‰ă€‚
%    \begin{macrocode}
\let\seenopage\see
\let\seealsonopage\seealso
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\seepage}
% \begin{macro}{\seealsopage}
% ĺ¸¦éˇµç&nbsp;čľ“ĺ‡şçš„ |\seepage| ä¸Ž |\seealsopage|ă€‚ä˝żç”¨ |override| é€‰éˇąć—¶ĺŹŻç›´ćŽĄä˝żç”¨
% |\see| ä¸Ž |\seealso| ä»Łć›ż |\seepage| ä¸Ž |\seealsopage|ă€‚
%
% ĺ¦‚ćžśäą‹ĺ‰Ťć˛ˇćś‰ĺ®šäą‰ďĽŚčż™é‡ŚäĽšĺŚć—¶ĺ®šäą‰ |\seename| ĺ’Ś |\alsoname|ďĽŚä¸Ž \pkg{makeidx}
% ĺťĺ§‹ĺ€Ľä¸€č‡´ă€‚
%    \begin{macrocode}
\DeclareSeealsoMacro\seepage{see}{see}
\DeclareSeealsoMacro\seealsopage{also}{see also}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\see}
% \begin{macro}{\seealso}
% ä˝żç”¨ |override| ć—¶ďĽŚé‡Ťĺ®šäą‰ |\see| ä¸Ž |\seealso|ă€‚
%    \begin{macrocode}
\ifseealso@override
  \def\see{\seepage}
  \def\seealso{\seealsopage}
\fi
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \iffalse
%&lt;/package&gt;
% \fi
%
% \Finale
\endinput
</pre></body></html>