使用自定义页码时,我在合并 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}