在下面的例子中,当我foo
在\IndexList
命令中使用这个词(和其他一些词一起),不孤单),我会得到以下错误:
! Missing } inserted.
<inserted text>
}
l.7 \section{foo}
当我使用该环境时也会出现同样的错误tabular
。(我没有尝试过任何其他命令和环境,所以错误可能也出现在那里。)这是我的代码:
\documentclass{article}
\usepackage{xeindex}
\makeindex
\IndexList{mylist}{hello,foo and bar,hi}
\begin{document}
\section{foo}
\newpage
%\begin{tabular}{c}
%foo
%\end{tabular}
\printindex
\end{document}
我怎么解决这个问题?
答案1
这xeindex
包裹在这种情况下似乎有很多错误。
仅当“foo”后面没有文本(\section
、\printindex
和不算)时\end{table}
才会出现此问题。\\
作品:
\section{foo and nothing else}
\section{foo and bar}
休息:
\section{foo}
… foo \printindex \end{document}
帮助:
- 肮脏的解决方法就像
f{}oo
在各处工作,但很痛苦并且会破坏连字符。 - 该软件包提供了
\StopIndex{<list>}
、\StopSearching
和\StartSearching
。它们需要分部分进行\protect
编辑。- 两者
\StopSearching foo \StartSearching
任一 {\StopSearching foo}
- 两者
该套餐甚至提供\NoIndex
:
\def\NoIndex#1{%
\bgroup
\StopIndex
#1%
\egroup
}
但失败了。它至少需要一个,\protect
但又缺少一个}
。
下面的定义确实有效,但没有排版任何内容(这并不奇怪,只是随机添加\egroup
s 是行不通的这解决方案。
\def\NoIndex#1{\bgroup\protect\StopIndex #1\egroup\egroup}
因此,我定义了一个可以在任何地方起作用的自定义命令\PreventIndex{<to not be indexed>}
(?)。
代码(MWE)
\documentclass{article}
\usepackage[paperheight=8cm,paperwidth=8cm]{geometry}
\usepackage{xeindex} \makeindex
\IndexList{mylist}{hello,foo and bar,hi}
\newcommand*\PreventIndex[1]{{\protect\StopSearching #1}}
\AtBeginDocument{\LARGE} % only for this MWE
\begin{document}
\section{I give a \PreventIndex{foo}} % Nothing after foo => \PreventIndex
Foo is horrible! % some plain text after foo => no need to stop Searching
\section{Foo, nothing else} % some plain text after foo => no need to stop Searching
There is really nothing else then foo? % some plain text after foo => no need to stop Searching
\section{Let's index!}
Foo and bar are always together. % Works, gets indexed
Bar was born ten minutes later then
\PreventIndex{foo} \(\Longleftarrow\) % :(
needs {\small\texttt{\textbackslash PreventIndex}}
\newpage
\begin{tabular}{c}
Foo and bar \\
sitting on a \PreventIndex{foo} \\ %
foo? %
\end{tabular}
\printindex
\end{document}