我怎样才能让我的 TikZ 覆盖图片保持在同一页面上?

我怎样才能让我的 TikZ 覆盖图片保持在同一页面上?

我需要绘制正方形来突出显示子矩阵,我在互联网上(也许是这里)找到了一个使用 TikZ 的代码片段。顺便说一句,我发现如果数学表达式在页面末尾,则正方形将在下一页绘制。请编译以下代码以pdflatex了解我的意思。如果删除“a”段落,则会得到正确的行为。

我该如何解决这个问题?还有更好的解决方案吗?

\documentclass[11pt,a4paper]{article} 
\usepackage{blindtext}
\newcommand{\pder}[2]{\frac{\partial #1}{\partial #2}}

\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing,intersections,shapes.arrows}
\usetikzlibrary{calc}
\usetikzlibrary{matrix,positioning}

\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture]\node(#1){};}
\newcommand{\DrawBox}[1][]{%
    \tikz[overlay,remember picture]{
    \draw[#1]
      ($(left)+(-0.5em,1.2em)$) rectangle
      ($(right)+(0.5em,-0.5em)$);}
}

\begin{document}

    \blindtext[3]

    a

    a

    a

    a

    a

    a

    a

        \[
        J(\psi \circ \phi^{-1})\big|_{\phi(q)} = \left(
        \begin{array}{cccc}
            \tikzmark{left}\pder{y^1}{x^1} & \ldots &\pder{y^1}{x^{n-1}} &\pder{y^1}{x^{n}} \\
            \vdots & &\vdots &\vdots \\
            \pder{y^{n-1}}{x^1} &\ldots &\pder{y^{n-1}}{x^{n-1}}\tikzmark{right} &\pder{y^{n-1}}{x^n} \\
            0 &\ldots &0 & \pder{y^n}{x^n} \\
        \end{array}\right) \phi(q)
        \]
        \DrawBox[dashed]

        \blindtext[6]
\end{document}

答案1

你可能正在用 s 数组进行实验,a填满一个页面,直到 TeX 认为该页面已满并将其发送出去,就像你编写了如下代码一样

....
a

a

\[
math formula contents
\] 
\newpage %<============ 
\DrawBox[dashed]

...

因此,您通过 s 提供相对位置\tikzmark,它们将.aux根据当前页面(!)。在下一次运行中,它们将从文件中读取.aux。但由于您使用的代码片段不了解页码,因此它现在被推送到新页面之后并自动放置在新页面上。

当您将\DrawBox[dashed]命令放入显示数学中时,粗略地说,它被视为独立项目,因为它按原样放置在页面中,如果不适合,则推送到新页面。但\DrawBox始终会在放置公式的同一页面上执行。

长话短说,将\DrawBox[dashed]显示数学里面的命令移动为最后一项。

    \[
    J(\psi \circ \phi^{-1})\big|_{\phi(q)} = \left(
    \begin{array}{cccc}
        \tikzmark{left}\pder{y^1}{x^1} & \ldots &\pder{y^1}{x^{n-1}} &\pder{y^1}{x^{n}} \\
        \vdots & &\vdots &\vdots \\
        \pder{y^{n-1}}{x^1} &\ldots &\pder{y^{n-1}}{x^{n-1}}\tikzmark{right}%
            &\pder{y^{n-1}}{x^n} \\
        0 &\ldots &0 & \pder{y^n}{x^n} \\
    \end{array}\right) \phi(q)
    \DrawBox[dashed]
    \]

相关内容