我正在处理 LaTeX 中的文本(我的系统上安装了 TeXLive 2017),如果有任何方法可以“保存”单词的水平位置(单词的开头、中点或结尾),以便我可以从我保存的水平位置开始下一行,这将非常有帮助。
下面的例子表达了我所想的意思:
\documentclass[11pt,a4paper]{article}
\usepackage{tabto}
\begin{document}
\noindent What I'd like to do is the following: I'm writing something, then I make a jump
\newline
\noindent\phantom{jump} from the end of last word
\newline
\noindent\phantom{jump from the end of last wo}or the midpoint
\newline
\noindent\phantom{jump from the end of last woor the }or the beginning of it
\end{document}
显然,我首先必须打开pdflatex
该文件,然后发现输出 pdf 文件的第二行以单词“jump”开头,然后回到我的 .tex 文件,\nextline
在输入“从最后一个单词的末尾”之前执行并幻影出单词“jump”,然后pdflatex
再次打开该文件,依此类推。
我真正想要做的是定义一个命令(或者使用它,如果它已经存在),以便在几次pdflatex
执行中,我可以获得与以下内容相同的结果:
\documentclass[11pt,a4paper]{article}
\usepackage{tabto}
\begin{document}
\noindent What I'd like to do is the following: I'm writing something, then I make a \xendsave{jump}{\xPosTag}
\newline
\noindent \xskipto{\xPosTag} from the end of last \xmidsave{word}{\xPosTag}
\newline
\noindent \xskipto{\xPosTag} or the \xbeginsave{midpoint}{\xPosTag}
\newline
\noindent \xskipto{\xPosTag} or the beginning of it
\end{document}
如有任何建议,我们将不胜感激:)提前谢谢
费德里科
编辑:根据建议,我使用了该zref
包,以及tabto
(我用它来跳到保存的 x 位置)和xfp
(用于计算)。
以下是我所取得的成果:
\documentclass[11pt,a4paper]{article}
\usepackage{tabto}
\usepackage[savepos]{zref}
\usepackage{xfp}
\newcommand{\xsptolinepospt}[1]{
\fpeval{#1/65536.-(1in+\hoffset+\oddsidemargin)}
}
\newcommand{\xcapoend}[1]{
#1\zsaveposx{xendtag}
\newline
\noindent \tabto{\xsptolinepospt{\zposx{xendtag}} pt}
}
\newcommand{\xcapobegin}[1]{
\zsaveposx{xbegintag}#1
\newline
\noindent \tabto{\xsptolinepospt{\zposx{xbegintag}} pt}
}
\newcommand{\xcapomiddle}[1]{
\zsaveposx{xbegintagg}#1\zsaveposx{xendtagg}
\newline
\noindent \tabto{\xsptolinepospt{ \fpeval{ 0.5*(\zposx{xbegintagg}+\zposx{xendtagg})} } pt}
}
\begin{document}
\noindent What I'd like to do is the following: I'm writing something,
then I make a \xcapoend{jump}from
the end of last\xcapomiddle{word}or
the\xcapobegin{midpoint}or the beginning of it
\end{document}
我的代码不太优雅。但是,它工作正常;它要求我pdflatex
多次访问文件才能收敛到所需的结果,一旦我看到它发生,我就认为这是可以预料到的,因为它的zsavepos
工作方式(就我所能理解的而言)。