
Я хотел бы создать каталог всех моих записей BibTeX.
Я использовал
&
во многихbibkey
, таких какAuthor&Editor:2000
.Но я не могу делать это
\catcode38=12
глобально.
У меня вопрос: как можно оформить подобное bibkey
и в заголовке раздела, и в оглавлении, а также сослаться на него?
Вот чего я хочу добиться:
С:
\newcommand\entry[1]{%
\catcode38=12\relax
\section{#1}
\fullcite{#1}}
\entry{Author&Editor:2000}
Но я получаю:
! Misplaced alignment tab character &.
Например:
\documentclass{article}
\usepackage[backend=biber]{biblatex}
\addbibresource{foo.bib}
\usepackage{filecontents}
\begin{filecontents}{foo.bib}
@book{Author&Editor:2000, author={Author}, editor={Editor}, title={Title 0}, year={2000}}
@book{Author&Editor:2001, author={Author}, editor={Editor}, title={Title 1}, year={2001}}
@book{Author&Editor:2002, author={Author}, editor={Editor}, title={Title 2}, year={2002}}
\end{filecontents}
\newcommand\entry[1]{%
\catcode38=12\relax
\section{#1}
\fullcite{#1}}
\begin{document}
\tableofcontents
\entry{Author&Editor:2000}
\entry{Author&Editor:2001}
\entry{Author&Editor:2002}
\end{document}
решение1
Нет необходимости менять коды категорий; нам просто нужна надежная версия \detokenize
.
\documentclass{article}
\usepackage[backend=biber]{biblatex}
\addbibresource{foo.bib}
\usepackage{filecontents}
\begin{filecontents}{foo.bib}
@book{Author&Editor:2000, author={Author}, editor={Editor}, title={Title 0}, year={2000}}
@book{Author&Editor:2001, author={Author}, editor={Editor}, title={Title 1}, year={2001}}
@book{Author&Editor:2002, author={Author}, editor={Editor}, title={Title 2}, year={2002}}
\end{filecontents}
\newcommand\entry[1]{%
\section{\keep{#1}}%
\fullcite{#1}}
%%% \newrobustcmd is from etoolbox, loaded by biblatex
\newrobustcmd{\keep}[1]{\detokenize{#1}}
\begin{document}
\tableofcontents
\entry{Author&Editor:2000}
\entry{Author&Editor:2001}
\entry{Author&Editor:2002}
\end{document}
Обратите внимание, что вам необходимо добавить расширение в\addbibresource{foo.bib}
решение2
Изменение кодов в середине документа — плохая идея, это все сломает, но если вы собираетесь это сделать, вам нужно правильно рассчитать время.
\documentclass{article}
\usepackage[backend=biber]{biblatex}
\addbibresource{foo}
\usepackage{filecontents}
\begin{filecontents}{foo.bib}
@book{Author&Editor:2000, author={Author}, editor={Editor}, title={Title 0}, year={2000}}
@book{Author&Editor:2001, author={Author}, editor={Editor}, title={Title 1}, year={2001}}
@book{Author&Editor:2002, author={Author}, editor={Editor}, title={Title 2}, year={2002}}
\end{filecontents}
\newcommand\entry{\bgroup\catcode`\&=12 \xentry}
\newcommand\xentry[1]{\egroup
\section{#1}%
\fullcite{#1}}
\begin{document}
{\catcode`\&=12 \tableofcontents}
\entry{Author&Editor:2000}
\entry{Author&Editor:2001}
\entry{Author&Editor:2002}
\end{document}
решение3
как я могу набрать такой биб-ключ
Я почти уверен, что вы не сможете этого сделать, так как &
это всегда будет интерпретироваться как символ мировоззрения.доВы можете это изменить.
Но вы можете использовать \&
. Смотрите также ваш исправленный (и теперь работающий) пример:
\documentclass{article}
\usepackage[backend=biber]{biblatex}
\addbibresource{foo}
\usepackage{filecontents}
\begin{filecontents}{foo.bib}
@book{Author\&Editor:2000, author={Author}, editor={Editor}, title={Title 0}, year={2000}}
@book{Author\&Editor:2001, author={Author}, editor={Editor}, title={Title 1}, year={2001}}
@book{Author\&Editor:2002, author={Author}, editor={Editor}, title={Title 2}, year={2002}}
\end{filecontents}
\newcommand\entry[1]{%
\catcode38=12\relax
\section{#1}
\fullcite{#1}}
\begin{document}
\tableofcontents
\entry{Author\&Editor:2000}
\entry{Author\&Editor:2001}
\entry{Author\&Editor:2002}
\end{document}
С уважением, Ник.