- 我正在编写一个使用包
biblatex-chicago
和的tex 文件makeidx
。 - 我正在使用尾注包将所有脚注推送至注释部分。
- 所有引文均出现在参考书目部分。这是使用 实现的
\autocite
。 - 在项目中,我希望在 的前后注释内建立索引
\autocite
。这意味着,在索引部分中,术语将与注释部分中的相关页面相对应。例如,在下面的示例中,“clah”应与 的注释部分中的页码一起出现在索引中。
问我面临的问题是:当我放入\index
预注释时,编译失败。但\index
内部的后注释工作正常。有人能解释一下如何解决这个问题吗?
例如,当我这样做
\autocite[blah blah][clah clah\index{clah}]{a-citekey}
它有效!然而,
\autocite[blah blah\index{blah}][clah clah]{a-citekey}
无法编译。
以下是 MWE:
\def\DevnagVersion{2.16}
\documentclass[11pt]{book}
\usepackage[a4paper,bindingoffset=0.2in,%
left=1in,right=1in,top=1.2in,bottom=1.2in,%
footskip=.5in]{geometry}
\usepackage{makeidx}
\usepackage{endnotes}
\let\footnote=\endnote
\usepackage[notes]{biblatex-chicago}
\renewcommand\nameyeardelim{, }
\addbibresource{question.bib}
\usepackage{float}
\usepackage{tabls}
\usepackage{graphicx}
\usepackage[colorlinks]{hyperref}
\usepackage{cleveref}
\usepackage{parskip}
\usepackage{devanagari}
\usepackage{epigraph}
\usepackage{fancyhdr, blindtext}
\newcommand{\changefont}{%
\fontsize{8}{10}\selectfont
}
\fancyhf{}
\fancyhead[LE,RO]{\changefont \slshape \rightmark} %section
\fancyhead[RE,LO]{\changefont \slshape \leftmark} %chapter
\fancyfoot[C]{\changefont \thepage} %footer
\pagestyle{fancy}
\newcounter{ExCount}
\newcommand{\ex}[1]{
\stepcounter{ExCount}
\addcontentsline{toc}{section}{~~ \textit{Example \arabic{ExCount}: #1}}
\subsubsection*{~~ \textit{Example \arabic{ExCount}: #1}}
}
\newcommand{\he}[1]{
\addcontentsline{toc}{section}{#1}
\subsubsection*{#1}
}
\DeclareAutoCiteCommand{endfull}[f]{\footfullcite}{\footfullcites}
\ExecuteBibliographyOptions{autocite=endfull}
\sloppy
\title{A catchy title}
\author{Author One \and Author Two}
\makeindex
\begin{document}
\maketitle\newpage
\tableofcontents\newpage
\frontmatter
\chapter{Intro}
Testing the Wendy Doniger example from Penguin.\footcite[][p. 65]{doniger1999splitting}
This line is just to test index.\autocite[please refer to][for a detailed analysis{\index{analysis}}]{a-citekey}
% but this does not work
% This line is just to test index.\autocite[please refer\index{refer} to][for a detailed analysis]{a-citekey}
\newpage
\def\enotesize{\footnotesize}
\cleardoublepage
\addcontentsline{toc}{chapter}{Notes}
\theendnotes
\addcontentsline{toc}{chapter}{Bibliography}
\renewcommand*{\bibfont}{\footnotesize}
\printbibliography
\cleardoublepage
\addcontentsline{toc}{chapter}{Index} % adds Index to TOC
\printindex
\end{document}
以下是 bibfile question.bib 的内容
@book{doniger1999splitting,
title = {Splitting the difference: Gender and myth in ancient
Greece and India},
author = {Doniger, Wendy},
year = {1999},
publisher = {University of Chicago Press},
location = {Chicago}
}
@InCollection{a-citekey,
author = {Author One},
title = {A long title: this is a really long title},
booktitle = {This is my book: proud to have written this},
publisher = {Elite Publishing House},
year = 2006,
editor = {A bigshot editor},
chapter = 7,
url = {http://www.example.com/a-link.html}
}
答案1
使用
\protect\index{<term>}
而不是\index{<term>}
在前注和后注中。
根据样式和设置,biblatex
可能会将附加格式或其他宏应用于前后注释字段。字段内容可能会以无法扩展的宏导致问题的方式扩展。这就是为什么\index
在前后注释中使用 来保护 是安全的\protect
,即使乍一看似乎没有必要。
\documentclass{article}
\usepackage{makeidx}
\usepackage{biblatex-chicago}
\usepackage[colorlinks]{hyperref}
\makeindex
\addbibresource{biblatex-examples.bib}
\begin{document}
Testing the Wendy Doniger example from Penguin.\autocite[65]{sigfridsson}
This line is just to test index.\autocite[refer][analysis\protect\index{analysis}]{sigfridsson}
This line is just to test index.\autocite[refer\protect\index{refer}][analysis]{sigfridsson}
\printbibliography
\printindex
\end{document}
如果由于以下原因biblatex-chicago
导致预注出现问题\MakeCapital
\DeclareFieldFormat{prenote}{\ifcapital{\MakeCapital{#1}}{#1}\isdot}
由于标准biblatex
\index
在后记中存在问题,\mkpageprefix
并且\mknormrange
\DeclareFieldFormat{postnote}{\mkpageprefix[pagination][\mknormrange]{#1}}