包含 TikZ 图形的文档中的裁剪包

包含 TikZ 图形的文档中的裁剪包

我的问题简要

我使用 XeLaTeX 为我儿子的幼儿园创建了一个地址簿。我使用 TikZ 创建了页眉和页脚以及一些其他图形。该书采用 DIN A6 格式。打印机要求我添加裁切标记,因为她将以更大的格式打印页面,然后将其裁剪为 DIN A6。当我使用该crop包(例如,使用[cam,a5,center])时,使用坐标定位的 TikZ 图形会错位,因为它们的坐标随后应用于裁剪包选项中指定的物理页面大小。

我在 Windows 7 上使用 Texmaker 和 MiKTeX 2.9。

一种可能的解决方案:我可以“简单地”调整所有 TikZ 图形的坐标以反映预裁剪的物理页面(DIN A5)的大小,这样它们在裁剪后就会出现在 DIN A6 页面上所需的位置。然而,由于文档有 252 页,这将是一项艰巨的工作。我宁愿不这样做,因为我可能还想制作地址簿的数字版本。

我的问题:有没有办法设置裁剪包或我的序言,以便即使我使用额外的、更大的物理页面规范进行裁剪,TikZ 图形的坐标仍然基于 DIN A6 页面规范?

以下是示例图像的序言和代码(两个图像之间的唯一区别在于包装crop):

\documentclass[10pt,twoside,openright,a6paper]{scrbook}

\usepackage[xetex]{graphicx}
\usepackage[no-math]{fontspec}
\usepackage{xunicode}% provides unicode character macros 
\defaultfontfeatures{Mapping=tex-text}
\usepackage{xunicode}

\setmainfont[]{DINNeuzeitGroteskStd-Light}
\setsansfont[]{DINNeuzeitGroteskStd-BdCond}

\usepackage{polyglossia}

\usepackage{microtype}

\setdefaultlanguage[spelling=new,babelshorthands=true]{german}

\usepackage[german]{translator}

\usepackage[top=1.2cm,inner=.5cm,outer=.5cm,bottom=1.2cm]{geometry}

\usepackage[cam,a5,center]{crop} %IN THE OTHER VERSION OF THE PDF FILE THIS PACKAGE IS OFF.

\usepackage{color}

\usepackage{setspace}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyfoot[LE]{\begin{tikzpicture}[remember picture,overlay]
\node [xshift=-1mm,yshift=-1mm] at (current page.south west)
[text width=10mm,text depth=1.2ex,text height=4mm,fill=violet!100,above right,text=white,align=center]
{\mbox{\hspace{.08cm}}\textsf{\thepage}};
\end{tikzpicture}}

\fancyfoot[RO]{\begin{tikzpicture}[remember picture,overlay]
\node [xshift=94mm,yshift=-1mm] at (current page.south west)
[text width=9mm,text depth=1.2ex,text height=4mm,fill=violet!100,above right,text=white,align=center]
{\textsf{\thepage}};
\end{tikzpicture}}

\fancyhead{} % clear all header fields

\fancyfoot[C]{}
\renewcommand{\headrulewidth}{0pt}

\usepackage{tocstyle}
\newtocstyle[allwithdot][]{mytocstyle}{\settocfeature[-1]{entryhook}{\normalsize}}
\usetocstyle{mytocstyle}
\settocstylefeature[0]{entryvskip}{2pt}

\makeatletter
\renewcommand*\l@chapter{\bprot@dottedtocline{1}{1.4em}{2.3em}}% no indentation
\renewcommand{\@pnumwidth}{1.6em}
\renewcommand{\@tocrmarg}{4em}
\makeatother

\usepackage{float}

\usepackage{tabularx}
\usepackage{booktabs}

\usepackage{rotating}

\usepackage{ragged2e}

\usepackage{array}
\usepackage{colortbl}
\usepackage{color}
\usepackage{tikz}
\usetikzlibrary{shapes}
\usepackage{amsmath,amssymb}
\usepackage{verbatim}
\usepgflibrary{arrows}
\usetikzlibrary{automata}
\usetikzlibrary{arrows,decorations.pathmorphing,decorations.text,backgrounds,positioning,fit,petri,intersections,shapes.multipart} 


\usepackage{multirow}

\usepackage[small,raggedright]{titlesec}
\titlespacing*{\chapter}{0pt}{0cm}{1cm}
\titleformat*{\chapter}{\color{violet}\bf\sf}
\titleformat*{\section}{\color{violet}\bf\sf}

\setkomafont{caption}{\footnotesize}

\usetikzlibrary{automata}
\usetikzlibrary{arrows,decorations.pathmorphing,decorations.text,backgrounds,positioning,fit,petri,intersections,shapes.multipart,calendar}

\usepackage[labelformat=empty]{caption}
\captionsetup{margin={1cm,1cm},justification=centering}


\usepackage[hyperfootnotes=false]{hyperref}

\hyphenation{Na-tur-wis-sen-schaften}

\usepackage{pbox}

\usepackage[autostyle,german=guillemets]{csquotes}

\newcommand{\longpage}{\enlargethispage{\baselineskip}}
\newcommand{\shortpage}{\enlargethispage{-\baselineskip}}

\usepackage{marvosym}

\urlstyle{same}

\begin{document}

\chapter*{Child's Name}
\addcontentsline{toc}{chapter}{\textnormal{Child's Name}}
\thispagestyle{fancy}

\begin{tikzpicture}[remember picture,overlay]
\node [xshift=61mm,yshift=140.5mm] at (current page.south west)
[text width=42mm,text depth=.7ex,text height=1.5cm,fill=violet!100,above right,text=white]
{\hfill{}\textsf{Child's Name}\mbox{\hspace{.45cm}}};
\end{tikzpicture}


\noindent
Text Text Text . . .

\vfill

\noindent
Address Information

\end{document}

使用 crop 包:

无作物

不使用 crop 包:

使用裁剪

答案1

覆盖TikZ和记住图片选项需要两个编译周期来将对象定位在页面上。您可以使用此属性以简单的方式实现您想要的效果,这不是一个完美的解决方案,但是一种简单的解决方法:

  1. 关闭 -package进行编译crop直到一切稳定。
  2. 启用 -package后仅编译一次crop。此时坐标是正确的,并且TikZ尚未意识到页面格式已更改。输出如下所示:

在此处输入图片描述

请发布一个最小的工作示例,因为并非每个人都有可用的特殊字体等,而且它们会分散对主要问题的注意力。

答案2

我今天遇到了同样的问题。丑陋的解决方案是使用calcTikZ 库和\hoffset&\voffset对,当您使用包center的选项时,该对会发生变化。例如,您可以编写crop而不是 each 。(current page.west)($(current page.west) + (\hoffset, \voffset)$)

我的实际纸张尺寸是 ISO B5,我加载了\usepackage[frame,a4,center]{crop}。启用/禁用裁剪以及双重编译可以正常工作,无需执行 Alexander 描述的技巧。我认为此解决方案不适用于某些crop选项,例如mirrorrotate

相关内容