带有记忆图片和自定义页码的 Tikz 图像

带有记忆图片和自定义页码的 Tikz 图像

使用自定义页码时,我在合并 TIKZ 图片时遇到问题。

我修改了页码,如最上面的答案所示这里

绘制简单的 TIKZ 图像时,我收到错误! Illegal unit of measure (pt inserted).

我尝试了很多种方法,发现问题出在 tikzmark 和 tikz 选项的组合上remember picture

问题在 MWE 中如下所示。如果remember picture删除该选项,则一切正常,但 tikz-image 的位置会偏移,这对我来说是不可行的。

我已经尝试过的:

  • \thepage使用括号、其他符号等修改命令{}。我发现在章节和页码之间添加.而不是-可以解决问题,因为 tikz 似乎将其解释为有效的浮点数。
  • 在图片开始前重置页面样式 -> 完全没有效果

我在 Windows 机器上使用 pdflatex。

梅威瑟:

\documentclass[english,footsepline,listof=totoc]{scrartcl}
\usepackage{tikz}
    \usetikzlibrary{tikzmark}
    \renewcommand{\thepage}{\arabic{section}-\arabic{page}}
\begin{document}
\tikzmark{mark1}

Text

\tikz[overlay,remember picture]\draw[red,] ({pic cs:mark1} |- 2,2) -- (3,3 |- 4,4);
\end{document}

答案1

针对导致该问题的问题发布了修复程序,以响应如何让 tikzpicture(带有“记住图片”和“tikzmark”)与 SIG ACM 模板一起工作?。(那里的问题不同,所以你的问题不是重复的,但根本原因是相同的。)

我相信该修复可能会在 的下一版本中完成tikzmark。基本上,你只需要将其改为tikzmark使用\arabic{page}而不是\thepage,这样会让它更加强大。

以下代码应该可以修复\pgfmark涉及的情况tikzpicture。其他问答中没有提到这一点,但我认为在涉及 Ti 的更复杂情况下需要这样做Z 也一样,比如使用\subnode

\documentclass[english,footsepline,listof=totoc]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\makeatletter
\tikzset{
  every picture/.append style={%
    execute at end picture={%
      \ifpgfrememberpicturepositiononpage%
      \edef\pgf@temp{%
        \noexpand\write\noexpand\pgfutil@auxout{%
          \string\savepicturepage{\pgfpictureid}{\noexpand\arabic{page}}}}%
      \pgf@temp
      \fi%
    },
  },
}
\renewcommand\pgfmark[1]{%
    \bgroup
    \global\advance\pgf@picture@serial@count by1\relax%
    \edef\pgfpictureid{pgfid\the\pgf@picture@serial@count}%
      \pgfsys@markposition{\pgfpictureid}%
    \edef\pgf@temp{%
      \noexpand\write\noexpand\pgfutil@auxout{%
        \string\savepicturepage{\pgfpictureid}{\noexpand\arabic{page}}}}%
    \pgf@temp
    \protected@write\pgfutil@auxout{}{%
      \string\savepointas{\tikzmark@pp@name{#1}}{\pgfpictureid}{0pt}{0pt}}%
    \egroup
  }
\makeatother
\renewcommand{\thepage}{\arabic{section}-\arabic{page}}
\begin{document}
\tikzmark{mark1}

Text

\tikz[overlay,remember picture]\draw[red,] ({pic cs:mark1} |- 2,2) -- (3,3 |- 4,4);
\end{document}

相关内容