
我的程式碼如下:
\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
可能需要更長的時間。