使用 tikzexternalize + subcaption 与 TACL 日志模板时出现奇怪的错误

使用 tikzexternalize + subcaption 与 TACL 日志模板时出现奇怪的错误

最小工作示例代码:

\documentclass[11pt,a4paper]{article}
\usepackage[]{tacl2018v2}

\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[prefix=tikz/,optimize command away=\includepdf]
\usepackage{subcaption}

\begin{document}
\begin{figure}
\begin{subfigure}[t]{0.4\textwidth}
\begin{tikzpicture}
    \node [draw] (a) {ipsum};
    \node [draw, xshift=5.5cm, yshift=1.0cm] {foo};
\end{tikzpicture}
\end{subfigure}
\end{figure}
\end{document}

您需要来自https://transacl.org/tacl-submission-templates/tacl2018v2.sty

结果输出:

在此处输入图片描述

(需要明确的是,在 tikzpicture 中,不希望看到添加标题“机密 TACL 提交”)

我正在寻找的是:

  1. 修改我自己的乳胶代码的方法,以便标题可以正确打印,但我的图片不会被标题污染,或者
  2. 我可以向 TACL 技术支持发送一些切实可行的建议,以便能够持续、彻底地解决该问题。

答案1

这不是一个错误,这是一个功能

  • 我的理解是,该tacl2018v2包有一个硬编码的输出例程,用于将字符串添加Confidential TACL submission. DO NOT DISTRIBUTE.到输出中。它使用\AddToShipoutPicture我认为是最初来自包的所谓“钩子” eso-pic。样式文件还提到(第 208 行):

基于 eso-pic.sty

  • 由于\tikzexternalize编译文档,它还会生成硬编码字符串。详细信息可参见第 52.4 章 外部化图形手册。
  • 您可以修改样式文件,tacl2018v2如下所示。

在此处输入图片描述

有问题的代码(硬编码输出例程)

% Hard-coded output routine, just FYI (line 348 ff.).
\def\leftoffset{-2.1cm} %original: -45pt
\def\rightoffset{17.5cm} %original: 500pt
\iftaclpubformat\else\pagenumbering{arabic}\fi
\AddToShipoutPicture{%
\iftaclpubformat\else
\AtPageLowishCenter{\thepage}
\aclruleroffset=\textheight
\advance\aclruleroffset4pt
  \AtTextUpperLeft{%
    \put(\LenToUnit{\leftoffset},\LenToUnit{-\aclruleroffset}){%left ruler
      \aclruler{\aclrulercount}}
    \put(\LenToUnit{\rightoffset},\LenToUnit{-\aclruleroffset}){%right ruler
      \aclruler{\aclrulercount}}
  }
  \AtTextUpperLeft{%confidential
    \put(0,\LenToUnit{1cm}){\parbox{\textwidth}{\centering\naaclhv\confidential}} % <-- Problematic part
  }
\fi
}

解决方案 1

% Change this in tacl2018v2.sty, line 337 ff.
\def\confidentialtext{Confidential TACL submission. DO NOT DISTRIBUTE.}
%\def\confidential{\confidentialtext} % <-- Old
\def\confidential{} % <-- New

我修改了样式文件并将其命名为tacl2018v2_modified.sty确保您删除已生成的main-figure0.pdf(或类似的),否则它将不会重新生成。

\documentclass[11pt,a4paper]{article}
\usepackage{tacl2018v2_modified} % <-- I renamed the style file.

\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\usepackage{subcaption}

\begin{document}
\begin{figure}
\begin{subfigure}[t]{0.4\textwidth}
\begin{tikzpicture}
    \node [draw] (a) {ipsum};
    \node [draw, xshift=5.5cm, yshift=1.0cm] {foo};
\end{tikzpicture}
\end{subfigure}
\end{figure}
\end{document}

解决方案 2

\def\confidential{}或者在包加载后覆盖有问题的命令( )。

\documentclass[11pt,a4paper]{article}
\usepackage{tacl2018v2}
% Override the evil command :). AFTER loading tacl2018v2.
\def\confidential{}

\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\usepackage{subcaption}

\begin{document}
\begin{figure}
\begin{subfigure}[t]{0.4\textwidth}
\begin{tikzpicture}
    \node [draw] (a) {ipsum};
    \node [draw, xshift=5.5cm, yshift=1.0cm] {foo};
\end{tikzpicture}
\end{subfigure}
\end{figure}
\end{document}

相关内容