章节标题中的新字符

章节标题中的新字符

在本网站的大力帮助下,我为一个新字符 ʾ(阿拉伯语 Hamza 音标)编写了一些代码,该字符由凸起的小旋转 c 组成。此字符需要特殊的斜体字距调整,为此我使用了一些代码问题。添加此内容后,我遇到了问题。整个过程对于普通文本来说都很好,但是当字符放在部分命令中时,它会给出错误。当我在 sharelatex.com 上运行下面的 MWE 时,它给出Extra }, or forgotten \endgroup.当此字符在我的较大项目中的部分标题中时,它给出TeX capacity exceeded, sorry [input stack size=50 00]

我怎样才能使其也适用于章节标题?

谢谢。

\documentclass{book}

\usepackage{fontspec}

% test for italicness
\makeatletter
\newcommand*{\IfItElse}{%
 \ifx\f@shape\my@test@it
   \expandafter\@firstoftwo
 \else
   \protect\expandafter\@secondoftwo
 \fi
}
\newcommand*{\my@test@it}{it}
\makeatother

% New character HAMZA
\catcode`ʾ=\active
\defʾ{\IfItElse{\kern.12em}{\kern.0em}%
    \textsuperscript{\protect\raisebox{1.1ex}{\rotatebox{180}{c}}}%
    \IfItElse{\kern-.1em}{\kern-.05em}%
    {}} 

\begin{document}

\tableofcontents

\textit{Liqāʾ al-yawn}

\section{\textit{Liqāʾ al-yawn}}

\结束{文档}

答案1

\rotatebox诸如此类的命令脆弱的,这意味着它们不适合用于移动参数(分段标题或说明)。

最简单的解决方法是使用

\protected\def'{%
  \IfItElse{\kern.12em}{\kern.0em}%
  \textsuperscript{\protect\raisebox{1.1ex}{\rotatebox{180}{c}}}%
  \IfItElse{\kern-.1em}{\kern-.05em}%
  {}%
} 

这样 TeX'在写入辅助文件时就不会尝试扩展。

相关内容