📄 base.tex
字号:
\Dmakebox{#1}% }%}\providecommand{\Dformatrubric}[1]{\textbf{#1}}\Dprovidelength{\Dprerubricspace}{0.3em}\providecommand{\DNrubric}[1]{% \vspace{\Dprerubricspace}\par\noindent\Dformatrubric{#1}\par%}\providecommand{\Dbullet}{}\providecommand{\Dsetbullet}[1]{\renewcommand{\Dbullet}{#1}}\providecommand{\DNbulletlist}[1]{% \Difinsidetoc{% \Dtocbulletlist{#1}% }{% \Dmakelistenvironment{\Dbullet}{}{#1}% }%}\renewcommand{\@pnumwidth}{2.2em}\providecommand{\DNlistitem}[1]{% \Difinsidetoc{% \ifthenelse{\equal{\theDtoclevel}{1}\and\equal{\Dlocaltoc}{false}}{% {% \par\addvspace{1em}\noindent% \sectfont% #1\hfill\pageref{\DcurrentNlistitemAtocrefid}% }% }{% \@dottedtocline{0}{\Dtocindent}{0em}{#1}{% \pageref{\DcurrentNlistitemAtocrefid}% }% }% }{% \item{#1}% }%}\providecommand{\DNenumeratedlist}[1]{#1}\newcounter{Dsectionlevel}\providecommand{\Dvisitsectionhook}{}\providecommand{\Ddepartsectionhook}{}\providecommand{\Dvisitsection}{% \addtocounter{Dsectionlevel}{1}% \Dvisitsectionhook%}\providecommand{\Ddepartsection}{% \Ddepartsectionhook% \addtocounter{Dsectionlevel}{-1}%}% Using \_ will cause hyphenation after _ even in \textnhtt-typewriter% because the hyphenat package redefines \_. So we use% \textunderscore here.\providecommand{\Dtextunderscore}{\textunderscore}\providecommand{\Dtextinlineliteralfirstspace}{{ }}\providecommand{\Dtextinlineliteralsecondspace}{{~}}\Dprovidelength{\Dlistspacing}{0.8\baselineskip}\providecommand{\Dsetlistrightmargin}{% \ifthenelse{\lengthtest{\linewidth>12em}}{% % Equal margins. \setlength{\rightmargin}{\leftmargin}% }{% % If the line is narrower than 10em, we don't remove any further % space from the right. \setlength{\rightmargin}{0pt}% }%}\providecommand{\Dresetlistdepth}{false}\Dprovidelength{\Doriginallabelsep}{\labelsep}\providecommand{\Dmakelistenvironment}[3]{% % Make list environment with support for unlimited nesting and with % reasonable default lengths. Parameters: % 1. Label (same as in list environment). % 2. Spacing (same as in list environment). % 3. List contents (contents of list environment). \ifthenelse{\equal{\Dinsidetabular}{true}}{% % Unfortunately, vertical spacing doesn't work correctly when % using lists inside tabular environments, so we use a minipage. \begin{minipage}[t]{\linewidth}% }{}% {% \renewcommand{\Dneedvspace}{false}% % \parsep0.5\baselineskip \renewcommand{\Dresetlistdepth}{false}% \ifnum \@listdepth>5% \protect\renewcommand{\Dresetlistdepth}{true}% \@listdepth=5% \fi% \begin{list}{% #1% }{% \setlength{\itemsep}{0pt}% \setlength{\partopsep}{0pt}% \setlength{\topsep}{0pt}% % List should take 90% of total width. \setlength{\leftmargin}{0.05\linewidth}% \ifthenelse{\lengthtest{\leftmargin<1.8em}}{% \setlength{\leftmargin}{1.8em}% }{}% \setlength{\labelsep}{\Doriginallabelsep}% \Dsetlistrightmargin% #2% }{% #3% }% \end{list}% \ifthenelse{\equal{\Dresetlistdepth}{true}}{\@listdepth=5}{}% }% \ifthenelse{\equal{\Dinsidetabular}{true}}{\end{minipage}}{}%}\providecommand{\Dfinalstrut}{\@finalstrut\@arstrutbox}\providecommand{\DAlastitem}[5]{#5\Dfinalstrut}\Dprovidelength{\Ditemsep}{0pt}\providecommand{\Dmakeenumeratedlist}[6]{% % Make enumerated list. % Parameters: % - prefix % - type (\arabic, \roman, ...) % - suffix % - suggested counter name % - start number - 1 % - list contents \newcounter{#4}% \Dmakelistenvironment{#1#2{#4}#3}{% % Use as much space as needed for the label. \setlength{\labelwidth}{10em}% % Reserve enough space so that the label doesn't go beyond the % left margin of preceding paragraphs. Like that: % % A paragraph. % % 1. First item. \setlength{\leftmargin}{2.5em}% \Dsetlistrightmargin% \setlength{\itemsep}{\Ditemsep}% % Use counter recommended by Python module. \usecounter{#4}% % Set start value. \addtocounter{#4}{#5}% }{% % The list contents. #6% }%}% Single quote in literal mode. \textquotesingle from package% textcomp has wrong width when using package ae, so we use a normal% single curly quote here.\providecommand{\Dtextliteralsinglequote}{'}% "Tabular lists" are field lists and options lists (not definition% lists because there the term always appears on its own line). We'll% use the terminology of field lists now ("field", "field name",% "field body"), but the same is also analogously applicable to option% lists.%% We want these lists to be breakable across pages. We cannot% automatically get the narrowest possible size for the left column% (i.e. the field names or option groups) because tabularx does not% support multi-page tables, ltxtable needs to have the table in an% external file and we don't want to clutter the user's directories% with auxiliary files created by the filecontents environment, and% ltablex is not included in teTeX.%% Thus we set a fixed length for the left column and use list% environments. This also has the nice side effect that breaking is% now possible anywhere, not just between fields.%% Note that we are creating a distinct list environment for each% field. There is no macro for a whole tabular list!\Dprovidelength{\Dtabularlistfieldnamewidth}{6em}\Dprovidelength{\Dtabularlistfieldnamesep}{0.5em}\providecommand{\Dinsidetabular}{false}\providecommand{\Dsavefieldname}{}\providecommand{\Dsavefieldbody}{}\Dprovidelength{\Dusedfieldnamewidth}{0pt}\Dprovidelength{\Drealfieldnamewidth}{0pt}\providecommand{\Dtabularlistfieldname}[1]{\renewcommand{\Dsavefieldname}{#1}}\providecommand{\Dtabularlistfieldbody}[1]{\renewcommand{\Dsavefieldbody}{#1}}\Dprovidelength{\Dparskiptemp}{0pt}\providecommand{\Dtabularlistfield}[1]{% {% % This only saves field name and field body in \Dsavefieldname and % \Dsavefieldbody, resp. It does not insert any text into the % document. #1% % Recalculate the real field name width everytime we encounter a % tabular list field because it may have been changed using a % "raw" node. \setlength{\Drealfieldnamewidth}{\Dtabularlistfieldnamewidth}% \addtolength{\Drealfieldnamewidth}{\Dtabularlistfieldnamesep}% \Dmakelistenvironment{% \makebox[\Drealfieldnamewidth][l]{\Dsavefieldname}% }{% \setlength{\labelwidth}{\Drealfieldnamewidth}% \setlength{\leftmargin}{\Drealfieldnamewidth}% \setlength{\rightmargin}{0pt}% \setlength{\labelsep}{0pt}% }{% \item% \settowidth{\Dusedfieldnamewidth}{\Dsavefieldname}% \setlength{\Dparskiptemp}{\parskip}% \ifthenelse{% \lengthtest{\Dusedfieldnamewidth>\Dtabularlistfieldnamewidth}% }{% \mbox{}\par% \setlength{\parskip}{0pt}% }{}% \Dsavefieldbody% \setlength{\parskip}{\Dparskiptemp}% %XXX Why did we need this? %\@finalstrut\@arstrutbox% }% \par% }%}\providecommand{\Dformatfieldname}[1]{\textbf{#1:}}\providecommand{\DNfieldlist}[1]{#1}\providecommand{\DNfield}[1]{\Dtabularlistfield{#1}}\providecommand{\DNfieldname}[1]{% \Dtabularlistfieldname{% \Dformatfieldname{#1}% }%}\providecommand{\DNfieldbody}[1]{\Dtabularlistfieldbody{#1}}\providecommand{\Dformatoptiongroup}[1]{% % Format option group, e.g. "-f file, --input file". \texttt{#1}%}\providecommand{\Dformatoption}[1]{% % Format option, e.g. "-f file". % Put into mbox to avoid line-breaking at spaces. \mbox{#1}%}\providecommand{\Dformatoptionstring}[1]{% % Format option string, e.g. "-f". #1%}\providecommand{\Dformatoptionargument}[1]{% % Format option argument, e.g. "file". \textsl{#1}%}\providecommand{\Dformatoptiondescription}[1]{% % Format option description, e.g. % "\DNparagraph{Read input data from file.}" #1%}\providecommand{\DNoptionlist}[1]{#1}\providecommand{\Doptiongroupjoiner}{,{ }}\providecommand{\Disfirstoption}{% % Auxiliary macro indicating if a given option is the first child % of its option group (if it's not, it has to preceded by % \Doptiongroupjoiner). false%}\providecommand{\DNoptionlistitem}[1]{% \Dtabularlistfield{#1}%}\providecommand{\DNoptiongroup}[1]{% \renewcommand{\Disfirstoption}{true}% \Dtabularlistfieldname{\Dformatoptiongroup{#1}}%}\providecommand{\DNoption}[1]{% % If this is not the first option in this option group, add a % joiner. \ifthenelse{\equal{\Disfirstoption}{true}}{% \renewcommand{\Disfirstoption}{false}% }{% \Doptiongroupjoiner% }% \Dformatoption{#1}%}\providecommand{\DNoptionstring}[1]{\Dformatoptionstring{#1}}\providecommand{\DNoptionargument}[1]{{ }\Dformatoptionargument{#1}}\providecommand{\DNdescription}[1]{% \Dtabularlistfieldbody{\Dformatoptiondescription{#1}}%}\providecommand{\DNdefinitionlist}[1]{% \begin{description}% \parskip0pt% #1% \end{description}%}\providecommand{\DNdefinitionlistitem}[1]{% % LaTeX expects the label in square brackets; we provide an empty % label. \item[]#1%}\providecommand{\Dformatterm}[1]{#1}\providecommand{\DNterm}[1]{\hspace{-5pt}\Dformatterm{#1}}% I'm still not sure what's the best rendering for classifiers. The% colon syntax is used by reStructuredText, so it's at least WYSIWYG.% Use slanted text because italic would cause too much emphasis.\providecommand{\Dformatclassifier}[1]{\textsl{#1}}\providecommand{\DNclassifier}[1]{~:~\Dformatclassifier{#1}}\providecommand{\Dformatdefinition}[1]{#1}\providecommand{\DNdefinition}[1]{\par\Dformatdefinition{#1}}\providecommand{\Dlineblockindentation}{2.5em}\providecommand{\DNlineblock}[1]{% \Dmakelistenvironment{}{% \ifthenelse{\equal{\Dparent}{lineblock}}{% % Parent is a line block, so indent. \setlength{\leftmargin}{\Dlineblockindentation}% }{% % At top level; don't indent. \setlength{\leftmargin}{0pt}% }% \setlength{\rightmargin}{0pt}% \setlength{\parsep}{0pt}% }{% #1% }%}\providecommand{\DNline}[1]{\item#1}\providecommand{\DNtransition}{% \raisebox{0.25em}{\parbox{\linewidth}{\hspace*{\fill}\hrulefill\hrulefill\hspace*{\fill}}}%}\providecommand{\Dformatblockquote}[1]{% % Format contents of block quote. % This occurs in block-level context, so we cannot use \textsl. {\slshape#1}%}\providecommand{\Dformatattribution}[1]{---\textup{#1}}\providecommand{\DNblockquote}[1]{% \Dmakebox{% \Dformatblockquote{#1} }%}\providecommand{\DNattribution}[1]{% \par% \begin{flushright}\Dformatattribution{#1}\end{flushright}%}% Sidebars:\RequirePackage{picins}% Vertical and horizontal margins.\Dprovidelength{\Dsidebarvmargin}{0.5em}\Dprovidelength{\Dsidebarhmargin}{1em}% Padding (space between contents and frame).\Dprovidelength{\Dsidebarpadding}{1em}% Frame width.\Dprovidelength{\Dsidebarframewidth}{2\fboxrule}% Position ("l" or "r").\providecommand{\Dsidebarposition}{r}% Width.\Dprovidelength{\Dsidebarwidth}{0.45\linewidth}\providecommand{\DNsidebar}[1]{ \parpic[\Dsidebarposition]{% \begin{minipage}[t]{\Dsidebarwidth}% % Doing this with nested minipages is ugly, but I haven't found % another way to place vertical space before and after the fbox. \vspace{\Dsidebarvmargin}% {% \setlength{\fboxrule}{\Dsidebarframewidth}% \setlength{\fboxsep}{\Dsidebarpadding}% \fbox{%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -