
Meus códigos são os seguintes:
\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}
Trim Box (caixa de cor verde) corrigida com sucesso (o crédito vai para David Carlisle
encaminhar a perguntaComo posso definir o PDF TrimBox dinamicamente (com uma macro) e independente do compilador?)
Agora estou tentando consertar a caixa de sangramento (caixa de cor azul) também, mas deu errado na parte inferior e esquerda, não tenho certeza do que fiz de errado nisso. Alguém pode sugerir?
Responder1
Não está exatamente claro para mim a que \g_@@_bleed_dim
se refere. Mas você o está usando como deslocamento de corte do canto inferior esquerdo da página.
Mas então você também define o canto inferior esquerdo da caixa de sangramento como \g_@@bleed_dim
, e é por isso que suas duas caixas começam no mesmo lugar.
Além disso, (pelo menos no meu sistema) a geração e N
a variante estão obsoletas. O erro diz para usar uma V
variante.
Portanto, as macros para definir as caixas de corte e sangramento devem ser:
%% 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 }
}
Isso se alinhará com suas marcas de corte.
Atualmente o código só funciona com pdflatex
. lualatex
deve ser fácil de consertar. xelatex
pode demorar um pouco mais.