\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