答案1
完全修改的答案:
可供使用的宏:
\startline[indent]
绘制顶部起始线,可选缩进。
\xdiv
与起跑线相交的垂直线,如 MWE 中的“puzzles”和“are”之间。
\vdiv
不与下划线相交的垂直线,如 MWE 中的“锻炼”和“思想”之间。
\ddiv
不与起跑线相交的对角线,如 MWE 中的“are”和“games”之间。
\diag[mode]{diag-dimen}{diagtext}{horiz-dimen}{horiz-text}
放下一条垂直向下延伸的对角线diagdimen\baselineskip
,将对角线文本放在其上方,然后绘制一条长度的线horiz-dimen\baselineskip
并将水平文本设置在它上面(默认情况下)。如果模式设置为[d]
,则水平线为虚线,水平文本为下划线,就像 MWE 中的单词“yet”一样。如果模式为[b]
,则对角线被空白,就像 MWE 中的单词“exercising”一样。
\dropleg[mode]{dimen}{left-aligned underset}
放下高度为 的垂直支柱dimen\baselineskip
,然后将最后一个参数设置到其右侧。如果mode
是[d]
,则支柱为虚线,如 MWE 中的“are”所示。
\entry{dimen}{text}{aftercode}
一个自包含的下划线条目,例如 MWE 中的“and”。文本居中并带有长度为 的下划线dimen\baselineskip
,后置代码在下划线的右端执行。
\tstrut{dimen}
三角形形状上方有垂直支柱,如下图 MWE 中的“锻炼”所示。\tstrut
物体的高度由数字 确定dimen
,它是 的倍数,应该是两个相邻s\baselineskip
的深度之差。\diag
\leftstep
左侧搭接的阶梯状物体。
参数:
\rlwd
规则宽度;(.5pt)默认。
\tlength
步高和三角腿长,均低于 MWE 中的“锻炼”值;默认值为 1.7ex。
在 MWE 中,您会注意到必须在条目之间手动添加水平空间。此外,为了创建第二行,我将\dropleg
下面的“and”悬空,并用于\vspace
移至较低位置。\vspace
( 16\baselineskip
) 的参数很容易确定,因为\droplegs
“and”前后的维度均为 8。\tstrut
维度为 2 也很容易确定,因为“for”的维度\diag
为 6,而“exercising”的维度\diag
为 4,差值为 2。
\diag
要在单词中间删除 a ,您有两个选择(均显示在 MWE 中):
1)在对角线周围拆分单词,例如newspa\diag{2}{in}{5}{America}pers
, 或
2)将单词放置在比其实际宽度更小的框中,例如\makebox[3ex]{\textcolor{blue}{puzzles}}\diag{4.5}{crossword}{}{}
。
无论哪种情况,你通常都会在单词后面加上一些\hspace
。
由于我无法创建弯曲的弧线,因此“出现”的腿是用作为底集代码的\dropleg
来完成的。\diag
\documentclass{article}
\usepackage[usestackEOL]{stackengine}
\usepackage{graphicx,xcolor}
% DASHED LINE OF SPECIFIED LENGTH
% Based on morsburg at http://tex.stackexchange.com/questions/12537/
% how-can-i-make-a-horizontal-dashed-line/12553#12553
\def\dashfill{\cleaders\hbox to .6em{\rule{1ex}{\rlwd}}\hfill}
\newcommand\dashline[1]{\hbox to #1{\dashfill\hfil}}
%%%%%
\def\rlwd{.5pt}
\def\xdiv{\smash{\rule[-.7071\baselineskip]{\rlwd}{1.5\baselineskip}}}
\def\vdiv{\smash{\rule[-.37\baselineskip]{\rlwd}{1.5\baselineskip}}}
\def\ddiv{\smash{\rotatebox{45}{%
\rule[-.55\baselineskip]{\rlwd}{1.74\baselineskip}}}}
\newlength\tmplen
\newlength\tlength
\tlength=1.7ex\relax
\newcommand\tstrut[1]{\smash{\raisebox{-.35\baselineskip}{%
\def\stackalignment{c}\stackon[0pt]{%
\rotatebox{45}{\rule{\tlength}{\rlwd}}\kern-.2ex%
\raisebox{.7071\tlength}{\rotatebox{-45}{\rule{\tlength}{\rlwd}}}%
}{\rule{\rlwd}{\dimexpr #1\baselineskip-.7071\tlength}}}}%
}
\def\leftstep{\smash{\raisebox{\dimexpr-.3\baselineskip-\rlwd}{%
\llap{\rule[\tlength]{\tlength}{\rlwd}\rule{\rlwd}{\tlength}%
\rule{\tlength}{\rlwd}~~}}}%
}
\newcommand\dropleg[3][s]{\unskip\smash{%
\stackunder[\dimexpr-\dp\strutbox-.7071pt]{%
\if d#1%
\raisebox{-\dp\strutbox}{\rotatebox{-90}{\dashline{#2\baselineskip}}}%
\else%
\rule[\dimexpr-\dp\strutbox-.7071pt-#2\baselineskip]{\rlwd}%
{#2\baselineskip}%
\fi}{#3}}\ignorespaces%
}
\newcommand\entry[3]{\smash{\makebox[0pt][l]{\def\stackalignment{c}%
\stackunder[0pt]{\strut#2}{\rule{0#1\baselineskip}{\rlwd}}#3}}%
}
\newcommand\diag[5][s]{\unskip%
\if b#1\def\dcolor{white}\else\def\dcolor{black}\fi%
\tmplen=#2\baselineskip%
\def\stackalignment{l}\def\useanchorwidth{F}%
\smash{\makebox[0pt][l]{%
\raisebox{\dimexpr-\dp\strutbox-.7071pt}{\rotatebox{-45}{%
\stackon[0pt]{\textcolor{\dcolor}{\rule{1.414\tmplen}{\rlwd}}}{%
\makebox[0pt][l]{\makebox[1.414\tmplen][l]{~~~~\strut#3}%
\if d#1%
\rotatebox{45}{%
\smash{%
\kern-.22\baselineskip\raisebox{-.3\baselineskip}{%
\stackunder[0pt]{\dashline{0#4\baselineskip}}{~~\strut#5}}}%
}%
\else%
\rotatebox{45}{%
\kern-1.02\baselineskip\raisebox{.52\baselineskip}{%
\stackon[0pt]{\rule{0#4\baselineskip}{\rlwd}}{~~\strut#5}}}%
\fi%
}}%
}}}}\ignorespaces%
}
\newcommand\startline[1][0in]{\noindent\hspace{#1}%
\rule{\dimexpr\textwidth-#1}{\rlwd}\par%
\vspace{\dimexpr-\baselineskip-\parskip-\dp\strutbox-.7071pt}\par%
\noindent\hspace{#1}%
}
\begin{document}
\scriptsize\startline
~
\dropleg{2}{%
\diag{5}{Appearing}{3}{
\diag{2}{in}{6}{
\diag{3}{most}{}{}
newspa\diag{2}{in}{5}{America}pers
}
}}
\hspace{1cm}
\makebox[3ex]{\textcolor{blue}{puzzles}}
\diag{4.5}{crossword}{}{}
\hspace{1.5cm}\xdiv\hspace{2cm}
\makebox[1ex]{\textcolor{red}{are}}
\dropleg[d]{8}{\entry{4}{and}{\dropleg[d]{8}{}}}
\hspace{.8cm}\ddiv\hspace{0.4cm}
\diag[d]{5}{challenging}{2.8}{yet}
\textcolor{black!50!green}{games}
\diag{5}{exciting}{}{}
\hspace{1cm}
\diag{6}{for}{7}{\tstrut{2}}
\hspace{1cm}
\diag[b]{4}{exercising}{5}{\leftstep\vdiv~mi\diag{1.5}{the}{}{}nd}
\vspace{16\baselineskip}
\startline[1in]
~\textcolor{blue}{they}
\hspace{1cm}\xdiv\hspace{1cm}
\diag{2}{}{8}{\diag{3}{literate}{}{}people\diag{3}{with}{5}{patience}}
\hspace{.6cm}
\textcolor{red}{give}
\hspace{.6cm}
\vdiv
\hspace{.6cm}
\textcolor{black!50!green}{joy}
\hspace{.6cm}
\ddiv
\hspace{.6cm}
exquisite
\end{document}