%% This is a LaTeX2e package for the CTeX FAQ document. %% %% Created by aloft (aloft@ctex.org) %% %% 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'.