调用 \DeclareUnicodeCharacter 主体中使用参数的宏。

调用 \DeclareUnicodeCharacter 主体中使用参数的宏。

我想定义 Unicode 节字符 U+00A7 以等同于 \section 宏。我现在有的是:

\DeclareUnicodeCharacter{167}{\csname section\endcsname}

但这似乎不起作用。以下是示例文档:

\documentclass{article}
\usepackage[utf8x]{inputenc}
\usepackage[english]{babel}
\DeclareUnicodeCharacter{167}{\csname section\endcsname}
\begin{document}
§{Introduction}
\end{document}

生成此错误消息:

! Extra \else.
\@sect ... {\csname the#1\endcsname }\fi #7}\else 
                                                  \def \@svsechd {#6{\hskip ...
l.6 §
      {Introduction}

我甚至不知道从哪里开始看看到底发生了什么。

答案1

更新:这似乎utf8x破坏了\DeclareUnicodeCharacter命令。我认为应该提交错误报告。(我已经现在完成了通过半官方渠道。

它的工作方式如下:(我之前的回答)

\documentclass{article}
\usepackage[utf8]{inputenc}
\DeclareUnicodeCharacter{A7}{\section}
\begin{document}
§{hello}
this is a fun idea
\end{document}

如果您使用 XeLaTeX 或 LuaLaTeX,则需要采用不同的方法:(在这种情况下切勿使用 inputenc!)

\documentclass{article}
\catcode"A7=\active
\let§\section
\begin{document}
§{hello}
this is a fun idea
\end{document}

我一直想编写一个简短的包来统一 pdfLaTeX 和 XeLaTeX/LuaLaTeX 之间的接口,但还没有开始。

相关内容