\ pagedir pgfpagesを使用したTRTは、誤った結果を引き起こします(ページからシフトアウト)
Aug 19 2020
\pagedir TRT
with \pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm,landscape]
frompgfpages
パッケージを使用すると、ページ外にシフトされる論理ページが生成されます。
レイアウトと同じ問題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年8月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
レイアウトの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}}
{}
{}
1ページあたりのページ数が多いレイアウトの場合は、を複数回呼び出す必要があります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}
