我本来打算缩短\index
命令(包makeidx
),如下所示。我正在处理一个大文档,总是忘记在索引条目命令前另外写上普通单词\index{}
。
但出了点问题:索引中的箭头打印不正确。(别忘了也用 Makeindex 编译最小示例——我经常忘记。)我对两种引擎(XeLaTeX 和 pdfLaTeX)的解决方案都很感兴趣,但它只能与 XeLaTeX 一起使用。
为什么向下的箭头打印为一个超大的括号?
问题似乎出在我使用数学模式的 \newcommand 参数时。它与使用 pdfLaTeX 或 XeLaTeX 进行编译无关。
最小示例:
% !TEX TS-program = pdflatex
% !TEX encoding = UTF-8 Unicode
% This is a simple template for a LaTeX document using the "article" class.
% See "book", "report", "letter" for other types of document.
\documentclass[11pt]{article} % use larger type; default would be 10pt
\usepackage[utf8]{inputenc} % set input encoding (not needed with XeLaTeX)
\usepackage{makeidx}
\makeindex
\newcommand{\indiziere}[1]{\emph{#1}\index{#1}}
%%% The "real" document content comes below...
\title{Brief Article}
\author{The Author}
%\date{} % Activate to display a given date or no date (if empty),
% otherwise the current date is printed
\begin{document}
\maketitle
\section{First section}
More text. \emph{1$f(x) \downarrow $}\index{1$f(x) \downarrow $}.\newline
\indiziere{2$f(x) \downarrow $}.
\printindex
\end{document}
答案1
您的命令评估#1
“太早”,因此文件的文件内容.ind
已包含分隔符 ( \delimiter 3223379
)。这样\string
就可以了。
旁注:“两种”引擎有点误导,因为除了 pdf-/XeLaTeX 之外还有更多的引擎(例如 LuaLaTeX)。
%!TeX TS-program=arara
% arara: xelatex
% arara: makeindex
% arara: xelatex
% arara: xelatex
\documentclass[11pt]{article} % use larger type; default would be 10pt
\usepackage{makeidx}
\makeindex
\newcommand{\indiziere}[1]{\emph{#1}\index{\string#1}}
\title{Brief Article}
\author{The Author}
\begin{document}
\maketitle
\section{First section}
More text. \emph{1$f(x) \downarrow $}\index{1$f(x) \downarrow $}.\newline
\indiziere{2$f(x) \string\downarrow $}.
\printindex
\end{document}
答案2
当\index
是宏的参数时,该参数\index
不能被“清理”(即基本上逐字处理)。
您可以使用以下方式模拟该行为\detokenize
:
\documentclass[11pt]{article} % use larger type; default would be 10pt
\usepackage[utf8]{inputenc} % set input encoding (not needed with XeLaTeX)
\usepackage{makeidx}
\makeindex
\newcommand{\indiziere}[1]{\emph{#1}\index{\detokenize{#1}}}
%%% The "real" document content comes below...
\title{Brief Article}
\author{The Author}
%\date{} % Activate to display a given date or no date (if empty),
% otherwise the current date is printed
\begin{document}
\maketitle
\section{First section}
More text. \emph{1$f(x) \downarrow $}\index{1$f(x) \downarrow $}.\newline
\indiziere{2$f(x) \downarrow $}.
\printindex
\end{document}
相关问题描述如下按出现次数排序的符号索引