在 lualatex 中更改文档中间的页面布局

在 lualatex 中更改文档中间的页面布局

由于以下帖子中强调的某些未解决的技术问题,我无法使用横向、pdfrotate 或 minipage 选项以横向布局显示内容。

sidewaystable 的内容不显示

https://github.com/latex3/latex2e/issues/241

跨越多页迷你页面

因此,作为一种解决方法,我想到使用命令“\newgeometry”和“\restoregeometry”将文档中间的页面布局/尺寸更改为横向,在编译时,不会出现任何错误,而且文档保持不变,就像根本没有使用这些命令一样。

这是一个 MWE(我正在使用 lualatex + Babel):

\documentclass[a4paper,12pt,twoside]{book}
\usepackage[a4paper,top=2.5cm,bottom=2.5cm,margin=2.5cm,bindingoffset=0.5cm]{geometry} 

\usepackage[bidi=basic,layout=lists.tabular]{babel}
\babelprovide[import=ar,mapdigits,main]{arabic}
\babelprovide[import=en,language=Default]{english}

\babelfont{rm}{Latin Modern Roman}
\babelfont[arabic]{rm}{amiri}
\babelfont[english]{rm}{Times New Roman}

\usepackage[table]{xcolor} 
\usepackage{tabu,multirow} 
\usepackage{array} 
\newcolumntype{?}[1]{!{\vrule width #1}} 
\usepackage{booktabs}
\setlength{\belowrulesep}{0pt}
\setlength{\belowbottomsep}{0pt}
\setlength{\aboverulesep}{0pt}
\setlength{\belowrulesep}{0pt}
\setlength{\abovetopsep}{0pt}
\usepackage{makecell} 
\usepackage{boldline} 


\title{jhhjjhhj}
\author{}
\date{}

\begin{document}

\chapter{شكر وتقدير} 
\newgeometry{a4paper,top=2.5cm,bottom=2.5cm,margin=2.5cm,bindingoffset=0.5cm,landscape}
\begin{table}[htbp]
\setlength\arrayrulewidth{1pt} 
\caption{أمثلة لبعض الكلمات المتشابهة باللغات الناقلة}
\rowcolors{2}{white}{gray!25}
\begin{tabular}{?{1mm}c|c|c|>{\centering\arraybackslash}m{5cm}?{1mm}c|} 
\rowcolor{white}
\toprule[1mm] 
\multicolumn{3}{?{1mm}c|}{\textbf{اللغة}} & \multirow{2}{*}{} \\ \cmidrule[1.25pt]{1-3} 
\rowcolor{white} 
العربية &
العبرانية &
وجه التشابة &
\multirow{-2}{*}{\textbf{ملاحظات}} 
\\
\midrule[1.5pt]
مَلِك & ميلْخِ & الحروف والمعنى & -\\
\hline
مُلُوكْ & مَلاخيمْ  & الحروف والمعنى & -\\
\hline
نَفْسي & نَفْشِيْ   & الحروف والمعنى & -\\
\hline
سَبْعَة & شِبْعَاهْ & الحروف والمعنى & -\\
\hline
يَقُومُ & ياقُومْ   & الحروف والمعنى & -\\
\hline
يَرحَضُ & يِرْحَاصْ & الحروف والمعنى & -\\
\hline
ثَلاَثَةُ   & شَلوشَاهْ & الحروف والمعنى & -\\
\hline
مَلَك   & ماَلاَخْ  & الحروف والمعنى & -\\
\hline
يَدُهُ  & ياَدو & الحروف والمعنى & -\\
\hline
إِيْايَ & أوتِيْ    & المعنى & -\\
\hline
إِيَّاكَ    & أوتْخَ    & المعنى & -\\
\hline
أثنْاَنِ    & شَنَايِمْ & المعنى & -\\
\hline
يحرق    & يسْروفْ   & الوزن & على وزن "يَفْعُلُ" مع فرق بسيط\\
\hline
يغسل    & يَخَبْيسْ & الوزن & على وزن "يُفَعِلُ" مع فرق بسيط\\
\hline
تَكَلَّمْتُ & دَبَّرْتِيْ   & الوزن & على وزن "فَعْلْتُ" مع فرق بسيط\\
\hline
أنْقَطَعَ   & نِخْرَاتْ & المعنى & النون هي الزائدة في انفعل لفظاً ومعنى\\
\hline
يُصَلِي & يِتْپَلَيلْ   & الوزن & تقريباً على وزن "يَتَفَعْلُ" فهو في الأصل ثلاثي (أي من ثلاثة حروف) مع إضافة حرف المضارعة وحرف التاء بالإضافة لتشديد عين الفعل\\
\bottomrule[1mm] 
\end{tabular}
\label{tab}
\end{table}
\restoregeometry
\end{document}

答案1

geometry 禁用了 \newgeometry 中更改纸张大小和方向的选项 - 您可以在日志中找到警告。

您可以尝试像下面这样来欺骗它。我简化了表格并删除了损坏的部分,因为我不想在这里纠正错误。

编辑

并正如后续问题中提到的那样(解决横向表格错误)从景观设置恢复时,您还需要重置景观布尔值。

\documentclass[a4paper,12pt,twoside]{book}
\usepackage[a4paper,top=2.5cm,bottom=2.5cm,margin=2.5cm,bindingoffset=0.5cm]{geometry}
\makeatletter
\def\ifGm@preamble#1{%
  \ifGm@newgm
   %\Gm@warning{`#1': not available in `\string\newgeometry'; skipped}%
   \expandafter\@firstofone
  \else
    \expandafter\@firstofone
  \fi}%
\makeatother  
\usepackage[bidi=basic,layout=lists.tabular]{babel}
\babelprovide[import=ar,mapdigits,main]{arabic}
\babelprovide[import=en,language=Default]{english}
%
\babelfont{rm}{Latin Modern Roman}
\babelfont[arabic]{rm}{amiri}
\babelfont[english]{rm}{Times New Roman}
\usepackage{lipsum}
\usepackage[table]{xcolor}

\usepackage{array}

\usepackage{booktabs}
\begin{document}

\chapter{شكر وتقدير}

\newgeometry{landscape,margin=2.5cm}
\pagewidth  = \paperwidth
\pageheight = \paperheight

\begin{table}[htbp]
\setlength\arrayrulewidth{1pt}
\caption{أمثلة لبعض الكلمات المتشابهة باللغات الناقلة}
\rowcolors{2}{white}{gray!25}
\begin{tabular}{llll}

مَلِك & ميلْخِ & الحروف والمعنى & -\\
\hline
مُلُوكْ & مَلاخيمْ  & الحروف والمعنى & -\\
\hline
نَفْسي & نَفْشِيْ   & الحروف والمعنى & -\\
\hline
سَبْعَة & شِبْعَاهْ & الحروف والمعنى & -\\
\hline
يَقُومُ & ياقُومْ   & الحروف والمعنى & -\\
\hline
يَرحَضُ & يِرْحَاصْ & الحروف والمعنى & -\\
\hline
ثَلاَثَةُ   & شَلوشَاهْ & الحروف والمعنى & -\\
\hline
مَلَك   & ماَلاَخْ  & الحروف والمعنى & -\\
\hline
يَدُهُ  & ياَدو & الحروف والمعنى & -\\
\hline
إِيْايَ & أوتِيْ    & المعنى & -\\
\hline
إِيَّاكَ    & أوتْخَ    & المعنى & -\\
\hline
أثنْاَنِ    & شَنَايِمْ & المعنى & -\\
\hline
يحرق    & يسْروفْ   & الوزن & على وزن "يَفْعُلُ" مع فرق بسيط\\
\hline
يغسل    & يَخَبْيسْ & الوزن & على وزن "يُفَعِلُ" مع فرق بسيط\\
\hline
تَكَلَّمْتُ & دَبَّرْتِيْ   & الوزن & على وزن "فَعْلْتُ" مع فرق بسيط\\
\hline
أنْقَطَعَ   & نِخْرَاتْ & المعنى & النون هي الزائدة في انفعل لفظاً ومعنى\\
\hline
يُصَلِي & يِتْپَلَيلْ   & الوزن & تقريباً على وزن "يَتَفَعْلُ" فهو في الأصل ثلاثي (أي من ثلاثة حروف) مع إضافة حرف المضارعة وحرف التاء بالإضافة لتشديد عين الفعل\\
\bottomrule[1mm]
\end{tabular}
\label{tab}
\end{table}
\clearpage
\restoregeometry
\makeatletter \Gm@landscapefalse\makeatother %new
\pagewidth  = \paperwidth
\pageheight = \paperheight
\lipsum
\end{document}

在此处输入图片描述

相关内容