在本网站的大力帮助下,我为一个新字符 ʾ(阿拉伯语 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'
在写入辅助文件时就不会尝试扩展。