使用 PDFLaTeX 設定 BleedBox

使用 PDFLaTeX 設定 BleedBox

我的程式碼如下:

\documentclass{book}

\usepackage{xparse}%%

\setlength{\paperheight}{9truein}%
\setlength{\paperwidth}{7truein}%

\ExplSyntaxOn\makeatletter %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% bleed value (keyval class option in real document)
\dim_new:N \g_@@_bleed_dim 
\dim_set:Nn \g_@@_bleed_dim { 15mm }%%

%% set page size (and other stuff in the real document)
%\usepackage { geometry }
%   \geometry { papersize = { 7in , 9in } }

%% set crop size
\usepackage [a4, center,cam,info] { crop }
   \CROP@size {
      \dim_eval:n { \paperwidth + 2 \g_@@_bleed_dim }
   } {
      \dim_eval:n { \paperheight + 2 \g_@@_bleed_dim }
   }

%% new variant
\cs_generate_variant:Nn \dim_to_decimal_in_bp:n { N }

% values for the Trim box
\tl_new:N \g_@@_trim_box_quadruple_tl
\tl_set:Nx \g_@@_trim_box_quadruple_tl {
   \dim_to_decimal_in_bp:N \g_@@_bleed_dim \space 
   \dim_to_decimal_in_bp:N \g_@@_bleed_dim \space
   \dim_to_decimal_in_bp:n { \paperwidth + \g_@@_bleed_dim } \space
   \dim_to_decimal_in_bp:n { \paperheight + \g_@@_bleed_dim }
}

% values for the Bleed box
\tl_new:N \g_@@_bleed_box_quadruple_tl
\tl_set:Nx \g_@@_bleed_box_quadruple_tl {
   \dim_to_decimal_in_bp:N \g_@@_bleed_dim \space 
   \dim_to_decimal_in_bp:N \g_@@_bleed_dim \space
   \dim_to_decimal_in_bp:n { \paperwidth + 9pt + \g_@@_bleed_dim } \space
   \dim_to_decimal_in_bp:n { \paperheight + 9pt + \g_@@_bleed_dim }
}

%% special for use with XeTeX -- Not yet tested
\tl_new:N \g_@@_trim_special_tl
\tl_set:Nx \g_@@_trim_special_tl {
   pdf: ~ put ~ @thispage ~
   << ~ /TrimBox \space [ \g_@@_trim_box_quadruple_tl ] ~ >>
   << ~ /BleedBox \space [ \g_@@_bleed_box_quadruple_tl ] ~ >>
}

%% page attribute for use with LuaTeX and PDFTeX -- have to check with LuaLaTeX later
\tl_new:N \g_@@_trim_pageattr_tl
\tl_set:Nx \g_@@_trim_pageattr_tl {
   /TrimBox \space [ \g_@@_trim_box_quadruple_tl ]
   /BleedBox \space [ \g_@@_bleed_box_quadruple_tl ]
}


%% command to set the specials for xetex -- Not yet tested
\cs_new:Npn \@@_special:n #1 {
   \AtBeginShipout { \immediate \special { #1 } }
   \immediate \special { #1 }
}

%% command to set the page attributes for pdftex/luatex
\cs_new:Npn \@@_pdfpageattr:n #1 {
   \pdfpageattr { #1 }
}

%% make a variants to make sure we get the expaned content
\cs_generate_variant:Nn \@@_special:n { V }
\cs_generate_variant:Nn \@@_pdfpageattr:n { V }

%% [A] THIS DOES NOT WORK!
%% set the trim box according to engine
\bool_if:nTF { \sys_if_engine_luatex_p: || \sys_if_engine_pdftex_p: } {
   \@@_pdfpageattr:V \g_@@_trim_pageattr_tl
} {
   \sys_if_engine_xetex:TF {
      \usepackage{atbegshi}
      \@@_special:V \g_@@_trim_special_tl
   } { ERROR: UNKOWN MACHINE! }
}

%% just a macro to show some debug info
\NewDocumentCommand { \debuginfo } { } {
   \par\noindent
   Machine: ~ \texttt{ \c_sys_engine_str }

   \par\bigskip\noindent
   special: \\
   \mbox { \texttt { \g_@@_trim_special_tl } }

   \par\medskip\noindent
   pageattribute: \\
   \mbox { \texttt { \g_@@_trim_pageattr_tl } }
}

\ExplSyntaxOff

\setlength\oddsidemargin{6pc}
\addtolength\oddsidemargin{-1in}    % subtract out the 1 inch driver margin
\setlength\@tempdima{\paperwidth}
\addtolength\@tempdima{-\textwidth}
\addtolength\@tempdima{-6pc}
\setlength\evensidemargin{\@tempdima}
\addtolength\evensidemargin{-1in}


\makeatother %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\begin{document}

Test

\end{document}

修剪框(綠色框)已成功修復(信用去David Carlisle參考問題如何動態(使用巨集)設定 PDF TrimBox 並且獨立於編譯器?

現在我也嘗試修復出血框(藍色框),但底部和左側出了問題,我不確定我在這方面做錯了什麼。有人可以建議嗎?

在此輸入影像描述

答案1

我不太清楚它\g_@@_bleed_dim指的是什麼。但您將其用作距頁面左下角的修剪偏移量。

但隨後您還將出血框的左下角設定為\g_@@bleed_dim,這就是為什麼您的兩個框在同一位置開始的原因。

另外,(至少在我的系統上)N據說已棄用生成和變體。該錯誤表明要使用V變體。

因此設置修剪和出血框的巨集應該變成:

%% new variant
\cs_generate_variant:Nn \dim_to_decimal_in_bp:n { V }

% values for the Trim box
\tl_new:N \g_@@_trim_box_quadruple_tl
\tl_set:Nx \g_@@_trim_box_quadruple_tl {
   \dim_to_decimal_in_bp:V \g_@@_bleed_dim \space 
   \dim_to_decimal_in_bp:V \g_@@_bleed_dim \space
   \dim_to_decimal_in_bp:n { \paperwidth + \g_@@_bleed_dim } \space
   \dim_to_decimal_in_bp:n { \paperheight + \g_@@_bleed_dim }
}

% values for the Bleed box
\tl_new:N \g_@@_bleed_box_quadruple_tl
\tl_set:Nx \g_@@_bleed_box_quadruple_tl {
   \dim_to_decimal_in_bp:n { \g_@@_bleed_dim - 4.5pt } \space 
   \dim_to_decimal_in_bp:n { \g_@@_bleed_dim - 4.5pt } \space
   \dim_to_decimal_in_bp:n { \paperwidth + 4.5pt + \g_@@_bleed_dim } \space
   \dim_to_decimal_in_bp:n { \paperheight + 4.5pt + \g_@@_bleed_dim }
}

然後這將與您的修剪標記對齊。

目前程式碼僅適用於pdflatex.lualatex應該很容易修復。xelatex可能需要更長的時間。

相關內容