Я хочу написать какой-нибудь текст между заголовком библиографии и содержанием.
Я пытался решить с помощьюэто решениено это не работает с пакетом multibib. Спасибо.
% arara: xelatex
% arara: bibtex: { files: [ main, B , A ] }
% arara: xelatex
% arara: xelatex
% arara: clean1
\documentclass{report}
\usepackage{etoolbox}
\newcommand{\bibpreface}[1]{\patchcmd{\thebibliography}{\list}{#1\list}{}{}}
\usepackage[resetlabels,labeled]{multibib}
\usepackage{xepersian}
\settextfont{XB Niloofar}
\newcommand{\ReferenceDocuments}{\rl{مستندات مرجع}}
\newcommand{\RelevantDocumentation}{\rl{مستندات ذیربط}}
\newcites{A,B}{\ReferenceDocuments%
,
\RelevantDocumentation}
\begin{document}
یک استناد به مستندات مرجع
\cite{bb}
یک استناد به مستندات ذیربط
\citeA{aa}
یک استناد به مراجع اصلی
\citeA{cc}
یک استناد دیگر
\citeB{dd}
\renewcommand{\refname}{\rl{مراجع}}
\bibpreface{مقداری متن قبل از محتویات\\}
\bibliographystyle{plain-fa}
\bibliography{lit}
\bibliographystyleA{plain}
\bibliographyA{lit}
\bibliographystyleB{plain}
\bibliographyB{lit}
\end{document}
И lit.bib
:
@Article{aa,
author = {Author, A.},
title = {Title},
journal = {Journal},
year = 2000
}
@ARTICLE{bb,
AUTHOR = {واحدی, مصطفی},
TITLE = {درختان پوشای کمینه دورنگی مسطح},
JOURNAL = {مجله فارسی نمونه},
VOLUME = {1},
YEAR = {1387},
NUMBER = {2},
MONTH = {آبان},
PAGES = {22-30},
LANGUAGE = {Persian}
}
@ARTICLE{dd,
AUTHOR = {بهبودیفام, حسین},
TITLE = {یک عنوان درست و درمون},
JOURNAL = {مجله فارسی نمونه},
VOLUME = {1},
YEAR = {1387},
NUMBER = {2},
MONTH = {آبان},
PAGES = {22-30},
LANGUAGE = {Persian}
}
@ARTICLE{cc,
AUTHOR = {بهبودی, احمد},
TITLE = {یک عنوان درست و درمون},
JOURNAL = {مجله فارسی نمونه},
VOLUME = {1},
YEAR = {1387},
NUMBER = {2},
MONTH = {آبان},
PAGES = {22-30},
LANGUAGE = {Persian}
}
решение1
Одним из вариантов является использование «внутренностей» библатекса:
\documentclass{report}
\usepackage{hyperref}
% \usepackage{xepersian}
% \settextfont{XB Niloofar}
% bibliography
\usepackage[natbib = true, % true allows usage of citet, citep etc. commands
style = authoryear, % numeric, % trad-plain: use old bibtex plain style
backend = biber, %
hyperref = true, %
giveninits = true, % first names are reduced to initials
maxbibnames = 8, maxcitenames = 2, %
uniquename = init,
uniquelist = minyear,
doi = false, url = false, isbn = false, eprint = false] % supress all id numbers
{biblatex} %
\addbibresource{lit.bib}
% categories
\DeclareBibliographyCategory{published}
\DeclareBibliographyCategory{conf}
% add papers to categories
\addtocategory{published}{aa}
\addtocategory{published}{dd}
\addtocategory{conf}{bb}
\addtocategory{conf}{cc}
%
\defbibfilter{pub}{category=published}
\defbibfilter{conf}{category=conf}
\begin{document}
\nocite{*}
\defbibnote{A}{During the course of this thesis my research has contributed to the following publications:}
\defbibnote{B}{Conference papers}
\printbibliography[
title = {Peer-reviewed journals},
heading=subbibliography,
filter = pub,
prenote = A
]
\printbibliography[
title = {Conference contributions},
heading=subbibliography,
filter = conf,
prenote = B
]
\end{document}
Вам нужно скомпилировать это с помощью biber вместо bibtex, желательно с помощью, latexmk
который также позаботится о компиляции документа так часто, как это необходимо (и вам не нужно беспокоиться о том, как вызывать biber). Команда простоlatexmk -pdf -xelatex <yourfile>
Извините, но мне пришлось изменить библиографию, поскольку у меня нет персидских шрифтов:
@Article{aa,
author = {Author, A.},
title = {Title A},
journal = {Journal},
year = 2000
}
@ARTICLE{bb,
AUTHOR = {Author, B.},
TITLE = {Title B},
JOURNAL = {Journal B},
VOLUME = {1},
YEAR = {1387},
NUMBER = {2},
MONTH = {آبان},
PAGES = {22-30},
LANGUAGE = {Persian}
}
@ARTICLE{dd,
AUTHOR = {Author, C.},
TITLE = {Title C},
JOURNAL = {Journal C},
VOLUME = {1},
YEAR = {1387},
NUMBER = {2},
MONTH = {آبان},
PAGES = {22-30},
LANGUAGE = {Persian}
}
@ARTICLE{cc,
AUTHOR = {Author, D.},
TITLE = {Title D},
JOURNAL = {Journal D},
VOLUME = {1},
YEAR = {1387},
NUMBER = {2},
MONTH = {آبان},
PAGES = {22-30},
LANGUAGE = {Persian}
}
Редактировать: Используем bibtex и multibib (обратите внимание, что это похоже на жестокий хак, и, вероятно, так оно и есть...):
\documentclass{report}
\usepackage{hyperref}
% \usepackage{xepersian}
% \settextfont{XB Niloofar}
\usepackage[resetlabels,labeled]{multibib}
\newcites{A,B}
{{BibTitle A\newline\vspace{2ex}\newline\mdseries\normalsize Description text for this bibliography A},%
{BibTitle B\newline\vspace{2ex}\newline\mdseries\normalsize Description text for this bibliography B}%
}
\begin{document}
\nociteA{aa,cc}
\bibliographystyleA{plain}
\bibliographyA{lit}
\nociteB{bb,dd}
\bibliographystyleB{plain}
\bibliographyB{lit}
\end{document}
Вы можете поиграть с количеством вертикального расстояния, добавляемого между заголовком и текстом. Однако я не нашел решения в руководстве по multibib. Похоже, что там подразумеваются только заголовки, а не вводный текст.
Вывод (только для Bib A, поскольку другой установлен на новую страницу в классе отчета):
решение2
Другой способ (на мой взгляд, более легкий) — удалить заголовки с помощью этой техники:Использование multibib без дополнительного заголовка
Затем вручную добавьте заголовки там, где это необходимо.