为什么 \renewcommand 不会覆盖 tikzscale 中的 \includegraphics?

为什么 \renewcommand 不会覆盖 tikzscale 中的 \includegraphics?

我有以下 tex 代码

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{tikz}
\usepackage{tikzscale}
\usepackage{filecontents}
\usepackage{graphicx}

\renewcommand{\includegraphics}[2][]{%
  \setlength{\fboxsep}{-\fboxrule}% 
  \framebox{\rule{0pt}{0.6\linewidth}\rule{\linewidth}{0pt}}% 
}

\begin{document}

\begin{filecontents}{tikzpicture.tikz}
\begin{tikzpicture}
\draw (0,0) grid (3,3);
\foreach \c in {(0,0), (1,0), (2,0), (2,1), (1,2)}
    \fill \c + (0.5,0.5) circle (0.42);
\end{tikzpicture}
\end{filecontents}

\begin{figure}[ht]
  \includegraphics[width=\linewidth]{tikzpicture.tikz}
\end{figure}

\end{document}

覆盖并用框架框替换我的所有像素图像\renewcomand\includegraphics以便在文档编写期间缩短编译时间。但是,带有 .tikz 扩展名的图像仍会加载。

据我所知,它tikzscale会覆盖\includegraphics表单graphicx,而我会用我的定义覆盖它。为什么这不起作用?有没有办法让它起作用?

答案1

该包延迟了对文档开头tikzscale的重新定义,因此您应该这样做\includegraphics

\AtBeginDocument{%
  \renewcommand{\includegraphics}[2][]{%
    \setlength{\fboxsep}{-\fboxrule}% 
    \framebox{\rule{0pt}{0.6\linewidth}\rule{\linewidth}{0pt}}% 
  }%
}

也一样。

相关内容