ConTeXt
是一种很好的 TeX 格式,因为Metapost
它紧密集成到其中,可以生成像
。
它很容易实现如果你知道Metapost
(我承认我不知道,但正在学习)。以下是从文档中复制粘贴的代码来源从而产生了此页码样式。
\setuppapersize[A4][A4]
\setuplayout[topspace=0.5in, backspace=1in, header=24pt, footer=36pt,
height=middle, width=middle]
\def\MPclipFive#1#2#3#4%
{\startreusableMPgraphic{clip:five:#1#2#3#4}{}
%
delta := #4;
width := #1-delta;
height := #2-delta;
lines := #3;
%
z1 = (0,0);
z2 = (lines,0);
z3 = (.5width,height);
z4 = (width-lines,0);
z5 = (width,0);
%
pickup pencircle
xscaled delta
yscaled .5delta
rotated 30;
%
draw z1--z2{dir 135}...z3...{dir -135}z4--z5 withcolor (.5,.5,.5);
%
pickup pencircle
scaled delta;
%
draw z1 withcolor red;
draw z2 withcolor red;
draw z3 withcolor red;
draw z4 withcolor red;
draw z5 withcolor red;
%
\stopreusableMPgraphic
\reuseMPgraphic{clip:five:#1#2#3#4}{}}
\defineoverlay
[NummerAchtergrond]
[\MPclipFive{\overlaywidth}{\overlayheight}{30pt}{5pt}]
\setuppagenumbering
[\c!location={\v!footer,\v!middle},
\c!command=\NummerCommando]
\unexpanded\def\NummerCommando#1%
{\framed
[\c!background=NummerAchtergrond,
\c!frame=\v!off,
\c!offset=6pt]
{\lower.5\dp\strutbox\hbox spread 60pt{\hss#1\hss}}}
%\setuppagenumbering[location={footer,center}]
\setupbodyfont[11pt,palatino]
\setupindenting[medium,yes]
\starttext
\phantom{Text.}
\vfill
\midaligned{Text.}
\stoptext
虽然我喜欢用 来做其他事情ConTeXt
,但我担心我的技能与我的 LaTeX 经验不相称,无法进行我通常做的一些排版,特别是数学和tikz
图形。幸运的是,人们可以Metapost
在 LaTeX 中使用gmp
包。我已成功使用 的egreg
示例来gmp
制作精美的标题,但由于我对\sbox
和 的\mpdim
工作原理缺乏了解,我无法弄清楚页码的细节。我正在考虑使用 来fancyhdr
集成Metapost
图形以实现效果。这里有一个MWE
可以玩的。
\documentclass[10pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[shellescape,tex]{gmp}
\usepackage{xcolor}
\usepackage{titlesec}
\def\MPclipOne#1#2#3#4#5{\begin{mpost}
w := #1; width := 100; wfactor := w/width;
h := #2; height := 100; hfactor := h/height;
color lightred; lightred := (.90,.50,.50);
color lightgray; lightgray := (.95,.95,.95);
color gray; gray := (.50,.50,.50);
def random_delta (expr d) =
d-(uniformdeviate 2d)
enddef;
z1 = (0,height);
z2 = (0,0);
z3 = (width,0);
z4 = (width,height);
z5 = (width+random_delta(.2width),height+random_delta(.2height));
z6 = (.5width+random_delta(.1width),height+random_delta(.1height));
pickup pencircle
xscaled (#3/wfactor)
yscaled (#3/(2*hfactor))
rotated 30;
draw z5..z1..z2..z3..z4..z6 withcolor #4;
pickup pencircle
xscaled (#3/wfactor)
yscaled (#3/hfactor);
draw z1 withcolor #5;
draw z2 withcolor #5;
draw z3 withcolor #5;
draw z4 withcolor #5;
draw z5 withcolor #5;
draw z6 withcolor #5;
newwidth := (xpart (urcorner currentpicture)) -
(xpart (llcorner currentpicture));
newheight := (ypart (urcorner currentpicture)) -
(ypart (llcorner currentpicture));
currentpicture := currentpicture
xscaled (w/newwidth) yscaled (h/newheight);
\end{mpost}}
\def\MPclipFive#1#2#3#4%
{\begin{mpost}
%
delta := #4;
width := #1-delta;
height := #2-delta;
lines := #3;
%
z1 = (0,0);
z2 = (lines,0);
z3 = (.5width,height);
z4 = (width-lines,0);
z5 = (width,0);
%
pickup pencircle
xscaled delta
yscaled .5delta
rotated 30;
%
draw z1--z2{dir 135}...z3...{dir -135}z4--z5 withcolor (.5,.5,.5);
%
pickup pencircle
scaled delta;
%
draw z1 withcolor red;
draw z2 withcolor red;
draw z3 withcolor red;
draw z4 withcolor red;
draw z5 withcolor red;
%
\end{mpost}}
% I want to combine this with fancyhdr, perhaps, to get the desired result.
\newsavebox{\tacopage}
\newcommand{\tacopagenumber}[1]{%
\sbox\tacopage{#1}%
{\ooalign{%
\MPclipFive{\mpdim{\wd\tacopage}} % width
{\mpdim{\ht\tacopage}} % height
{12}
% thickness of the curve
{(.7,.7,.7)}
% color of the curve
{red}
% color of the spots
\cr\hfill
%\raisebox{\dimexpr.15\ht\tacopage+1.5pc\relax}
{\box\tacopage}\hfill
}}}
% For the section formatting
\newsavebox{\tacochapterbox}
\newcommand{\tacochapterhead}[1]{%
\sbox\tacochapterbox{\Large\bfseries #1}%
{\ooalign{%
\MPclipOne{\mpdim{\wd\tacochapterbox+6pc}} % width
{\mpdim{\ht\tacochapterbox+3pc}} % height
{8}
% thickness of the curve
{(.7,.7,.7)}
% color of the curve
{red}
% color of the spots
\cr\hfill\raisebox{\dimexpr.5\ht\tacochapterbox+1.5pc\relax}
{\box\tacochapterbox}\hfill}}}
\newcommand{\secformat}[1]{\tacochapterhead{\thesection\ \raisebox{-4pt}{\textcolor{green}{\rule{1pt}{\baselineskip}}}\ #1}}
\titleformat{name=\section}[block]
{\large\bfseries\filcenter}{}{0pt}{\secformat}
\titleformat{name=\section,numberless}[block]
{\large\bfseries\filcenter}{}{0pt}{\tacochapterhead}
\begin{document}
%\maketitle
\section{A section}
\tacopagenumber{a try}
\end{document}
输出结果如下: