![书写练习纸 - 点状字母](https://linux22.com/image/262409/%E4%B9%A6%E5%86%99%E7%BB%83%E4%B9%A0%E7%BA%B8%20-%20%E7%82%B9%E7%8A%B6%E5%AD%97%E6%AF%8D.png)
我想制作类似以下的写作练习纸。
如何制作这样的“虚线”字体?
我在这个论坛上看到的最接近的如何使用 pdflatex 将文本转换为路径?但我不知道是否\pscharpath
可以修改/用于完成这项工作。或者也许有 TikZ 解决方案?
更新。我的计划是使用反复试验的方法定位水平线。或者,有没有其他方法可以自动获取小写字母和大写字母的正确高度?
答案1
这看起来与您想要的类似。宏是:
\setline{<scale factor>}{<text>}
测量文档字体中缩放的大写和小写 x 的高度来绘制线条。虚线效果来自\pdfliteral{q 1 Tr [1 4]0 d}#2\pdfliteral{Q}
:
pdf 命令记录在PDF 参考第 4 章
q
保存图形状态1 Tr
描摹字形的轮廓,而不是填充它[1 4]0 d
将描边样式设置为(几乎)以破折号开头的1
虚线4
。Q
表示将图形状态恢复到原来的状态
编辑:显然,上述设置在某种程度上取决于查看器。给定的 Sumatra 设置给出的输出如下图所示。要使用 Adobe Reader(至少是我的版本)获得“相同”的输出,请将上面给出的行更改为:
\pdfliteral{q 1 Tr [.1 .4]0 d .1 w}#2\pdfliteral{Q}
我尝试了来自LaTeX 字体目录虽然大多数都有效,但有些却无效(特别是 Calligra...不知道为什么)。正如评论中提到的,如果你能找到合适的字体,那么这可能对你有用。下面是几个输出示例:
\documentclass{article}
\usepackage{graphicx}
\usepackage{dashrule}
\newsavebox\myboxX
\newsavebox\myboxx
\newdimen\heightX
\newdimen\heightx
\newcommand{\setline}[2]{%
\savebox\myboxX{\scalebox{#1}{X}}%
\savebox\myboxx{\scalebox{#1}{x}}%
\heightX=\ht\myboxX
\heightx=\ht\myboxx
\noindent\ooalign{\rule[\heightX]{\textwidth}{.1pt}\cr
\noindent\hdashrule[\heightx]{\textwidth}{.1pt}{1mm}\cr
\noindent\rule{\textwidth}{.1pt}\cr
\noindent\scalebox{#1}{#2}\scalebox{#1}{\pdfliteral{q 1 Tr [1 4]0 d}#2\pdfliteral{Q}}}%
% For Adove, use this setting rather than the one above.
%\noindent\scalebox{#1}{#2}\scalebox{#1}{\pdfliteral{q 1 Tr [.1 .4]0 d .1 w}#2\pdfliteral{Q}}}%
}
\begin{document}
\setline{5}{Abc}\vspace{1cm}
\setline{5}{De}\vspace{1cm}
\end{document}