diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /info/latex2e-help-texinfo/graphics/asy |
Initial commit
Diffstat (limited to 'info/latex2e-help-texinfo/graphics/asy')
-rw-r--r-- | info/latex2e-help-texinfo/graphics/asy/list.asy | 236 |
1 files changed, 236 insertions, 0 deletions
diff --git a/info/latex2e-help-texinfo/graphics/asy/list.asy b/info/latex2e-help-texinfo/graphics/asy/list.asy new file mode 100644 index 0000000000..1a6c5fdb39 --- /dev/null +++ b/info/latex2e-help-texinfo/graphics/asy/list.asy @@ -0,0 +1,236 @@ +import settings; +// settings.outformat="pdf"; + +unitsize(1pt); + +void leftbar(picture pic, pair a, pair d, pen p=currentpen) +{ + picture opic; + // was: Draw(opic,-0.5d--0.5d,p+solid); + Draw(opic,-0d--0.5d,p+solid); + add(pic,opic,a); +} +picture leftbar(pair a, pair d, pen p=currentpen) +{ + picture pic; + leftbar(pic,a,d,p); + return pic; +} +void rightbar(picture pic, pair a, pair d, pen p=currentpen) +{ + picture opic; + // was: Draw(opic,-0.5d--0.5d,p+solid); + Draw(opic,-0.5d--0d,p+solid); + add(pic,opic,a); +} +picture rightbar(pair a, pair d, pen p=currentpen) +{ + picture pic; + leftbar(pic,a,d,p); + return pic; +} + +arrowbar BeginLeftBar(real size=0) +{ + return new bool(picture pic, path g, pen p, margin margin) { + real size=size == 0 ? barsize(p) : size; + leftbar(pic,point(g,0),size*dir(g,0)*I,p); + return true; + }; +} + +arrowbar LeftBar(real size=0) +{ + return new bool(picture pic, path g, pen p, margin margin) { + int L=length(g); + real size=size == 0 ? barsize(p) : size; + leftbar(pic,point(g,L),size*dir(g,L)*I,p); + return true; + }; +} +arrowbar EndLeftBar(real size=0)=LeftBar; + +arrowbar LeftBars(real size=0) +{ + return new bool(picture pic, path g, pen p, margin margin) { + real size=size == 0 ? barsize(p) : size; + BeginLeftBar(size)(pic,g,p,margin); + EndLeftBar(size)(pic,g,p,margin); + return true; + }; +} +arrowbar BeginRightBar(real size=0) +{ + return new bool(picture pic, path g, pen p, margin margin) { + real size=size == 0 ? barsize(p) : size; + rightbar(pic,point(g,0),size*dir(g,0)*I,p); + return true; + }; +} + +arrowbar RightBar(real size=0) +{ + return new bool(picture pic, path g, pen p, margin margin) { + int L=length(g); + real size=size == 0 ? barsize(p) : size; + rightbar(pic,point(g,L),size*dir(g,L)*I,p); + return true; + }; +} +arrowbar EndRightBar(real size=0)=LeftBar; + +arrowbar RightBars(real size=0) +{ + return new bool(picture pic, path g, pen p, margin margin) { + real size=size == 0 ? barsize(p) : size; + BeginRightBar(size)(pic,g,p,margin); + EndRightBar(size)(pic,g,p,margin); + return true; + }; +} +arrowbar BeginLeftBar=BeginLeftBar(), + LeftBar=LeftBar(), + EndLeftBar=EndLeftBar(), + LeftBars=LeftBars(), + BeginRightBar=BeginRightBar(), + RightBar=RightBar(), + EndRightBar=EndRightBar(), + RightBars=RightBars(); + +// Simulate text lines +real em=10pt; // Computer Modern +real baselineskip=1.2*em; +real textpen_wd=0.8*em; +pen textpen = linewidth(textpen_wd)+mediumgray+squarecap+opacity(0.5); // simulate text lines +pen surrounding_environmentpen = textpen; // simulate text lines +pen labelpen = black+font("OT1","cmr","m","it")+fontsize(7); + +// basic list +real pagewidth=8cm; +real pageleftmargin=0.25cm; +real pagerightmargin=0.25cm; +real baseline; // keep track of vert location of baseline + +int num_lines_above = 2; +int num_lines_first_item_first_paragraph = 3; +int num_lines_first_item_second_paragraph = 1; +int num_lines_second_item = 3; +int num_lines_below = 2; + +// list parameters +// LaTeX's book 10 defaults; not suitable for illustration +// real leftmargin=2.5*em; +// real rightmargin=0*em; +// real topsep=8pt; +// real parskip=0pt; +// real partopsep=2pt; +// real labelwidth=leftmargin; +// real labelsep=0.5*em; +// real parsep=4pt; +// real itemindent=parsep; +// real listparindent=itemindent; +// real itemsep=4pt; +// parameters shown on the diagram +real leftmargin=2.5*em; +real rightmargin=1.5*em; +real topsep=8pt; +real parskip=4pt; +real partopsep=2pt; +real labelwidth=3em; +real labelsep=0.5*em; +real parsep=4pt; +real itemindent=16pt; +real listparindent=5pt; +real itemsep=8pt; + +real labelleftedge = (pageleftmargin+leftmargin+itemindent)-(labelwidth+labelsep); +real labelrightedge = labelleftedge+labelwidth; + +// helper lines +// draw((pageleftmargin+leftmargin,0)--(pageleftmargin+leftmargin,-30),green); +// draw((pageleftmargin+leftmargin+itemindent,0)--(pageleftmargin+leftmargin+itemindent,-30),green); +// draw((pageleftmargin+leftmargin+itemindent-labelwidth,0)--(pageleftmargin+leftmargin+itemindent-labelwidth,-30),blue); +// draw((pageleftmargin+leftmargin+itemindent-labelwidth-labelsep,0)--(pageleftmargin+leftmargin+itemindent-labelwidth-labelsep,-30),red); + +path lne; + +// lines above list +baseline=0; +lne = (pageleftmargin,baseline)--(pagewidth-pagerightmargin,baseline); +draw(lne,surrounding_environmentpen); +for (int line_no=0; line_no<(num_lines_above-1); ++line_no) { + baseline = baseline-baselineskip; + lne=(pageleftmargin,baseline)--(pagewidth-pagerightmargin,baseline); + draw(lne,surrounding_environmentpen); +} +label("Surrounding environment, preceding material",(0.5*(pageleftmargin+pagewidth-pagerightmargin),baseline),labelpen); +real bot_preceding_material = baseline-0.5*textpen_wd; + +// list first item +baseline=baseline-baselineskip-topsep-parskip-partopsep; +real top_item_one = baseline+0.5*textpen_wd; +draw((labelleftedge,baseline)--(labelrightedge,baseline),textpen); // label +label("Label",(0.5*(labelleftedge+labelrightedge),baseline),labelpen); +draw((labelrightedge+labelsep,baseline)--(pagewidth-pagerightmargin-rightmargin,baseline),textpen); // rest of label line +label("\makebox[0em][l]{First item}",((pageleftmargin+leftmargin)+3.5em,baseline),labelpen); +for (int line_no=0; line_no<(num_lines_first_item_first_paragraph-1); ++line_no) { + baseline = baseline-baselineskip; + draw((pageleftmargin+leftmargin,baseline)--(pagewidth-pagerightmargin-rightmargin,baseline),textpen); +} +real bot_item_one_par_one = baseline-0.5*textpen_wd; + +// first item's second paragraph +baseline = baseline-baselineskip-parsep; +real top_item_one_par_two = baseline+0.5*textpen_wd; +draw((pageleftmargin+leftmargin+listparindent,baseline)--(pagewidth-pagerightmargin-rightmargin,baseline),textpen); +label("\makebox[0em][l]{First item, second paragraph}",((pageleftmargin+leftmargin)+3.5em,baseline),labelpen); +for (int line_no=0; line_no<(num_lines_first_item_second_paragraph-1); ++line_no) { + baseline = baseline-baselineskip; + draw((pageleftmargin+leftmargin,baseline)--(pagewidth-pagerightmargin-rightmargin,baseline),textpen); +} +real bot_item_one = baseline-0.5*textpen_wd; + +// list second item +baseline=baseline-baselineskip-itemsep-parsep; +real top_item_two = baseline+0.5*textpen_wd; +draw((labelleftedge,baseline)--(labelrightedge,baseline),textpen); // label +label("Label",(0.5*(labelleftedge+labelrightedge),baseline),labelpen); +draw((labelrightedge+labelsep,baseline)--(pagewidth-pagerightmargin-rightmargin,baseline),textpen); // rest of label line +label("\makebox[0em][l]{Second item}",((pageleftmargin+leftmargin)+3.5em,baseline),labelpen); +for (int line_no=0; line_no<(num_lines_second_item-1); ++line_no) { + baseline = baseline-baselineskip; + draw((pageleftmargin+leftmargin,baseline)--(pagewidth-pagerightmargin-rightmargin,baseline),textpen); +} +real bot_item_two = baseline-0.5*textpen_wd; + +// lines after list +baseline=baseline-baselineskip-topsep-parsep-partopsep; +real top_following_material = baseline+0.5*textpen_wd; +label("Surrounding environment, following material",(0.5*(pageleftmargin+pagewidth-pagerightmargin),baseline),labelpen); +draw((pageleftmargin,baseline)--(pagewidth-pagerightmargin,baseline),surrounding_environmentpen); +for (int line_no=0; line_no<(num_lines_below-1); ++line_no) { + baseline = baseline-baselineskip; + draw((pageleftmargin,baseline)--(pagewidth-pagerightmargin,baseline),surrounding_environmentpen); +} + +// vertical markers +real v_x = pagewidth-pagerightmargin+6pt; +draw(Label("{\scriptsize $v_0$}",red),reverse((v_x,bot_preceding_material)--(v_x,top_item_one)),red,bar=LeftBars); +draw(Label("{\scriptsize $v_1$}",red),reverse((v_x,bot_item_one_par_one)--(v_x,top_item_one_par_two)),red,bar=LeftBars); +draw(Label("{\scriptsize $v_2$}",red),reverse((v_x,bot_item_one)--(v_x,top_item_two)),red,bar=LeftBars); +draw(Label("{\scriptsize $v_3$}",red),reverse((v_x,bot_item_two)--(v_x,top_following_material)),red,bar=LeftBars); + +// horizontal markers +real h_y_top = top_item_one+3pt; +draw(Label("{\scriptsize $h_0$}",blue),reverse((labelleftedge,h_y_top)--(labelrightedge,h_y_top)),blue,bar=LeftBars); +draw(Label("{\scriptsize $h_1$}",blue),reverse((labelrightedge,h_y_top)--(labelrightedge+labelsep,h_y_top)),blue,bar=LeftBars); + +real h_y_mid = bot_item_one-3pt; +draw(Label("{\scriptsize $h_2$}",blue),(pageleftmargin+leftmargin,h_y_mid)--(pageleftmargin+leftmargin+listparindent,h_y_mid),blue,bar=LeftBars); + +real h_y_bot = bot_item_two-3pt; +draw(Label("{\scriptsize $h_3$}",blue),(pageleftmargin,h_y_bot)--(pageleftmargin+leftmargin,h_y_bot),blue,bar=LeftBars); +draw(Label("{\scriptsize $h_4$}",blue),(pageleftmargin+leftmargin,h_y_bot)--(pageleftmargin+leftmargin+itemindent,h_y_bot),blue,bar=LeftBars); +draw(Label("{\scriptsize $h_5$}",blue),(pagewidth-pagerightmargin-rightmargin,h_y_bot)--(pagewidth-pagerightmargin,h_y_bot),blue,bar=LeftBars); + + |