У меня есть простой документ LaTeX, содержащий несколько ссылок BibTeX:
\documentclass[12pt]{article}
\begin{document}
\section{First section}
This document is an example of \texttt{thebibliography} environment using
in bibliography management. Three items are cited: \textit{The \LaTeX\ Companion}
book \cite{latexcompanion}, the Einstein journal paper \cite{einstein}, and the
Donald Knuth's website \cite{knuthwebsite}. The \LaTeX\ related items are
\cite{latexcompanion,knuthwebsite}.
\medskip
\bibliographystyle{unsrt}
\bibliography{sample}
\end{document}
Вывод этого следующий.
Я хотел бы изменить нумерацию ссылок в тексте и в разделе «Ссылки» на какой-то набор определенных номеров по моему выбору. Как это сделать?
Допустим, я хотел бы получить что-то вроде этого:
1 Первый раздел
Этот документ является примером использования среды библиографии в управлении библиографией. Ссылаются три элемента: книга LATEX Companion [11], статья журнала Einstein [22] и веб-сайт Дональда Кнута [33]. Элементы, связанные с LATEX, — [11, 33].
Рекомендации
[11] Мишель Гуссенс, Фрэнк Миттельбах и Александр Самарин. LATEX Companion. Эддисон-Уэсли, Рединг, Массачусетс, 1993.
[22] Альберт Эйнштейн. Zur Elektrodynamik bewegter Korper. (немецкий) [К электродинамике движущихся тел]. Анналы физики, 322(10):891{921, 1905.
[33] Дональд Кнут. Кнут: Компьютеры и набор текста.
Могу ли я сделать это с помощью LaTeX и BibTeX?
решение1
Сначала вы можете подготовить свою библиографию обычным способом. Затем вы можете установить номера, которые вы предпочитаете, как показано ниже, добавив код между %%START
и %%END
.
Среда filecontents
используется только для примера, используйте свою собственную базу данных.
\begin{filecontents}{\jobname.bib}
@book{Knuth1984texbook,
Author = {Knuth, D.E.},
Title = {The \TeX book, volume A of Computers and typesetting},
Publisher = {Addison-Wesley},
Year = {1984},
}
@book{Chomsky1957,
Address = {The Hague},
Author = {Noam Chomsky},
Publisher = {Mouton},
Title = {Syntactic Structures},
Year = {1957},
}
@book{Chomsky1965,
Address = {Cambridge Mass.},
Author = {Noam Chomsky},
Publisher = {MIT Press},
Title = {Aspects of the Theory of Syntax},
Year = {1965},
}
\end{filecontents}
\documentclass{article}
\usepackage{xpatch} % also loads expl3
%%START
\makeatletter
\xpatchcmd{\@bibitem}
{\item}
{\item[\@biblabel{\changekey{#1}}]}
{}{}
\xpatchcmd{\@bibitem}
{\the\value{\@listctr}}
{\changekey{#1}}
{}{}
\makeatother
\ExplSyntaxOn
\cs_new:Npn \changekey #1
{
\str_case:nVF {#1} \g_changekey_list_tl { ?? }
}
\cs_new_protected:Npn \setchangekey #1 #2
{
\tl_gput_right:Nn \g_changekey_list_tl { {#1}{#2} }
}
\tl_new:N \g_changekey_list_tl
\cs_generate_variant:Nn \str_case:nnF { nV }
\ExplSyntaxOff
\setchangekey{Knuth1984texbook}{9}
\setchangekey{Chomsky1957}{3}
\setchangekey{Chomsky1965}{7}
%%END
\begin{document}
\section{First section}
This document is an example of \texttt{thebibliography} environment using
bibliography management. Three items are cited: \emph{Syntactic Structures}
book \cite{Chomsky1957}, \emph{Aspects} \cite{Chomsky1965}, and
Donald Knuth's \TeX book \cite{Knuth1984texbook}.
\bibliographystyle{plain}
\bibliography{\jobname}
\end{document}
Я использовал те же данные, что и Алан Манн, просто из лени.
решение2
Вот вариант решения, который я предложил вам для начала. Учитывая ограниченное использование этого, вероятно, не стоит делать решение более сложным. Базовый синтаксис ссылки:
\mycite{<number>}{<bib-key>}
Если вы хотите сослаться на уже использованную цитату (названную с помощью \mycite
), вы можете просто использовать \ref{<bib=key}
.
Затем вы вводите фактические элементы библиографии, используя \mybib
для каждого элемента. Они появятся с номером, который вы использовали в \mycite
команде, и появятся в том порядке, в котором вы введете их в itemize
среду.
\begin{filecontents}{\jobname.bib}
@book{Knuth1984texbook,
Author = {Knuth, D.E.},
Title = {The TEXbook, volume A of Computers and typesetting},
Year = {1984}}
@book{Chomsky1957,
Address = {The Hague},
Author = {Noam Chomsky},
Publisher = {Mouton},
Title = {Syntactic Structures},
Year = {1957}}
@book{Chomsky1965,
Address = {Cambridge Mass.},
Author = {Noam Chomsky},
Publisher = {{MIT} Press},
Title = {Aspects of the Theory of Syntax},
Year = {1965}}
\end{filecontents}
\documentclass[12pt]{article}
\usepackage{natbib}
\usepackage{calc}
\usepackage{etoolbox}
\usepackage{bibentry}
\usepackage{enumitem}
\SetLabelAlign{bibright}{\hss\llap{[#1]}}
\newcounter{mynum}
\newcommand\mycite[2]{[#1]\setcounter{mynum}{0}\addtocounter{mynum}{#1-1}\refstepcounter{mynum}\label{#2}}
\newcommand\mybib[1]{\item[\ref{#1}]\bibentry{#1}}
\begin{document}
\section{First section}
This document is an example of \texttt{thebibliography} environment using
bibliography management. Three items are cited: \emph{Syntactic Structures}
book \mycite{6}{Chomsky1957}, \emph{Aspects} \mycite{4}{Chomsky1965}, and
Donald Knuth's TeXBook \mycite{10}{Knuth1984texbook}. The Linguistics related items are
[\ref{Chomsky1965},\ref{Chomsky1957}].
\medskip
\bibliographystyle{unsrtnat}
\nobibliography{\jobname}
\begin{itemize}[labelwidth=!,labelsep=1em,align=bibright]
\mybib{Chomsky1957}
\mybib{Chomsky1965}
\mybib{Knuth1984texbook}
\end{itemize}
\end{document}
решение3
Прочитав ваши комментарии, я думаю, что есть гораздо более простой способ: есть хороший пакет xcite
, он позволит вам импортировать цитаты из другого документа, и вам не нужно будет беспокоиться о числах (в следующем примере предполагается, что другой документ называется document.tex
):
\documentclass{article}
\usepackage{xcite}
\externalcitedocument{document}
\begin{document}
\cite{knuth}
\end{document}
решение4
Поскольку вопрос на самом деле касается использования пользовательских меток для записей в базе данных bib, я хотел бы добавить, что есть стандартный способ сделать это с помощью Biblatex. Просто используйте поле данныхстенография, что переопределит стандартную стенографию только для этой записи в базе данных. Я вставил несколько букв в следующий минимальный рабочий пример, но вы, конечно, можете вставить цифры или что-то еще, что вам нравится.
\begin{filecontents}{thebib.bib}
@article{Boll,
author = {Boll, Grodan},
title = {Frogs now and then},
year = 1995,
journal = {Allers},
volume = 3,
shorthand = {FN\&T}
}
\end{filecontents}
\documentclass{article}
\usepackage{biblatex}
\addbibresource{thebib.bib}
\begin{document}
Frogs are common, see also \cite{Boll}.
\printbibliography
\end{document}