最小工作示例代码:
\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 提交”)
我正在寻找的是:
- 修改我自己的乳胶代码的方法,以便标题可以正确打印,但我的图片不会被标题污染,或者
- 我可以向 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}