From 685ba816f3dafba3b41b4679ab0a66524b04aae5 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 19 Oct 2015 22:23:55 +0000 Subject: biblatex-opcit-booktitle (18oct15) git-svn-id: svn://tug.org/texlive/trunk@38671 c570f23f-e606-0410-a88d-b1316a301751 --- .../biblatex-opcit-booktitle.sty | 140 ++++++++++++++++++--- 1 file changed, 124 insertions(+), 16 deletions(-) (limited to 'Master/texmf-dist/tex') diff --git a/Master/texmf-dist/tex/latex/biblatex-opcit-booktitle/biblatex-opcit-booktitle.sty b/Master/texmf-dist/tex/latex/biblatex-opcit-booktitle/biblatex-opcit-booktitle.sty index 0a1f524a728..a373b4927c1 100644 --- a/Master/texmf-dist/tex/latex/biblatex-opcit-booktitle/biblatex-opcit-booktitle.sty +++ b/Master/texmf-dist/tex/latex/biblatex-opcit-booktitle/biblatex-opcit-booktitle.sty @@ -15,9 +15,16 @@ % % The Current Maintainer of this work is Maïeul Rouquette \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{biblatex-opcit-booktitle}[2015/07/02 v1.1.1 Manage op. cit. when using subentry] +\ProvidesPackage{biblatex-opcit-booktitle}[2015/08/30 v1.2.0 Manage op. cit. when using subentry] \RequirePackage{xpatch} +\DeclareFieldFormat{bibhypertarget:crossref}{% + \bibhypertarget{\iffootnote{f}{t}:\cbx@resetcount:\thefield{crossref}}{#1}} + +\DeclareFieldFormat{bibhyperlink:crossref}{% + \bibhyperlink{\iffootnote{f}{t}:\cbx@resetcount:\thefield{crossref}}{#1}} + + \newbibmacro*{cite:seen:related}{% {\xifinlistcs{\thefield{crossref}}{blx@bsee@\the\c@refsection}% {}% @@ -28,6 +35,7 @@ {#2}% {#1}} +% verbose-trad-1 and verbose-trad2 \xpatchbibmacro{cite}% {\usebibmacro{cite:full}% \usebibmacro{cite:save}}% @@ -35,7 +43,12 @@ {}% {}% - +% verbose-trad3. Not that lines must be applied AFTER the previous one +\xpatchbibmacro{cite}% + {\usebibmacro{cite:full}}% + {\usebibmacro{cite:test:ifrelated:verbose-trad3}}% + {}% + {}% \newbibmacro*{cite:test:ifrelated}% {\ifboolexpr {% test {\iffieldundef{crossref}}% @@ -46,10 +59,27 @@ {\usebibmacro{cite:full}% \usebibmacro{cite:save}}% {\ifrelatedunseen% - {\usebibmacro{cite:seen:related}% + {\printtext[bibhypertarget:crossref]{% + \usebibmacro{cite:seen:related}% \usebibmacro{cite:full}% - \usebibmacro{cite:save}}% + \usebibmacro{cite:save}}}% {\usebibmacro{related:info}}}} + +\newbibmacro*{cite:test:ifrelated:verbose-trad3}% + {\ifboolexpr {% + test {\iffieldundef{crossref}}% + or not (test {\ifentrytype{inbook}}% + or test {\ifentrytype{incollection}}% + or test {\ifentrytype{inproceedings}}% + or test {\ifentrytype{bookinbook}})}% + {\usebibmacro{cite:full}% + }% + {\ifrelatedunseen% + {\printtext[bibhypertarget:crossref]{% + \usebibmacro{cite:seen:related}% + \usebibmacro{cite:full}% + }}% + {\usebibmacro{related:info}}}} \newbibmacro*{related:info}{% % Here an hack to use the short form of the booktitle without recurring to a .dbx file in order to define new fields (because recurring to a .dbx file for such feature is complex for a little feature) @@ -61,16 +91,21 @@ }% {}% \usebibmacro{cite:full:citepages}% - \usedriver% + \printtext[bibhypertarget]{\usedriver% {\DeclareNameAlias{sortname}{default}}% - {inbook:rel}% + {inbook:rel:\blx@cbxfile}}% } -\DeclareBibliographyDriver{inbook:rel}{% +\DeclareBibliographyDriver{inbook:rel:verbose-trad1}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% - \usebibmacro{author/translator+others}% - \setunit{\labelnamepunct}\newblock + \ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}% + {\usebibmacro{cite:idem}}% + {\ifnameundef{labelname}% + {}% + {\usebibmacro{cite:name}}% + }% + \newblock% \usebibmacro{title}% \newunit \printlist{language}% @@ -78,16 +113,89 @@ \usebibmacro{byauthor}% \newunit\newblock \usebibmacro{in:}% + \printtext[bibhyperlink:crossref]{% \usebibmacro{maintitle+booktitle}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit% + \iffieldundef{maintitle}% + {\printfield{volume}% + \printfield{part}} + {}% + }% + \newunit\newblock + \usebibmacro{chapter+pages}% \newunit\newblock - \usebibmacro{byeditor+others}% - \newunit% - \iffieldundef{maintitle}% - {\printfield{volume}% - \printfield{part}} + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} {}% - \newunit% - \bibstring[\mkibid]{opcit}% + \usebibmacro{finentry}} + + +\DeclareBibliographyDriver{inbook:rel:verbose-trad2}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}% + {\usebibmacro{cite:idem}}% + {\usebibmacro{author/translator+others}\setunit{\labelnamepunct}}% + \newblock% + \usebibmacro{title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{in:}% + \printtext[bibhyperlink:crossref]{% + \usebibmacro{maintitle+booktitle}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit% + \iffieldundef{maintitle}% + {\printfield{volume}% + \printfield{part}} + {}% + \newunit% + \bibstring[\mkibid]{opcit}% + }% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit\newblock + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{inbook:rel:verbose-trad3}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \printnames{labelname}% + \setunit*{\nametitledelim}% + \usebibmacro{title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{in:}% + \printtext[bibhyperlink:crossref]{% + \usebibmacro{maintitle+booktitle}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit% + \iffieldundef{maintitle}% + {\printfield{volume}% + \printfield{part}} + {}% + }% \newunit\newblock \usebibmacro{chapter+pages}% \newunit\newblock -- cgit v1.2.3