我的问题简要
我使用 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
和记住图片选项需要两个编译周期来将对象定位在页面上。您可以使用此属性以简单的方式实现您想要的效果,这不是一个完美的解决方案,但是一种简单的解决方法:
- 关闭 -package进行编译
crop
直到一切稳定。 - 启用 -package后仅编译一次
crop
。此时坐标是正确的,并且TikZ
尚未意识到页面格式已更改。输出如下所示:
请发布一个最小的工作示例,因为并非每个人都有可用的特殊字体等,而且它们会分散对主要问题的注意力。
答案2
我今天遇到了同样的问题。丑陋的解决方案是使用calc
TikZ 库和\hoffset
&\voffset
对,当您使用包center
的选项时,该对会发生变化。例如,您可以编写crop
而不是 each 。(current page.west)
($(current page.west) + (\hoffset, \voffset)$)
我的实际纸张尺寸是 ISO B5,我加载了\usepackage[frame,a4,center]{crop}
。启用/禁用裁剪以及双重编译可以正常工作,无需执行 Alexander 描述的技巧。我认为此解决方案不适用于某些crop
选项,例如mirror
或rotate
。