Skip to content

Instantly share code, notes, and snippets.

@aminophen
Last active April 12, 2018 13:01
Show Gist options
  • Save aminophen/ea488b160676e711d03125e6a41a896a to your computer and use it in GitHub Desktop.
Save aminophen/ea488b160676e711d03125e6a41a896a to your computer and use it in GitHub Desktop.
デジタルトンボをつける何か
%#!pdflatex
%
% 動作には,拙作 gentombow / pxgentombow パッケージのセットの最新版が必要。
% TeX Live 2018 pretest の最新版か,
% 最新版 (2018/03/16) の gentombow.sty と pxgentombow.sty のセットを
% ダウンロードしてください → https://github.com/aminophen/gentombow
%
% この例では pdflatex を使っている。
% なお,(u)pLaTeX + dvipdfmx あるいは (u)pLaTeX + dvips で似たことをするのは少し難しい。
% (\special を一回でなく毎ページ発行しなければならないはず)
%
% PDF の寸法は pt 単位でなく bp 単位で与えないといけないので無理矢理です(計算合ってる?)
%
\documentclass[a4paper]{article}
\usepackage{graphicx}
\usepackage{gentombow}
\makeatletter
% 800/803 = 72/72.27 (cf. 1in = 72.27pt = 72bp)
\edef\pxgtmb@PDF@crop@ur@x{\strip@pt\dimexpr\stockwidth*800/803}
\edef\pxgtmb@PDF@crop@ur@y{\strip@pt\dimexpr\stockheight*800/803}
\edef\pxgtmb@PDF@trim@ll@x{\strip@pt\dimexpr(\stockwidth-\paperwidth)*400/803}
\edef\pxgtmb@PDF@trim@ll@y{\strip@pt\dimexpr(\stockheight-\paperheight)*400/803}
\edef\pxgtmb@PDF@trim@ur@x{\strip@pt\dimexpr(\stockwidth+\paperwidth)*400/803}
\edef\pxgtmb@PDF@trim@ur@y{\strip@pt\dimexpr(\stockheight+\paperheight)*400/803}
\edef\pxgtmb@PDF@bleed@ll@x{\strip@pt\dimexpr\pxgtmb@PDF@trim@ll@x pt-3mm*800/803}
\edef\pxgtmb@PDF@bleed@ll@y{\strip@pt\dimexpr\pxgtmb@PDF@trim@ll@y pt-3mm*800/803}
\edef\pxgtmb@PDF@bleed@ur@x{\strip@pt\dimexpr\pxgtmb@PDF@trim@ur@x pt+3mm*800/803}
\edef\pxgtmb@PDF@bleed@ur@y{\strip@pt\dimexpr\pxgtmb@PDF@trim@ur@y pt+3mm*800/803}
\edef\pxgtmb@PDF@CTM{%
% CropBox: same as MediaBox, large paper size
/CropBox [0 0 \pxgtmb@PDF@crop@ur@x\space \pxgtmb@PDF@crop@ur@y]
% BleedBox: final paper size + surrounding 3mm
/BleedBox [\pxgtmb@PDF@bleed@ll@x\space
\pxgtmb@PDF@bleed@ll@y\space
\pxgtmb@PDF@bleed@ur@x\space
\pxgtmb@PDF@bleed@ur@y]
% TrimBox: final paper size
/TrimBox [\pxgtmb@PDF@trim@ll@x\space
\pxgtmb@PDF@trim@ll@y\space
\pxgtmb@PDF@trim@ur@x\space
\pxgtmb@PDF@trim@ur@y]
% ArtBox: same as TrimBox
/ArtBox [\pxgtmb@PDF@trim@ll@x\space
\pxgtmb@PDF@trim@ll@y\space
\pxgtmb@PDF@trim@ur@x\space
\pxgtmb@PDF@trim@ur@y]
}
\ifx\pdfpageattr\@undefined
\special{papersize=\the\stockwidth,\the\stockheight}
% [FIXME] effective for first page only
\edef\pxgtmb@PDF@CTM{pdf:put @thispage << \pxgtmb@PDF@CTM >>}
\expandafter\special\expandafter{\pxgtmb@PDF@CTM}
\else
\pdfpagewidth\stockwidth
\pdfpageheight\stockheight
% effective for all pages
\expandafter\pdfpageattr\expandafter{\pxgtmb@PDF@CTM}
\fi
\makeatother
\begin{document}
Hello!\newpage
test!
\end{document}
@aminophen
Copy link
Author

このコードを元に,計算をもう少し簡単なコードに書き直したものが aminophen/gentombow@05439b4 である。そちらでは atbegshi パッケージを使って全ページに special を書くようにしたり,「pdfTeX で DVI 出力な場合」も正しくハンドルした。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment