我发现自己经常需要检查页面上的某些元素是否完全按照预期对齐。因此,我通常会将输出放大 400%,并在屏幕上使用规则...
不用说,我更希望能够在 (La)TeX 中制定“对齐规则”,但到目前为止还没有找到一个优雅的解决方案。所以这是一个针对比我聪明的人的挑战,其结果可能对比我更懒惰的人有用 :)
实施“对齐规则”:
- 从发出命令的任何地方水平或垂直扩展(2 个不同的命令),
- 向两个方向延伸至页面边框,
- 不要干扰页面的布局,
- 以独特的颜色(红色)显示,并且
- 可选地,可以将其向上/向下移动(对于水平对齐规则)或向左/向右移动(对于垂直对齐规则)给定的距离。
答案1
一种可能性是使用 TikZ;\drawhline
绘制一条水平线和\drawvline
一条垂直线;每个命令都有两个可选参数:第一个命令允许您传递控制线条方面的选项;第二个命令允许您指定水平线的垂直移动,以及垂直线的水平移动:
\documentclass{article}
\usepackage{tikz}
\usepackage{twoopt}
\usepackage{lipsum}
\newcounter{line}
\pgfdeclarelayer{background}
\pgfsetlayers{background,main}
\newcommandtwoopt\drawvline[2][][0pt]{%
\stepcounter{line}%
\begin{tikzpicture}[remember picture,overlay]
\begin{pgfonlayer}{background}
\coordinate (a\theline);
\draw[red,thick,#1]
([xshift=#2]a\theline|-current page.north) -- ([xshift=#2]a\theline|-current page.south);
\end{pgfonlayer}
\end{tikzpicture}%
}
\newcommandtwoopt\drawhline[2][][0pt]{%
\stepcounter{line}%
\begin{tikzpicture}[remember picture,overlay]
\begin{pgfonlayer}{background}
\coordinate (b\theline);
\draw[red,thick,#1]
([yshift=#2]b\theline-|current page.west) -- ([yshift=#2]b\theline-|current page.east);
\end{pgfonlayer}
\end{tikzpicture}%
}
\begin{document}
\lipsum[4]
Some text\drawvline
\lipsum[4]
Some test text goes here\drawhline[magenta]
\lipsum[4]
Some additional text goes here\drawvline[blue,line width=3pt]\drawhline[blue,line width=3pt]
\lipsum[4]
Text\drawvline[green!40!black][-1cm]\drawhline[green!40!black][-1cm]
\end{document}
上述解决方案绘制了扩展整个页面区域的规则;然后只扩展文本区域,tikzpagenodes
促进工作:
\documentclass{article}
\usepackage[a6paper]{geometry}
\usepackage{tikzpagenodes}
\usepackage{twoopt}
\usepackage{lipsum}
\newcounter{line}
\pgfdeclarelayer{background}
\pgfsetlayers{background,main}
\newcommandtwoopt\drawvline[2][][0pt]{%
\stepcounter{line}%
\begin{tikzpicture}[remember picture,overlay]
\begin{pgfonlayer}{background}
\coordinate (a\theline);
\draw[red,thick,#1]
([xshift=#2]a\theline|-current page text area.north) -- ([xshift=#2]a\theline|-current page text area.south);
\end{pgfonlayer}
\end{tikzpicture}%
}
\newcommandtwoopt\drawhline[2][][0pt]{%
\stepcounter{line}%
\begin{tikzpicture}[remember picture,overlay]
\begin{pgfonlayer}{background}
\coordinate (b\theline);
\draw[red,thick,#1]
([yshift=#2]b\theline-|current page text area.west) -- ([yshift=#2]b\theline-|current page text area.east);
\end{pgfonlayer}
\end{tikzpicture}%
}
\begin{document}
\lipsum[4]
Some text\drawvline
\lipsum[4]
Some test text goes here\drawhline[blue,line width=2pt]
\end{document}