\ pagedir pgfpages가있는 TRT로 인해 잘못된 결과가 발생합니다 (페이지 밖으로 이동).
Aug 19 2020
\pagedir TRT
with \pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm,landscape]
from pgfpages
패키지를 사용하면 페이지 밖으로 이동할 논리 페이지가 생성됩니다.
레이아웃과 같은 문제 4 on 1
, 8 on 1
, 16 on 1
.
% lualatex
\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage{pgfpages}
\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm,landscape]
\begin{document}
\pagedir TRT \bodydir TRT \pardir TRT
\Huge
Page 1
\newpage
Page 2
\end{document}

업데이트 2020/08/22
을 사용하여 논리적 페이지를 이동하는 방법을 찾았습니다 \pagerightoffset
. 문제는 이동량을 수동으로 추가해야하는 모든 레이아웃에 대한 것입니다.
2 대 1 레이아웃 가로 페이지의 예
% lualatex
\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage{pgfpages}
\pgfpagesuselayout{2 on 1}[a4paper,landscape]
\begin{document}
\pagerightoffset = .55\pgfphysicalwidth % <--
\pagedir TRT \bodydir TRT \pardir TRT
\Huge
Page 1
\newpage
Page 2
\end{document}

답변
3 DavidPurton Aug 19 2020 at 21:00
페이지 RTL을 배치하는 새로운 레이아웃을 만들어야한다고 생각합니다.
2 on 1
레이아웃의 한 줄을 다음과 같이 변경합니다 .
center=\pgfpoint{.75\pgfphysicalwidth}{.5\pgfphysicalheight}%
에:
center=\pgfpoint{-.25\pgfphysicalwidth}{.5\pgfphysicalheight}%
나는 이것을 할 수 없다 xpatch
:
\usepackage{xpatch}
\expandafter\xpatchcmd\csname pgfpages@layout@2 on 1\endcsname
{center=\pgfpoint{.75\pgfphysicalwidth}{.5\pgfphysicalheight}}
{center=\pgfpoint{-.25\pgfphysicalwidth}{.5\pgfphysicalheight}}
{}
{}
페이지 당 페이지 수가 더 많은 레이아웃의 경우 xpatchcmd
.
전체 예 :
\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage{pgfpages}
\pgfpagesdeclarelayout{rtl 2 on 1}
{
\edef\pgfpageoptionheight{\the\paperwidth} % landscaped by default
\edef\pgfpageoptionwidth{\the\paperheight}
\def\pgfpageoptionborder{0pt}
\def\pgfpageoptionfirstshipout{1}
}
{
\pgfpagesphysicalpageoptions
{%
logical pages=2,%
physical height=\pgfpageoptionheight,%
physical width=\pgfpageoptionwidth,%
current logical shipout=\pgfpageoptionfirstshipout%
}
\ifdim\paperheight>\paperwidth\relax
% put side-by-side
\pgfpageslogicalpageoptions{1}
{%
border shrink=\pgfpageoptionborder,%
resized width=.5\pgfphysicalwidth,%
resized height=\pgfphysicalheight,%
center=\pgfpoint{.25\pgfphysicalwidth}{.5\pgfphysicalheight}%
}%
\pgfpageslogicalpageoptions{2}
{%
border shrink=\pgfpageoptionborder,%
resized width=.5\pgfphysicalwidth,%
resized height=\pgfphysicalheight,%
center=\pgfpoint{-.25\pgfphysicalwidth}{.5\pgfphysicalheight}% <- Shift second page to left hand side
}%
\else
% stack on top of one another
\pgfpageslogicalpageoptions{1}
{%
border shrink=\pgfpageoptionborder,%
resized width=\pgfphysicalwidth,%
resized height=.5\pgfphysicalheight,%
center=\pgfpoint{.5\pgfphysicalwidth}{.75\pgfphysicalheight}%
}%
\pgfpageslogicalpageoptions{2}
{%
border shrink=\pgfpageoptionborder,%
resized width=\pgfphysicalwidth,%
resized height=.5\pgfphysicalheight,%
center=\pgfpoint{.5\pgfphysicalwidth}{.25\pgfphysicalheight}%
}%
\fi
}
\pgfpagesuselayout{rtl 2 on 1}[a4paper,border shrink=5mm,landscape]
\usepackage[bidi=basic-r,nil]{babel}
\babelprovide[import,main]{arabic}
\babelfont{rm}{Amiri}
\begin{document}
\Huge
نص من اليمين الى اليسار
الصفحة الأولى 1
\newpage
\Huge
نص من اليمين الى اليسار
الصفحة الثانية 2
\end{document}

SalimBou Aug 24 2020 at 22:01
나는 \pgfpoint
이와 같은 모든 명령 내에서 x 좌표를 반전시키는 솔루션을 찾습니다.
\let\Pgfpoint\pgfpoint
\def\pgfpoint#1#2{\Pgfpoint{-1*#1}{#2}}
이 패치 는 다른 패키지의 다른 명령 내에서 패치 동작을 제한 하기 위해 명령을 pgfpages
포함하는 명령 에 추가되어야합니다.\pgfpoint
% lualatex
\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage{pgfpages}
\let\Pgfpoint\pgfpoint
\def\pgfpoint#1#2{\Pgfpoint{-1*#1}{#2}}
\pgfpagesuselayout{4 on 1}[a4paper,landscape]
\begin{document}
\pagedir TRT \bodydir TRT \pardir TRT
\Huge
Page 1
\newpage
Page 2
\newpage
Page 3
\newpage
Page 4
\end{document}
