
Mis códigos son los siguientes:
\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 (cuadro de color verde) solucionado correctamente (el crédito se refiere David Carlisle
a la pregunta)¿Cómo puedo configurar PDF TrimBox dinámicamente (con una macro) y de forma independiente al compilador?)
Ahora también estoy intentando arreglar el cuadro de sangrado (cuadro de color azul), pero salió mal en la parte inferior y en el lado izquierdo, no estoy seguro de qué hice mal en esto. ¿Alguien puede sugerir?
Respuesta1
No me queda exactamente claro a qué \g_@@_bleed_dim
se refiere. Pero lo estás usando como desplazamiento de recorte desde la esquina inferior izquierda de la página.
Pero luego también estableces la esquina inferior izquierda del cuadro de sangrado en \g_@@bleed_dim
, razón por la cual tus dos cuadros comienzan en el mismo lugar.
Además, (al menos en mi sistema) N
se dice que la generación y la variante están en desuso. El error indica que se utilice una V
variante en su lugar.
Entonces las macros para configurar los cuadros de recorte y sangrado deberían 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 }
}
Esto luego se alineará con las marcas de recorte.
Actualmente el código sólo funciona con pdflatex
. lualatex
debería ser fácil de arreglar. xelatex
puede que tarde un poco más.