防止 \tikzmark 命令引入额外的空格

防止 \tikzmark 命令引入额外的空格

我正在使用这个问题的答案:在多页边距中绘制 tikz 线在我的文档的边缘画一条彩色线。

我希望可以注释掉环境定义并获取没有彩色线条的相同文档。但是当我用空环境定义替换轮廓环境定义时,文档的对齐方式不同。

梅威瑟:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{tikzmark}

\newenvironment{outline}{\ignorespaces}{\ignorespaces}

\newcounter{markid}
% Comment this out to disable the marking of text:
\renewenvironment{outline}{\tikzmark{begin\themarkid}}{\ignorespaces\tikzmark{begin\themarkid}}

\begin{document}
\section{Section}
\begin{outline}

\begin{figure}[h!]
\caption{caption}
\end{figure}

Paragraph1
\end{outline}
\end{document}

当取消注释时,上面的例子会有额外的空白空间\renewenvironment

到目前为止,我想到的唯一解决方案是注意环境的开始/结束标记与段落位于一个块中。(因此,在我看来, \tikzmark 命令使 LaTeX 创建一个额外的空段落。)

还有其他解决方案可以确保\tikzmark命令不会改变文档的轮廓吗?

答案1

tikzmark 可以引入空白,因为 tikz 图片是在水平框中排版的,所以即使该框没有大小,它也可以随着 TeX 从垂直模式切换到水平模式(在您的情况下)切换回垂直模式而改变垂直间距。

为了避免这种情况,有一个命令\pgfmark可以完成相同的操作\tikzmark,但没有方框。据我所知,它可以消除文档中的额外空间。

相关内容