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조금 더 시간이 걸릴 수 있습니다.

관련 정보