\ pagedir TRT พร้อม pgfpages ทำให้ผลลัพธ์ไม่ถูกต้อง (เลื่อนออกจากหน้า)
การใช้\pagedir TRT
กับ \pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm,landscape]
จาก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}

อัพเดต 22/08/2020
ฉันพบวิธีการเปลี่ยนหน้าตรรกะโดยใช้\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}

คำตอบ
ฉันคิดว่าคุณจะต้องสร้างเลย์เอาต์ใหม่ที่จัดวางหน้าเว็บ 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}

ฉันพบวิธีแก้ปัญหาที่สลับพิกัด x ภายในทุก\pgfpoint
คำสั่งเช่นนี้
\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}
