%% This is a LaTeX2e package for the CTeX FAQ document.
%%
%% Created by aloft (
[email protected])
%%
%% Version 0.8 (24-May-2009)
%%
%% $Id: ctex-faq.sty 83 2007-01-30 09:48:43Z aloft $
%%
\def\filedate{2009/05/24}
\def\fileversion{0.8}
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{ctex-faq}[\filedate\space\fileversion\space(Chinese TeX FAQ macros)]
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Options
%
\newif\ifnewfaqmark
\newfaqmarktrue
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Loading packages
%
%
\RequirePackage{ifpdf}
\RequirePackage[UTF8,fancyhdr]{ctex}
\ifpdf
\RequirePackage[pdftex,%
unicode,%
bookmarksnumbered,%
colorlinks,%
linkcolor=blue,%
hyperindex,%
plainpages=false,%
pdfstartview=FitH]{hyperref}
\else
\RequirePackage[dvipdfm,%
unicode,%
bookmarksnumbered,%
colorlinks,%
linkcolor=blue,%
hyperindex,%
plainpages=false,%
pdfstartview=FitH]{hyperref}
\fi
%
%
\RequirePackage{color,verbatim,cite}
\RequirePackage{texnames,makeidx,indentfirst}
\RequirePackage{amsmath,amssymb,amsfonts,bm,manfnt}
\RequirePackage{textcomp}
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Typesetting TeX names
%
%
\DeclareRobustCommand\CTeX{$\mathbb{C}$\kern-.05em\TeX}
\DeclareRobustCommand\MiKTeX{MiK\TeX}
\DeclareRobustCommand\fpTeX{fp\TeX}
\DeclareRobustCommand\teTeX{te\TeX}
\DeclareRobustCommand\ConTeXt{Con\TeX{}t}
\DeclareRobustCommand\TeXLive{\TeX{}Live}
%
\newcommand\PS{PostScript}
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Modifing Styles
%
%
\setlength{\parskip}{0.75ex plus .2ex minus .5ex}
\renewcommand{\baselinestretch}{1.2}
%
% we don't want headings
\pagestyle{plain}
%
% we `number' our sections alphabetically
\renewcommand{\thesection}{\Alph{section}}
%
% we use superscript numerical citation with brackets
\def\@cite#1{\textsuperscript{[#1]}}
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Redefine some commands and environments
%
%
\newcommand*\contrib[2][]{{\it #2}\hspace*{1ex}%
\def\reserved@a{#1}%
\ifx\reserved@a\@empty
(no email)
\else
(\href{mailto:#1}{#1})
\fi}
%
% Quoted URL
\newcommand\faqurl[1]{\begin{quote}\url{#1}\end{quote}}
%
% Make index entry
\newcommand\faqindex[1]{\index{#1}#1}
%
% Quoted verbatim environment
\@namedef{prompt}{\quote\verbatim}
\expandafter\def\csname endprompt\endcsname {\endverbatim\endquote}
%
%
\newenvironment{lined}[1]%
{\begin{center}\begin{minipage}{#1}\hrule\medskip}
{\vspace{-1ex}\hrule \end{minipage}\end{center}}
%
% Marginal notes
\newcommand{\MarginalNotes}[1]{%
\hskip 1sp \marginpar{\small\sffamily\raggedright #1}}
%
% Set RCS Keywords
\def\RCS{\RCS@process}
\def\RCS@process$#1: #2 ${%
\def\RCS@keyword{#1}%
\def\RCS@value{#2}%
\ifx\RCS@value\empty%
\def\RCS@value{N/A}%
\fi%
\@ifundefined{RCS@handle\RCS@keyword}%
{\expandafter\edef\csname RCS\RCS@keyword\endcsname{\RCS@value}}%
{\csname RCS@handle\RCS@keyword\endcsname}}
\def\RCS@handleDate{%
\ifx\RCS@value{N/A}%
\def\RCSDate\today%
\let\RCSTime\relax%
\else%
\expandafter\RCS@setDate\RCS@value\@nil%
\fi}
\def\RCS@setDate#1-#2-#3 #4\@nil{%
\def\RCSday{#3}%
\def\RCSmonth{#2}%
\def\RCSyear{#1}%
\def\RCSDate{\begingroup%
\day \number\RCSday%
\month \number\RCSmonth%
\year \number\RCSyear%
\today\endgroup}
\def\RCSTime{#4}}
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Typesetting Commands
%
%
\newenvironment{latexcmd}%
{\list{}{}\item\relax%
\begin{tabular}{|l|}\hline\rule{0pt}{1em}\ignorespaces\small}%
{\\\hline\end{tabular}\endlist}
%
%
% Index entry for an command
\newcommand\bs{\texorpdfstring{\texttt{\symbol{92}}}{\textbackslash}} %Print backslash
\def\cmdname{Commands}
\newcommand\cmdindex[1]{%
\index{\cmdname!#1@\texttt{\bs#1}}%
\index{#1@\texttt{\hspace*{-1.2ex}\bs #1}}}
\newcommand\cmd[1]{\cmdindex{#1}\texttt{\bs#1}} %Print command
\newcommand\cs[1]{\texttt{\bs#1}} %Print command without index
%
% Index entry for an package
\def\pkgname{Packages}
\newcommand\pkgindex[1]{%
\index{\pkgname!#1@\textsf{#1}}%
\index{#1@\textsf{#1}}}
\newcommand\pkg[1]{\pkgindex{#1}\textsf{#1}} %Print package
%
% Index entry for an environment
\def\envname{Environments}
\newcommand\envindex[1]{%
\index{\envname!#1@\texttt{#1}}%
\index{#1@\texttt{#1}}}
\newcommand\env[1]{\envindex{#1}\texttt{#1}}
%
% Argument and optional argument
\def\parg#1{\mbox{$\langle${\it #1\/}$\rangle$}}
\def\@smarg#1{{\tt\string{}\parg{#1}{\tt\string}}}
\def\@marg#1{{\tt\string{}{\rm #1}{\tt\string}}}
\def\marg{\@ifstar\@smarg\@marg}
\def\@soarg#1{{\tt[}\parg{#1}{\tt]}}
\def\@oarg#1{{\tt[}{\rm #1}{\tt]}}
\def\oarg{\@ifstar\@soarg\@oarg}
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Typesetting Code Fragments
%
%
%% using listings.sty
%%\lstset{language=[LaTeX]TeX}
%%\lstset{framexleftmargin=5pt, frame=shadowbox, rulesepcolor=\color{blue}}
%%\lstset{xleftmargin=20pt, xrightmargin=20pt}
%%\lstset{breaklines=false}
%%\lstnewenvironment{code}[2][]
%% {\lst@TestEOLChar{#2}%
%% \lstset{#1}%
%% \csname\@lst @SetFirstNumber\endcsname}
%% {\csname\@lst @SaveFirstNumber\endcsname}
%%
%% using verbatim.sty
%%\@namedef{code}{\quote\begingroup\@verbatim\frenchspacing\@vobeyspaces\verbatim@start}
%%\expandafter\def\csname endcode\endcsname {\endverbatim\endquote}
%
%
% This part is hacked from the verbatim.sty and lshort.sty
%
\definecolor{example@bkcolor}{gray}{.875}
%
\newwrite\example@out
\def\example@start{%
\begingroup% Lets Keep the Changes Local
\@bsphack
\immediate\openout \example@out \jobname.exa
\let\do\@makeother\dospecials\catcode`\^^M\active
\def\verbatim@processline{%
\immediate\write\example@out{\the\verbatim@line}}%
\verbatim@start}
\def\example@finish{\immediate\closeout\example@out\@esphack\endgroup}
\def\example@code#1#2{%
\colorbox{#1}{%
\begin{minipage}[c]{#2}%
\small\verbatiminput{\jobname.exa}%
\end{minipage}%
}%
}
\def\example@output#1{%
\let\savefboxrule\fboxrule%
\let\savefboxsep\fboxsep%
\setlength{\fboxrule}{0.1pt}%
\setlength{\fboxsep}{3mm}%
\fbox{%
\begin{minipage}[c]{#1}%
\setlength{\fboxrule}{\savefboxrule}%
\setlength{\fboxsep}{\savefboxsep}%
\setlength{\parskip}{1ex plus 0.4ex minus 0.2ex}%
\begin{trivlist}\item\small\input{\jobname.exa}\end{trivlist}
\end{minipage}
}%
}
%
% This is two environments to set LaTeX examples.
%
% example: On the left side the source text and on the
% right side the typeset text.
%
\newenvironment{example}%
{\example@start}%
{\example@finish%
\list{}{\itemindent-\leftmargin}\item\relax%
\makebox[\textwidth][c]{%
\example@code{example@bkcolor}{0.5\textwidth}%
\hspace{10pt}%
\example@output{0.4\textwidth}%
}%
\endlist}
%
% code: Only the source text
%
\newenvironment{code}%
{\example@start}%
{\example@finish%
\list{}{\itemindent-\leftmargin}\item\relax%
\makebox[\textwidth][c]{%
\example@code{example@bkcolor}{0.96\textwidth}%
}%
\endlist}
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Dangerous and doubly dangerous bends
%
%
\newlength{\dbend@width}
\newlength{\ddbend@width}
\newlength{\dbend@voffset}
\def\setdbend@width{%
\settowidth{\dbend@width}{\dbend}%
\setlength{\ddbend@width}{\dbend@width}%
\multiply\dbend@width by 2%
\multiply\ddbend@width by 3%
\advance\ddbend@width by 1pt%
\settoheight{\dbend@voffset}{\dbend}%
\multiply\dbend@voffset by 22%
\divide\dbend@voffset by 15%
\advance\dbend@voffset by -\baselineskip}
%
% This parts is hacked from TeXbook
%
\def\d@nger{\begingroup\clubpenalty=10000\def\par{\endgraf\endgroup}
\setdbend@width\noindent\hangindent\dbend@width\hangafter=-2
\lower-\dbend@voffset\hbox to0pt{\hskip-\hangindent\dbend\hfill}}
%
\def\dd@nger{\begingroup\clubpenalty=10000\def\par{\endgraf\endgroup}
\setdbend@width\noindent\hangindent\ddbend@width\hangafter=-2
\lower-\dbend@voffset\hbox to0pt{\hskip-\hangindent\dbend\kern1pt\dbend\hfill}}
%
\def\danger{\d@nger}
\def\ddanger{\dd@nger}
\def\enddanger{\endgraf\endgroup}
%
%
\newenvironment{advanced}{\CJKfamily{kai}}{\CJKfamily{com}}
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Typesetting Questions
%
%
\setcounter{tocdepth}{3}
\setcounter{secnumdepth}{3}
\renewcommand\appendix{\par\setcounter{secnumdepth}{-1}}
%
% tableofcontents definition from article.cls
\renewcommand\tableofcontents{%
\pdfbookmark[1]{\contentsname}{contents}%
\section*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{toc}%
}
%
% thebibliography definition from article.cls
\renewenvironment{thebibliography}[1]
{\section{\refname}%
\@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}%
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
\sloppy
\clubpenalty4000
\@clubpenalty \clubpenalty
\widowpenalty4000%
\sfcode`\.\@m}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
%
% theindex definition from article.cls
\renewenvironment{theindex}
{\if@twocolumn
\@restonecolfalse
\else
\@restonecoltrue
\fi
\columnseprule \z@
\columnsep 35\p@
\twocolumn[\section{\indexname}]%
\@mkboth{\MakeUppercase\indexname}%
{\MakeUppercase\indexname}%
\thispagestyle{plain}\parindent\z@
\parskip\z@ \@plus .3\p@\relax
\let\item\@idxitem}
{\if@restonecol\onecolumn\else\clearpage\fi}
%
% section definition from article.cls
\renewcommand\section{\@startsection {section}{\@ne}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus .2ex}%
{\normalfont\Large\bfseries}}
\renewcommand*\l@section[2]{%
\ifnum \c@tocdepth >\z@
\addpenalty\@secpenalty
\addvspace{1.0em \@plus\p@}%
\setlength\@tempdima{1.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\endgroup
\fi}
%
% This parts is hacked from faq.sty of UKTUG
%
% subsections: these are a curious half-breed between latex sections
% and subsections -- as designed, i'm not intending there ever to be
% more than 9 per section (hahaha)
\renewcommand\subsection{\@startsection{subsection}{\tw@}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\large\bfseries}}
\renewcommand*\l@subsection[2]{%
\ifnum \c@tocdepth >\@ne
\addpenalty\@secpenalty
\addvspace{0.5em \@plus\p@}%
\setlength\@tempdima{2.3em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\endgroup
\fi}
%
%
% the question structure
%
\ifx\faqlastver\undefined
\let\faqlastver\faqversion
\fi
%
%
\newcommand\listofnewfaqs{\@starttoc{lon}}
\newcommand\listofrevfaqs{\@starttoc{lor}}
\newcommand\tableofnewfaqs{\@starttoc{ton}}
\newcommand\tableofrevfaqs{\@starttoc{tor}}
%
%
\newcommand{\FAQChangeList}{\clearpage%
\ifx\faqlastver\faqversion
\section{ChangeList of v\faqversion}
\else
\section{ChangeList of v\faqlastver\ --\ v\faqversion}
\fi
\subsection*{New}\begin{small}\tableofnewfaqs\end{small}
\subsection*{Revised}\begin{small}\tableofrevfaqs\end{small}
\vspace{\stretch{1}}
\ifx\RCSDate\undefined\else
\noindent\begin{small}(Last updated: \CTEXoptions[today=small]\RCSDate)\end{small}
\fi}
%
%
\newif\ifquestion@new
\question@newfalse
\def\question@ver#1.#2|#3.#4\@nil{%
\question@newtrue
\ifnum#3<#1 \question@newfalse
\else \ifnum#3=#1 \ifnum#4<#2 \question@newfalse \fi \fi
\fi}
\def\question@chk#1#2#3#4#5#6{%
\expandafter\question@ver\faqlastver|#6\@nil%
\ifquestion@new
\addtocontents{#1}{\protect\ref{#4}}
\addcontentsline{#2}{question}{\protect\numberline{\thequestion}#5}
\ifnewfaqmark
\marginpar{\vspace{-1em}\small\sffamily\raggedright{\color{red}#3}\\v#6}
\fi
\fi}
%
%
% Question[label name]{question asked}{imported version}{revised version}
% if [label name] present, the named label is assigned with Qlabel
\newcounter{question}
\newcommand\Question[4][]{%
\qu@stion{#2}%
\def\reserved@a{#1}%
\ifx\reserved@a\@empty
\PackageWarning{ctex-faq}{Question "#2" has no label}%
\def\reserved@a{Q-\thequestion}
\fi
\Qlabel{\reserved@a}%
\question@chk{lon}{ton}{New}{\reserved@a}{#2}{#3}
\ifquestion@new\else
\question@chk{lor}{tor}{Revised}{\reserved@a}{#2}{#4}
\fi
}
\newcommand\qu@stion{\@startsection{question}{\thr@@}{\z@}%
{-3.25ex \@plus -1ex \@minus -.2ex}%
{0.75ex \@plus .2ex}%
{\normalfont\normalsize\bfseries}%
}
\newcommand*\questionmark[1]{}
\newcommand*\l@question{\@dottedtocline{2}{2.0em}{2.3em}}
\newcommand*\toclevel@question{2}
%
%
% Qlabel and Qref: define and refer to labels
\def\Qname{Question}
% hyperref version of label doesn't get set until begin document
\AtBeginDocument{\let\Qlabel\label}
\newcommand\Qref[2][\Qname]{{#1}~\ref{#2}}
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
\endinput
%%
%% End of file `ctex-faq.sty'.