\section
我希望将它们放在右边距(在从右到左的文档中),而不是默认放置\subsection
在自己的行上。
我目前的用法如下:
\documentclass{article}
\usepackage{polyglossia}
\setdefaultlanguage[calendar=hebrew, numerals=arabic]{hebrew}
\setotherlanguage{english}
\newfontfamily\hebrewfont{David CLM}
\begin{document}
\section{}
\subsection*{א}
אבג
\subsection*{ב}
דהו
\end{document}
这使:
相反,我想实现这一点:
图像中不是很清楚,但粗体文本应该位于右边距。
理想情况下,我希望每个在打印时\subsection
也包含当前\section
,但如果有一个\section
没有任何\subsection
s 的,那么只\section
应显示。
答案1
这个titlesec
包非常适合制作各种花哨的标题。bidi
只要你titlesec
先加载(在这种情况下,这意味着在之前polyglossia
),它就可以很好地发挥作用。所以部分答案是
\usepackage{titlesec}
\usepackage{polyglossia}
\setdefaultlanguage[calendar=hebrew, numerals=arabic]{hebrew}
\setotherlanguage{english}
\newfontfamily\hebrewfont{New Peninim MT} % I don't have David!
\titleformat{\subsection}[leftmargin]{\bfseries}{\thesection}%
{0.6em}{}
\titlespacing*{\subsection}{2em}{0.5ex}{1em}
subsection
与无星号的s一起使用时,可得出
一些说明:
对于 RTL 文档来说
leftmargin
,意味着右边距。这取决于您决定包含子部分数字手动作为小节标题。我试图提供一种解决方案来避免这种情况,但发现,正如您可能已经发现的那样,这
\renewcommand{\thesubsection}{\hebrewnumeral{\arabic{subsection}}}
会导致错误而没有立即明显的原因......所以我想我可以指出的是,如果您重新排列您的小节,您将必须手动调整。问题的最后一部分(如果我理解正确的话 - 您想隐藏单独的章节编号,除非没有子章节来显示它?)更难,因为 LaTeX 在排版标题时不知道
section
它是否包含任何subsection
s。因此,您将需要使用在以前的编译运行中写入辅助文件的信息。我看不出有一种直接使用已写入文件的信息的方法.aux
- 尽管它肯定在那里 - 因此您可能需要自己写出这些信息,然后在下次运行时读回它,以决定是否设置数字section
。如果这一切听起来很复杂,我很抱歉 - 它真的比困难更麻烦。我现在没有时间自己实施这些解决方案,但如果到那时还没有出现任何解决方案,我会在接下来的几天内尝试回到这个答案!
附录
如果你愿意总体上去掉章节编号(IE,忽略没有子节的节的可能性),然后在命令中\renewcommand{\thesection}{}
使用 和\arabic{section}
代替。您可能还想使用 来删除节号和标题剩余的额外空间。\thesection
\titleformat{\subsection}
\titlespacing*{\section}{0pt}{0pt}{0pt}
事实上,现在我想到,如果您愿意手动标记任何没有脚注的章节,您可以通过定义命令来使这种方法起作用,\varsection
比如设置\thesection
间距,排版章节标题,然后像上面那样重置。