\startenvironment doc-env
\usemodule[zhfonts]
\definefont[kaiti][name:kaiti]
\usecolors[svg]
%\showgrid
\setupinteraction[state=start,
focus=standard,
color=darkblue,
title={ConTeXt 蹊径},
author={李延瑞 (
[email protected])},
keyword={TeX, ConTeXt MkIV, ConTeXt LMTX, LuaTeX, LuaMetaTeX}]
% 书签
\setupinteractionscreen[option=bookmark]
\placebookmarks[title,chapter,section][chapter]
% 版式
\setuppapersize[A4][A4]
\setuplayout[backspace=2.5cm,width=16.5cm,
topspace=1.5cm,header=1.5cm,
height=27.2cm,footer=1cm]
%\showframe
% 段落首行缩进、行间距
\setupindenting[first,always,2em]
\setupinterlinespace[line=3.7ex]
% 关闭页码,后面会在页眉设置页码
\setuppagenumbering[location=]
% 丑度
%\setuptolerance[horizontal,stretch]
% 图片目录
\setupexternalfigures[directory={./figures}]
% 标题设置
\setupheads[indentnext=yes]
\setuphead[title][incrementnumber=list]
\setuphead
[title,chapter]
[style=\bfb,header=empty,footer=empty,before=,after={\blank[2*line]},align=center]
\setuphead[chapter][alternative=inmargin]
\setuphead[subject,section][style=\bfa,before={\blank},after={\blank}]
\setuphead[subsubject,subsection][style=\bf,before={\blank},after={\blank}]
\definehead[TOC][title]
\setuphead[TOC][before={\blank[quarterline]},after={\blank[quarterline]}]
% 目录列表
\setupcombinedlist[content][list={title,chapter,section},criterium=text]
\def\PageNumber#1{\underbars{#1}.} % 给页码增加下划线
\setuplist
[title]
[alternative=a,
before={\blank[halfline]},
after={\blank[halfline]},
style=bold,
pagecommand=\PageNumber,
pagestyle=smallbold,
width=fit]
\def\ChapterNumber#1{\doiftext{#1}{第 #1 章\quad}} % 若 #1 是存在,则将其中文化
\setuplist
[chapter]
[alternative=a,
before={\blank[halfline]},
after={\blank[halfline]},
style=bold,
width=fit,
pagenumber=no,
numbercommand=\ChapterNumber]
\def\PageNumber#1{\underbars{#1}.}
\setuplist
[section]
[alternative=d,
style=normal,
numberstyle=bold,
pagecommand=\PageNumber,
pagestyle=smallitalic]
% 页眉:通用
\startsetups HeaderFooter
\setupheadertexts[][pagenumber][pagenumber][]
\setupheader[style=\tfx]
\stopsetups
% 页眉:body 部分
\startsetups BodyHeaderFooter
\def\CurrentChapter{%
第 \headnumber[chapter]\ 章\kern 1em\getmarking[chapter]%
}
\def\CurrentSection{%
\headnumber[section]%
\hbox to 2em{}%
\getmarking[section]%
}
\setupheadertexts[\CurrentChapter][pagenumber][pagenumber][\CurrentSection]
\setupheader[style=\tfx]
\stopsetups
% 脚注里的中文断行
\startsetups footnote:hanzi
\setscript[hanzi]
\stopsetups
\setupnote[footnote][textstyle=\bold,setups={footnote:hanzi}]
\setupnotation[footnote][way=bypage] % 来自 wolfgang 的 tip
% 汉化
\setuplabeltext[en][chapter={第 , 章\kern.5em}]
\setuplabeltext[en][figure={图 }]
\setuplabeltext[en][table={表 }]
\setupheadtext[en][pubs={\bfc 参考文献}]
\setupheadtext[en][content={\bfc 目录}]
%---- 列表 ----
\setupfloats[indentnext=yes]
\setupcaptions[style=\tfx, headstyle=\normal, align=center]
%\setupitemize[each][packed,serried,inmargin][margin=2em]
\setupitemize[each][distance=.4em]
\setupinmargin[left,right][style=\tfx]
\definedescription
[definition]
[location=top,hang=20,width=broad,indenting=always,style=\ss,headstyle=\bf]
% 表格标题
\setupcaption
[table]
[headstyle=normal,style=small,location=top]
% 抄录
\setuplinenumbering[style=small]
%\setuptyping[option=color,palet=graypretty,
% before={\blank[.5em]\setupinterlinespace[line=1.2em]},
% after={\blank[.5em]}]
\startuniqueMPgraphic{blue box}
path p, q;
w := \overlaywidth; h := \overlayheight;
p := (3mm, 0) -- (0, 0) -- (0, h) -- (3mm, h);
q := (w - 3mm, 0) -- (w, 0) -- (w, h) -- (w - 3mm, h);
pickup pencircle scaled 2pt;
draw p withcolor \MPcolor{lightsteelblue};
draw q withcolor \MPcolor{lightsteelblue};
\stopuniqueMPgraphic
\defineoverlay[blue box][\uniqueMPgraphic{blue box}]
\defineframedtext
[blueframe]
[frame=off,background={blue box},
offset=0pt,loffset=.5em,roffset=.5em,before={\blank},after={\blank[.95em]}]
\setuptyping
[before={\startblueframe[width=\textwidth]},after={\stopblueframe},escape=yes]
\startuniqueMPgraphic{blue box2}
path p;
numeric s;
w := \overlaywidth; h := \overlayheight;
p := (0, 0) -- (0, h) -- (w, h) -- (w, 0) -- cycle;
pickup pencircle scaled 2pt;
s := .1 * h;
if s < 2mm:
s := 2mm;
fi
draw p randomized s withcolor \MPcolor{lightsteelblue};
\stopuniqueMPgraphic
\defineoverlay[blue box2][\uniqueMPgraphic{blue box2}]
\def\bluebox#1{%
\kern.25em%
\inframed[frame=off,background={blue box2},offset=0pt,loffset=.25em,roffset=.25em]{#1}%
\kern.25em%
}
\def\blueframed#1{%
\kern.25em%
\framed[frame=off,background={blue box2},offset=0pt,loffset=.25em,roffset=.25em]{#1}%
\kern.25em%
}
\defineframedtext[blueframedtext][offset=0pt,frame=off,background={blue box2},width=\textwidth]
% 红色背景框
\def\redbox#1{%
\inframed[frame=off,background=color,backgroundcolor=indianred,offset=4pt]{#1}%
}
% ---------- sample ----------------------
\definebuffer[sample]
\definefloat[Sample][Samples]
\setuplabeltext[en][Sample={示例 }]
% 参数为一个放在页面右侧的盒子,基于该盒子的宽度,计算其左侧空间宽度
\def\defineLeftWidth#1{%
\newdimen\LeftWidth
\LeftWidth=\textwidth
\newdimen\RightObjectWidth
\RightObjectWidth=\wd#1
\ifdim\RightObjectWidth>0pt
\advance\LeftWidth by -\RightObjectWidth
\advance\LeftWidth by -1em
\fi
}
\def\sample[#1][#2]#3#4{%
\setbox\scratchbox\hbox{#4}%
\defineLeftWidth{\scratchbox}%
\placeSample[here][#2]{#3}{%
\hbox to \textwidth{%
\hbox{\typesample[#1,
before={\startblueframe[width=\LeftWidth]},
after={\stopblueframe}]}\hss\unhbox\scratchbox}%
}%
}
\def\simplesample[#1]#2{%
\setbox\scratchbox\hbox{#2}%
\defineLeftWidth{\scratchbox}%
\placeSample[here,none][]{}{%
\hbox to \textwidth{%
\hbox{\typesample[#1,
before={\startblueframe[width=\LeftWidth]},
after={\stopblueframe}]}\hss\unhbox\scratchbox}%
}%
\blank[back]
}
% 修改 MPcode 代码部分高亮颜色
\definestartstop
[MetapostSnippetName]
[color=darkblue,
style=boldface]
\definestartstop
[MetapostSnippetNamePrimitive]
[color=darkgreen,
style=boldface]
\def\BibTeX{B\scale[height=.5em]{IB}\TeX}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 参考文献 GB
\input bib-style
\stopenvironment