biblatex: different bibstyles in the same document? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)Citation lists with different stylesbiblatex: filter out publications from a specific author in the references dynamicallybiblatex: multiple stylesbiblatex : avoid redundant informationIndependent publication list with numbered list using biblatex and refsectionMixing bibliographic styles in BiblatexBiblatex BibliographyOption with braces?Specific/Custom cite- and bib-style needed: How to write/edit/program it?Multiple bibliographies, multiple styles, discontiguous regionsbiblatex-apa output reference list differs from that of Publication Manual of the APA, Sixth EditionBiblatex: using “dashed” in one refsection but not anotherbiblatex-apa and fullcite* --> year of ambiguous citationHow to automatically cite your own publications in a resume?How to reverse name and first name?biblatex minor problems with citationsUse alias with booktitle in biberSetting uniquelist=true should print second author in all corresponding lists of namesoptions for styling fullciteBibliography per chapter and a global bibliography in alphabetic order
Is Bran literally the world's memory?
New Order #6: Easter Egg
Pointing to problems without suggesting solutions
A German immigrant ancestor has a "Registration Affidavit of Alien Enemy" on file. What does that mean exactly?
"Destructive power" carried by a B-52?
Can two people see the same photon?
Can gravitational waves pass through a black hole?
Can anyone explain what's the meaning of this in the new Game of Thrones opening animations?
Is there a verb for listening stealthily?
Does the main washing effect of soap come from foam?
Table formatting with tabularx?
Short story about astronauts fertilizing soil with their own bodies
How did 'ликвиди́ровать' semantically shift to mean 'abolish' and 'destroy, kill'?
Noise in Eigenvalues plot
Which types of prepositional phrase is "toward its employees" in Philosophy guiding the organization's policies towards its employees is not bad?
How to show a density matrix is in a pure/mixed state?
Why is Rajasthan pro BJP in the LS elections but not in the state elections?
Do British people often use the word lightning conductor?
Bash script to execute command with file from directory and condition
How do you cope with tons of web fonts when copying and pasting from web pages?
Who's this lady in the war room?
What helicopter has the most rotor blades?
Magento 2 - Add additional attributes in register
How to name indistinguishable henchmen in a screenplay?
biblatex: different bibstyles in the same document?
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)Citation lists with different stylesbiblatex: filter out publications from a specific author in the references dynamicallybiblatex: multiple stylesbiblatex : avoid redundant informationIndependent publication list with numbered list using biblatex and refsectionMixing bibliographic styles in BiblatexBiblatex BibliographyOption with braces?Specific/Custom cite- and bib-style needed: How to write/edit/program it?Multiple bibliographies, multiple styles, discontiguous regionsbiblatex-apa output reference list differs from that of Publication Manual of the APA, Sixth EditionBiblatex: using “dashed” in one refsection but not anotherbiblatex-apa and fullcite* --> year of ambiguous citationHow to automatically cite your own publications in a resume?How to reverse name and first name?biblatex minor problems with citationsUse alias with booktitle in biberSetting uniquelist=true should print second author in all corresponding lists of namesoptions for styling fullciteBibliography per chapter and a global bibliography in alphabetic order
I'm using biblatex
to print the bibliography for my document and I'm quite happy with the result. However, I also want to add a list of personal publications in another part of the document. It works very well with the refsection
environment, but I would like to use for this part another style (e.g., biblatex-publist
).
Q: Is it possible to use two different biblatex
styles at different parts of a single document?
Example:
For the general bibliography:
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford
Stein. Introduction to Algorithms, Third Edition. 3rd. The MIT Press,
2009
For the personal publication list:
1987 (with John Doe and Mary Hall). Are there new trends in gardening?
In: Gardening Practice 24, pp. 10–15.
It seems that the style can only be specified when loading the package which makes the style a global option. Is there a way around this?
biblatex
add a comment |
I'm using biblatex
to print the bibliography for my document and I'm quite happy with the result. However, I also want to add a list of personal publications in another part of the document. It works very well with the refsection
environment, but I would like to use for this part another style (e.g., biblatex-publist
).
Q: Is it possible to use two different biblatex
styles at different parts of a single document?
Example:
For the general bibliography:
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford
Stein. Introduction to Algorithms, Third Edition. 3rd. The MIT Press,
2009
For the personal publication list:
1987 (with John Doe and Mary Hall). Are there new trends in gardening?
In: Gardening Practice 24, pp. 10–15.
It seems that the style can only be specified when loading the package which makes the style a global option. Is there a way around this?
biblatex
1
Welcome to TeX.SX! You can have a look at our starter guide to familiarize yourself further with our format. Though it might not be crucial to your question a nice MWE is still greatly appreciated.
– moewe
Apr 8 '14 at 14:10
The following question seems to be related link
– Tahtisilma
Apr 8 '14 at 14:35
I'm afraid it does not look like this is currently possible withbiblatex
. While different sorting schemes for bibliographies have been implemented (as mentioned by lockstep in Tahtisilma's link above), different (bibliography/citation) styles is a different and much more complicated issue.
– moewe
Apr 8 '14 at 14:41
1
Another possibility would be to create a newcite
command for your personal publications lists and just use that. Something likeDeclareCiteCommandperscite...
, which provided output in the desired way, could be used to mimic the appearance of a second bibliographical style.
– jon
Apr 9 '14 at 13:50
1
Do you really need different citation styles? For different bibliography styles you may probably define appropriate bibliography environments withdefbibenvironment
.
– Oleg Domanov
Apr 30 '14 at 15:31
add a comment |
I'm using biblatex
to print the bibliography for my document and I'm quite happy with the result. However, I also want to add a list of personal publications in another part of the document. It works very well with the refsection
environment, but I would like to use for this part another style (e.g., biblatex-publist
).
Q: Is it possible to use two different biblatex
styles at different parts of a single document?
Example:
For the general bibliography:
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford
Stein. Introduction to Algorithms, Third Edition. 3rd. The MIT Press,
2009
For the personal publication list:
1987 (with John Doe and Mary Hall). Are there new trends in gardening?
In: Gardening Practice 24, pp. 10–15.
It seems that the style can only be specified when loading the package which makes the style a global option. Is there a way around this?
biblatex
I'm using biblatex
to print the bibliography for my document and I'm quite happy with the result. However, I also want to add a list of personal publications in another part of the document. It works very well with the refsection
environment, but I would like to use for this part another style (e.g., biblatex-publist
).
Q: Is it possible to use two different biblatex
styles at different parts of a single document?
Example:
For the general bibliography:
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford
Stein. Introduction to Algorithms, Third Edition. 3rd. The MIT Press,
2009
For the personal publication list:
1987 (with John Doe and Mary Hall). Are there new trends in gardening?
In: Gardening Practice 24, pp. 10–15.
It seems that the style can only be specified when loading the package which makes the style a global option. Is there a way around this?
biblatex
biblatex
edited Apr 8 '14 at 14:12
moewe
97.2k10118363
97.2k10118363
asked Apr 8 '14 at 14:05
ArnoArno
562
562
1
Welcome to TeX.SX! You can have a look at our starter guide to familiarize yourself further with our format. Though it might not be crucial to your question a nice MWE is still greatly appreciated.
– moewe
Apr 8 '14 at 14:10
The following question seems to be related link
– Tahtisilma
Apr 8 '14 at 14:35
I'm afraid it does not look like this is currently possible withbiblatex
. While different sorting schemes for bibliographies have been implemented (as mentioned by lockstep in Tahtisilma's link above), different (bibliography/citation) styles is a different and much more complicated issue.
– moewe
Apr 8 '14 at 14:41
1
Another possibility would be to create a newcite
command for your personal publications lists and just use that. Something likeDeclareCiteCommandperscite...
, which provided output in the desired way, could be used to mimic the appearance of a second bibliographical style.
– jon
Apr 9 '14 at 13:50
1
Do you really need different citation styles? For different bibliography styles you may probably define appropriate bibliography environments withdefbibenvironment
.
– Oleg Domanov
Apr 30 '14 at 15:31
add a comment |
1
Welcome to TeX.SX! You can have a look at our starter guide to familiarize yourself further with our format. Though it might not be crucial to your question a nice MWE is still greatly appreciated.
– moewe
Apr 8 '14 at 14:10
The following question seems to be related link
– Tahtisilma
Apr 8 '14 at 14:35
I'm afraid it does not look like this is currently possible withbiblatex
. While different sorting schemes for bibliographies have been implemented (as mentioned by lockstep in Tahtisilma's link above), different (bibliography/citation) styles is a different and much more complicated issue.
– moewe
Apr 8 '14 at 14:41
1
Another possibility would be to create a newcite
command for your personal publications lists and just use that. Something likeDeclareCiteCommandperscite...
, which provided output in the desired way, could be used to mimic the appearance of a second bibliographical style.
– jon
Apr 9 '14 at 13:50
1
Do you really need different citation styles? For different bibliography styles you may probably define appropriate bibliography environments withdefbibenvironment
.
– Oleg Domanov
Apr 30 '14 at 15:31
1
1
Welcome to TeX.SX! You can have a look at our starter guide to familiarize yourself further with our format. Though it might not be crucial to your question a nice MWE is still greatly appreciated.
– moewe
Apr 8 '14 at 14:10
Welcome to TeX.SX! You can have a look at our starter guide to familiarize yourself further with our format. Though it might not be crucial to your question a nice MWE is still greatly appreciated.
– moewe
Apr 8 '14 at 14:10
The following question seems to be related link
– Tahtisilma
Apr 8 '14 at 14:35
The following question seems to be related link
– Tahtisilma
Apr 8 '14 at 14:35
I'm afraid it does not look like this is currently possible with
biblatex
. While different sorting schemes for bibliographies have been implemented (as mentioned by lockstep in Tahtisilma's link above), different (bibliography/citation) styles is a different and much more complicated issue.– moewe
Apr 8 '14 at 14:41
I'm afraid it does not look like this is currently possible with
biblatex
. While different sorting schemes for bibliographies have been implemented (as mentioned by lockstep in Tahtisilma's link above), different (bibliography/citation) styles is a different and much more complicated issue.– moewe
Apr 8 '14 at 14:41
1
1
Another possibility would be to create a new
cite
command for your personal publications lists and just use that. Something like DeclareCiteCommandperscite...
, which provided output in the desired way, could be used to mimic the appearance of a second bibliographical style.– jon
Apr 9 '14 at 13:50
Another possibility would be to create a new
cite
command for your personal publications lists and just use that. Something like DeclareCiteCommandperscite...
, which provided output in the desired way, could be used to mimic the appearance of a second bibliographical style.– jon
Apr 9 '14 at 13:50
1
1
Do you really need different citation styles? For different bibliography styles you may probably define appropriate bibliography environments with
defbibenvironment
.– Oleg Domanov
Apr 30 '14 at 15:31
Do you really need different citation styles? For different bibliography styles you may probably define appropriate bibliography environments with
defbibenvironment
.– Oleg Domanov
Apr 30 '14 at 15:31
add a comment |
2 Answers
2
active
oldest
votes
You cannot do this automatically, but in some cases it is possible to break the bbx
file into pieces to give you what you want. For the case of mixing the authoryear
style and the publist
style this is pretty straight forward. Working from the following MWE
documentclassarticle
usepackage[labelnumber=true, bibstyle=authoryear]biblatex
% usepackage[bibstyle=publist]biblatex
addbibresourcebiblatex-examples.bib
% inputjobname Pre
makeatletter
defbpl@osurnameBaez
defbpl@ofirstnameJohn C.
makeatother
begindocument
nocitebaez/article
printbibliography
inputjobname Post
beginrefsection
nocitebaez/article
printbibliography
endrefsection
enddocument
The authoryear
output is
and the publist
output is
If we include the jobname Pre
and jobname Post
files with usepackage[labelnumber=true, bibstyle=authoryear]biblatex
we get
with the exception of a stray space at the beginning of the "publist" style entry, the output matches both styles.
The "magic" is occurring in the jobname Pre
and jobname Post
files. To create these files, I copied publist.bbx
into jobname Post
and then moved things that caused errors, or seemed like it belonged in the preamble, into jobname Pre
. Anything that still caused errors when it was in jobname Pre
I deleted.
This gave me a jobname Pre
of
makeatletter
%
% The omitted name of the publication list author
defbpl@osurname
defbpl@ofirstname
defbpl@ovonpart
%
% Manual way to specify omitted name
defomitname%
@ifnextchar[%
omitname@i
omitname@i[]%
defomitname@i[#1]%
@ifnextchar[%
omitname@ii#1
omitname@ii#1[]%
defomitname@ii#1[#2]#3%
% Do stuff
defbpl@osurname#3
ifx@empty#1elsedefbpl@ofirstname#1fi
ifx@empty#2elsedefbpl@ovonpart#2fi
%
% Formatting of year in margin par (if requested)
providecommand*plmarginyear[1]%
raggedleftsmalltextbf#1%
%
% Options
%
DeclareBibliographyOptionomitnamedefbpl@osurname#1
DeclareBibliographyOptionomitfirstnamedefbpl@ofirstname#1
DeclareBibliographyOptionomitnameprefixdefbpl@ovonpart#1
newifif@marginyear@marginyearfalse
DeclareBibliographyOptionmarginyear[true]%
ifstrequal#1true@marginyeartruereversemarginpar@marginyearfalse
newifif@unboldyear@unboldyearfalse
DeclareBibliographyOptionboldyear[true]%
ifstrequal#1false@unboldyeartrue@unboldyearfalse
%
% Bibliography filter
%
% Inspired by http://tex.stackexchange.com/a/28555/19291
DeclareBibliographyCategoryfiltered
DeclareIndexNameFormatauthorfiltered%
bpl@normalize#1bpl@tsurname%
bpl@normalize#3bpl@tfirstname%
bpl@normalize#5bpl@tvonpart%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
bpl@normalizebpl@ovonpartbpl@evonpart%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
addtocategoryfilteredthefieldentrykey
DeclareIndexNameFormateditorfiltered%
edefbpl@tsurname#1%
edefbpl@tfirstname#3%
edefbpl@tvonpart#5%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
bpl@normalizebpl@ovonpartbpl@evonpart%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
addtocategoryfilteredthefieldentrykey
DeclareIndexNameFormat[inbook,inproceedings,incollection]editorfiltered%
% AtDataInput%
% indexnames[authorfiltered]author%
% indexnames[editorfiltered]editor%
%
defbibfilterminecategory=filtered
AtBeginDocument%
if@unboldyear
renewbibmacro*date:labelyear+extrayear%
usebibmacrodate:makedate%
fi
%
% l7n
%
NewBibliographyStringwith
NewBibliographyStringparttranslationof
DefineBibliographyStringsenglish%
parttranslationof = partial translation of,
with = with
DefineBibliographyStringsfrench%
parttranslationof = traduction partielle de,
with = avec
DefineBibliographyStringsgerman%
parttranslationof = Teil"ubersetzung von,
with = mit
%
% New driver for reviews
%
DeclareBibliographyDriverreview%
usebibmacrorauthor/label%
setunit*addcolonspace%
usebibmacrotitle%
newunitnewblock
usebibmacroin:%
usebibmacrojournal+issuetitle%
newunitnewblock
printfieldnote%
setunitaddcommaspace%
printfieldpages
newunitnewblock
printfieldissn%
newunitnewblock
printfielddoi%
setunitaddspace
usebibmacroaddendum+pubstate%
newunitnewblock
usebibmacrourl+urldate%
newunitnewblock
usebibmacropageref%
newunitnewblock
usebibmacrorelated%
usebibmacrofinentry
%
% Sorting schemes
%
% Consider the whole date (year-month-day)
% Sorting date (descending), name, title
DeclareSortingSchemeddnt
sort
fieldpresort
sort[final]
fieldsortkey
sort[direction=descending]
field[strside=left,strwidth=4]sortyear
field[strside=left,strwidth=4]year
literal9999
sort[direction=descending]
field[padside=left,padwidth=2,padchar=0]month
literal00
sort[direction=descending]
field[padside=left,padwidth=2,padchar=0]day
literal00
sort
fieldsortname
fieldauthor
fieldeditor
fieldtranslator
fieldsorttitle
fieldtitle
sort
fieldsorttitle
fieldtitle
% Sorting year (descending), month, day, name, title
DeclareSortingSchemeydmdnt
sort
fieldpresort
sort[final]
fieldsortkey
sort[direction=descending]
field[strside=left,strwidth=4]sortyear
field[strside=left,strwidth=4]year
literal9999
sort
field[padside=left,padwidth=2,padchar=0]month
literal00
sort
field[padside=left,padwidth=2,padchar=0]day
literal00
sort
fieldsortname
fieldauthor
fieldeditor
fieldtranslator
fieldsorttitle
fieldtitle
sort
fieldsorttitle
fieldtitle
% Sorting date (ascending), name, title
DeclareSortingSchemednt
sort
fieldpresort
sort[final]
fieldsortkey
sort
field[strside=left,strwidth=4]sortyear
field[strside=left,strwidth=4]year
literal9999
sort
field[padside=left,padwidth=2,padchar=0]month
literal00
sort
field[padside=left,padwidth=2,padchar=0]day
literal00
sort
fieldsortname
fieldauthor
fieldeditor
fieldtranslator
fieldsorttitle
fieldtitle
sort
fieldsorttitle
fieldtitle
makeatother
and a jobname Post
of
makeatletter
%
% Field format definitions
%
DeclareFieldFormatbibentrysetcountmkbibparensmknumalph#1
DeclareFieldFormatlabelnumberwidthmkbibbrackets#1
DeclareFieldFormatshorthandwidthmkbibbrackets#1
DeclareFieldFormatrelated:parttranslationofmkbibbrackets#1
%
% Deal with numbering (resume numbers in refsections)
%
csnumgdefbbx@itemtotal0
csnumgdefbbx@currentitem0
csnumgdefbbx@saverefsection0
newboolnewsection
pretoblx@refsectionglobalsetboolnewsectiontrue
defbibenvironmentbibliography
list
printtext[labelnumberwidth]%
printfieldprefixnumber%
printfieldlabelnumber
setlengthlabelwidthlabelnumberwidth%
setlengthleftmarginlabelwidth%
setlengthlabelsepbiblabelsep%
addtolengthleftmarginlabelsep%
setlengthitemsepbibitemsep%
setlengthparsepbibparsep%
renewcommand*makelabel[1]hss##1%
endlist
ifnumgreaterc@refsectionbbx@saverefsection%
csnumgdefbbx@itemtotalcsusebbx@itemtotal+csusebbx@currentitem%
csnumgdefbbx@saverefsectionc@refsection%
item
DeclareFieldFormatlabelnumber%
ifboolnewsection%
% Fix start counter value
csnumgdefbbx@itemtotalcsusebbx@itemtotal-#1+1%
globalsetboolnewsectionfalse%
%
mkbibdesc#1%
csnumgdefbbx@currentitem#1%
% Print labelnumber as actual number, plus item total
newrobustcmdmkbibdesc[1]%
numbernumexprcsusebbx@itemtotal+#1relax
newcommand*decreasebbxnumbering[1]csnumgdefbbx@itemtotalcsusebbx@itemtotal-#1
%
% New environment for (foreign) reviews
%
defbibenvironmentreviews
beginenumerate%
smallsetlengthitemsep0pt
endenumerate
item
%
% Helper function:
% Removing braces from names (courtesy of egreg at
% http://tex.stackexchange.com/a/79583/19291)
% and normalize spaces
defbpl@normalize#1#2%
begingroup
defbibnamedelima %
defbibnamedelimb %
defIeC##1##1%
protected@edef@tempa#1%
gdef@gtempa%
expandafterbpl@@normalize@tempa@nil
endgroup
let#2@gtempa
defbpl@@normalize#1%
ifx#1@nilelse
expandaftergdefexpandafter@gtempaexpandafter@gtempa#1%
expandafterbpl@@normalize
fi
%
% Remove omitted name from author and editor lists
%
newtogglemyselfprec
newtogglehadmyself
DeclareNameFormatauthor%
ifthenelsevaluelistcount=1ifthenelsevalueauthor>1bibopenparenbibstringwithaddspace%
% Exclude omitted author
bpl@normalize#1bpl@tsurname%
bpl@normalize#3bpl@tfirstname%
bpl@normalize#5bpl@tvonpart%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
bpl@normalizebpl@ovonpartbpl@evonpart%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
toggletruemyselfprectoggletruehadmyself%
ifthenelsevaluelistcount=1ANDvalueliststop=1
stepcounterliststop
ifthenelsevaluelistcount=1togglefalsehadmyself%
ifboolexpr
test iftogglemyselfprec
and
test ifnumlessvaluelistcount3
%
ifnumlessvaluelistcountvalueliststop-1%
addcommaaddspace%
iftogglehadmyself%
ifnumlessvaluelistcountvalueliststop%
addcommaaddspace%
addspacebibstringandaddspace
addspacebibstringandaddspace%
%
%
iffirstinits
ifblank#4#4addspace%
ifblank#3#3addspace%
ifblank#5#5addspace%
togglefalsemyselfprec%
#1%
usebibmacroname:andothers%
ifthenelsevaluelistcount=valueliststopANDvalueauthor>1unspacebibcloseparen%
DeclareNameFormateditor%
ifthenelsevaluelistcount=1ifthenelsevalueeditor>1bibopenparenbibstringwithaddspace%
% Exclude omitted author
bpl@normalize#1bpl@tsurname%
bpl@normalize#3bpl@tfirstname%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
toggletruemyselfprectoggletruehadmyself%
ifthenelsevaluelistcount=1ANDvalueliststop=1
stepcounterliststop
ifthenelsevaluelistcount=1togglefalsehadmyself%
ifboolexpr
test iftogglemyselfprec
and
test ifnumlessvaluelistcount3
%
ifnumlessvaluelistcountvalueliststop-1%
addcommaaddspace%
iftogglehadmyself%
ifnumlessvaluelistcountvalueliststop%
addcommaaddspace%
addspacebibstringandaddspace
addspacebibstringandaddspace%
%
%
iffirstinits
ifblank#4#4addspace%
ifblank#3#3addspace%
ifblank#5#5addspace%
togglefalsemyselfprec%
#1%
usebibmacroname:andothers%
ifthenelsevaluelistcount=valueliststopANDvalueeditor>1unspacebibcloseparen%
DeclareNameFormatbookauthor%
ifblank#5#5addspace%
#1%
iffirstinits
ifblank#4addcommaspace #4%
ifblank#3addcommaspace #3%
ifthenelsevaluelistcount<valueliststop
addslash
%
usebibmacroname:andothers
renewbibmacro*name:andothers%
ifthenelsevaluelistcount=valueliststopAND
ifmorenames
ifnumvalueliststop>1 finalandcommafi
andothersdelimbiblcstringandothers
%
% Macros
%
renewbibmacro*author%
ifnameundefauthor
usebibmacroyear+labelyearaddspace%
printnamesauthor%
setunitaddspace%
iffieldundefnameaddon
mkbibbracketsbibstringalias%
addspaceprintfieldnameaddon
renewbibmacro*editor%
ifnameundefeditor
usebibmacroyear+labelyear%
addspace%
printnameseditor%
setunitaddspace%
usebibmacroeditorstrg
renewbibmacro*editor+others%
ifboolexpr
test ifuseeditor
and
not test ifnameundefeditor
usebibmacroyear+labelyear%
addspace%
printnameseditor%
setunitaddcommaspace%
usebibmacroeditor+othersstrg%
clearnameeditor
newbibmacro*date:makedate%
printtext%
iffieldundefyear%
iffieldundefpubstate%
printfieldpubstate%
%
%
iffieldundefmonth%
printdateextra%
printdate%
%
%
newbibmacro*date:labelyear+extrayear%
mkbibboldusebibmacrodate:makedate%
newbibmacro*year+labelyear%
iffieldundefyear%
iffieldundefpubstateletbbx@lasthashundefined%
usebibmacrodate:labelyear+extrayear%
if@marginyear%
iffieldequalspubstatebbx@lasthash%
printtextmarginparsmallplmarginyearbibsentenceprintfieldpubstate%
%
fi
savefieldpubstatebbx@lasthash%
clearfieldpubstate%
%
usebibmacrodate:labelyear+extrayear%
if@marginyear%
iffieldequalslabelyearbbx@lasthash%
printtextmarginparsmallplmarginyearprintfieldlabelyear%
%
fi
savefieldlabelyearbbx@lasthash%
newbibmacro*rauthor/label%
ifnameundefauthor
usebibmacrolabel
usebibmacrorauthor
newbibmacro*rauthor%
ifnameundefauthor
letbbx@lasthashundefined
ifthenelseiffieldequalsnamehashbbx@lasthashANDNOT
iffirstonpage
bibnamedash
savefieldnamehashbbx@lasthash%
printnamesauthor%
setunitaddspace%
iffieldundefnameaddon
mkbibbracketsbibstring[unspace]aliasaddspaceprintfieldnameaddon%
addspace%
usebibmacroryear+labelyear
newbibmacro*ryear+labelyear%
iffieldundefyear
printtext[parens]%
printfieldlabelyear%
printfieldextrayear
makeatother
My guess is the sorting is all screwed up, but biblatex
supports multiple sorting schemes. Again, there are likely style combinations that will result in major clashes so this is not a general solution. I think it, however, hints at a general solution if people wrote the bbx
and cbx
styles to be modular.
I'm just looking into the feasibility of doing something similar for a combination ofbiblatex-chicago
'snotes
andauthordate
styles, for primary and secondary literature references respectively, but I'm getting the impression it's not reasonably possible: For example, these two styles differ in their set ofDeclareBibliographyDriver
sequences, which can only be loaded in the preamble, so I would have to decide for one of the two drivers, but don't I break a style by using the drivers of another one?
– muk.li
Apr 20 '15 at 19:52
add a comment |
Does combining styles work?
Answer: No, if randomly using existing biblatex styles and trying to merge them (I tried authordate and chicago-notes): the tricky part is where they use the same names for bibmacros and booleans, but do different things with and to them; or where they import base code (like standard.bbx) and add/modify in different ways. It's like getting a car to run by merging two different-model engines - there is some overlap, but some things just don't fit. (And at the style-level, merging won't help: does the date go before, or after? It can't do both.)
Answer: Yes, if you build the style (or meta-style) from the ground up so that the processing logic is internally consistent and coherent. The sequencing of blocks then becomes trivial because the bibliography driver then becomes a despatcher: "if this bibentry/type/key, then that bibmacro, else the other bibmacro". (Visually, mixed styles within the same text block won't help the reader, though.)
Alternatively, split the bibliography, by keyword or category, or custom entry type(s): let the structure follow the information. And, if style is thought of as separate from biblatex style, then a different "yes" is possible because, in the spirit of keeping form and content separate, Latex code is allowed inside the bib field formats and elsewhere. It doesn't all have to be #1.
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "85"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f170358%2fbiblatex-different-bibstyles-in-the-same-document%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
You cannot do this automatically, but in some cases it is possible to break the bbx
file into pieces to give you what you want. For the case of mixing the authoryear
style and the publist
style this is pretty straight forward. Working from the following MWE
documentclassarticle
usepackage[labelnumber=true, bibstyle=authoryear]biblatex
% usepackage[bibstyle=publist]biblatex
addbibresourcebiblatex-examples.bib
% inputjobname Pre
makeatletter
defbpl@osurnameBaez
defbpl@ofirstnameJohn C.
makeatother
begindocument
nocitebaez/article
printbibliography
inputjobname Post
beginrefsection
nocitebaez/article
printbibliography
endrefsection
enddocument
The authoryear
output is
and the publist
output is
If we include the jobname Pre
and jobname Post
files with usepackage[labelnumber=true, bibstyle=authoryear]biblatex
we get
with the exception of a stray space at the beginning of the "publist" style entry, the output matches both styles.
The "magic" is occurring in the jobname Pre
and jobname Post
files. To create these files, I copied publist.bbx
into jobname Post
and then moved things that caused errors, or seemed like it belonged in the preamble, into jobname Pre
. Anything that still caused errors when it was in jobname Pre
I deleted.
This gave me a jobname Pre
of
makeatletter
%
% The omitted name of the publication list author
defbpl@osurname
defbpl@ofirstname
defbpl@ovonpart
%
% Manual way to specify omitted name
defomitname%
@ifnextchar[%
omitname@i
omitname@i[]%
defomitname@i[#1]%
@ifnextchar[%
omitname@ii#1
omitname@ii#1[]%
defomitname@ii#1[#2]#3%
% Do stuff
defbpl@osurname#3
ifx@empty#1elsedefbpl@ofirstname#1fi
ifx@empty#2elsedefbpl@ovonpart#2fi
%
% Formatting of year in margin par (if requested)
providecommand*plmarginyear[1]%
raggedleftsmalltextbf#1%
%
% Options
%
DeclareBibliographyOptionomitnamedefbpl@osurname#1
DeclareBibliographyOptionomitfirstnamedefbpl@ofirstname#1
DeclareBibliographyOptionomitnameprefixdefbpl@ovonpart#1
newifif@marginyear@marginyearfalse
DeclareBibliographyOptionmarginyear[true]%
ifstrequal#1true@marginyeartruereversemarginpar@marginyearfalse
newifif@unboldyear@unboldyearfalse
DeclareBibliographyOptionboldyear[true]%
ifstrequal#1false@unboldyeartrue@unboldyearfalse
%
% Bibliography filter
%
% Inspired by http://tex.stackexchange.com/a/28555/19291
DeclareBibliographyCategoryfiltered
DeclareIndexNameFormatauthorfiltered%
bpl@normalize#1bpl@tsurname%
bpl@normalize#3bpl@tfirstname%
bpl@normalize#5bpl@tvonpart%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
bpl@normalizebpl@ovonpartbpl@evonpart%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
addtocategoryfilteredthefieldentrykey
DeclareIndexNameFormateditorfiltered%
edefbpl@tsurname#1%
edefbpl@tfirstname#3%
edefbpl@tvonpart#5%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
bpl@normalizebpl@ovonpartbpl@evonpart%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
addtocategoryfilteredthefieldentrykey
DeclareIndexNameFormat[inbook,inproceedings,incollection]editorfiltered%
% AtDataInput%
% indexnames[authorfiltered]author%
% indexnames[editorfiltered]editor%
%
defbibfilterminecategory=filtered
AtBeginDocument%
if@unboldyear
renewbibmacro*date:labelyear+extrayear%
usebibmacrodate:makedate%
fi
%
% l7n
%
NewBibliographyStringwith
NewBibliographyStringparttranslationof
DefineBibliographyStringsenglish%
parttranslationof = partial translation of,
with = with
DefineBibliographyStringsfrench%
parttranslationof = traduction partielle de,
with = avec
DefineBibliographyStringsgerman%
parttranslationof = Teil"ubersetzung von,
with = mit
%
% New driver for reviews
%
DeclareBibliographyDriverreview%
usebibmacrorauthor/label%
setunit*addcolonspace%
usebibmacrotitle%
newunitnewblock
usebibmacroin:%
usebibmacrojournal+issuetitle%
newunitnewblock
printfieldnote%
setunitaddcommaspace%
printfieldpages
newunitnewblock
printfieldissn%
newunitnewblock
printfielddoi%
setunitaddspace
usebibmacroaddendum+pubstate%
newunitnewblock
usebibmacrourl+urldate%
newunitnewblock
usebibmacropageref%
newunitnewblock
usebibmacrorelated%
usebibmacrofinentry
%
% Sorting schemes
%
% Consider the whole date (year-month-day)
% Sorting date (descending), name, title
DeclareSortingSchemeddnt
sort
fieldpresort
sort[final]
fieldsortkey
sort[direction=descending]
field[strside=left,strwidth=4]sortyear
field[strside=left,strwidth=4]year
literal9999
sort[direction=descending]
field[padside=left,padwidth=2,padchar=0]month
literal00
sort[direction=descending]
field[padside=left,padwidth=2,padchar=0]day
literal00
sort
fieldsortname
fieldauthor
fieldeditor
fieldtranslator
fieldsorttitle
fieldtitle
sort
fieldsorttitle
fieldtitle
% Sorting year (descending), month, day, name, title
DeclareSortingSchemeydmdnt
sort
fieldpresort
sort[final]
fieldsortkey
sort[direction=descending]
field[strside=left,strwidth=4]sortyear
field[strside=left,strwidth=4]year
literal9999
sort
field[padside=left,padwidth=2,padchar=0]month
literal00
sort
field[padside=left,padwidth=2,padchar=0]day
literal00
sort
fieldsortname
fieldauthor
fieldeditor
fieldtranslator
fieldsorttitle
fieldtitle
sort
fieldsorttitle
fieldtitle
% Sorting date (ascending), name, title
DeclareSortingSchemednt
sort
fieldpresort
sort[final]
fieldsortkey
sort
field[strside=left,strwidth=4]sortyear
field[strside=left,strwidth=4]year
literal9999
sort
field[padside=left,padwidth=2,padchar=0]month
literal00
sort
field[padside=left,padwidth=2,padchar=0]day
literal00
sort
fieldsortname
fieldauthor
fieldeditor
fieldtranslator
fieldsorttitle
fieldtitle
sort
fieldsorttitle
fieldtitle
makeatother
and a jobname Post
of
makeatletter
%
% Field format definitions
%
DeclareFieldFormatbibentrysetcountmkbibparensmknumalph#1
DeclareFieldFormatlabelnumberwidthmkbibbrackets#1
DeclareFieldFormatshorthandwidthmkbibbrackets#1
DeclareFieldFormatrelated:parttranslationofmkbibbrackets#1
%
% Deal with numbering (resume numbers in refsections)
%
csnumgdefbbx@itemtotal0
csnumgdefbbx@currentitem0
csnumgdefbbx@saverefsection0
newboolnewsection
pretoblx@refsectionglobalsetboolnewsectiontrue
defbibenvironmentbibliography
list
printtext[labelnumberwidth]%
printfieldprefixnumber%
printfieldlabelnumber
setlengthlabelwidthlabelnumberwidth%
setlengthleftmarginlabelwidth%
setlengthlabelsepbiblabelsep%
addtolengthleftmarginlabelsep%
setlengthitemsepbibitemsep%
setlengthparsepbibparsep%
renewcommand*makelabel[1]hss##1%
endlist
ifnumgreaterc@refsectionbbx@saverefsection%
csnumgdefbbx@itemtotalcsusebbx@itemtotal+csusebbx@currentitem%
csnumgdefbbx@saverefsectionc@refsection%
item
DeclareFieldFormatlabelnumber%
ifboolnewsection%
% Fix start counter value
csnumgdefbbx@itemtotalcsusebbx@itemtotal-#1+1%
globalsetboolnewsectionfalse%
%
mkbibdesc#1%
csnumgdefbbx@currentitem#1%
% Print labelnumber as actual number, plus item total
newrobustcmdmkbibdesc[1]%
numbernumexprcsusebbx@itemtotal+#1relax
newcommand*decreasebbxnumbering[1]csnumgdefbbx@itemtotalcsusebbx@itemtotal-#1
%
% New environment for (foreign) reviews
%
defbibenvironmentreviews
beginenumerate%
smallsetlengthitemsep0pt
endenumerate
item
%
% Helper function:
% Removing braces from names (courtesy of egreg at
% http://tex.stackexchange.com/a/79583/19291)
% and normalize spaces
defbpl@normalize#1#2%
begingroup
defbibnamedelima %
defbibnamedelimb %
defIeC##1##1%
protected@edef@tempa#1%
gdef@gtempa%
expandafterbpl@@normalize@tempa@nil
endgroup
let#2@gtempa
defbpl@@normalize#1%
ifx#1@nilelse
expandaftergdefexpandafter@gtempaexpandafter@gtempa#1%
expandafterbpl@@normalize
fi
%
% Remove omitted name from author and editor lists
%
newtogglemyselfprec
newtogglehadmyself
DeclareNameFormatauthor%
ifthenelsevaluelistcount=1ifthenelsevalueauthor>1bibopenparenbibstringwithaddspace%
% Exclude omitted author
bpl@normalize#1bpl@tsurname%
bpl@normalize#3bpl@tfirstname%
bpl@normalize#5bpl@tvonpart%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
bpl@normalizebpl@ovonpartbpl@evonpart%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
toggletruemyselfprectoggletruehadmyself%
ifthenelsevaluelistcount=1ANDvalueliststop=1
stepcounterliststop
ifthenelsevaluelistcount=1togglefalsehadmyself%
ifboolexpr
test iftogglemyselfprec
and
test ifnumlessvaluelistcount3
%
ifnumlessvaluelistcountvalueliststop-1%
addcommaaddspace%
iftogglehadmyself%
ifnumlessvaluelistcountvalueliststop%
addcommaaddspace%
addspacebibstringandaddspace
addspacebibstringandaddspace%
%
%
iffirstinits
ifblank#4#4addspace%
ifblank#3#3addspace%
ifblank#5#5addspace%
togglefalsemyselfprec%
#1%
usebibmacroname:andothers%
ifthenelsevaluelistcount=valueliststopANDvalueauthor>1unspacebibcloseparen%
DeclareNameFormateditor%
ifthenelsevaluelistcount=1ifthenelsevalueeditor>1bibopenparenbibstringwithaddspace%
% Exclude omitted author
bpl@normalize#1bpl@tsurname%
bpl@normalize#3bpl@tfirstname%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
toggletruemyselfprectoggletruehadmyself%
ifthenelsevaluelistcount=1ANDvalueliststop=1
stepcounterliststop
ifthenelsevaluelistcount=1togglefalsehadmyself%
ifboolexpr
test iftogglemyselfprec
and
test ifnumlessvaluelistcount3
%
ifnumlessvaluelistcountvalueliststop-1%
addcommaaddspace%
iftogglehadmyself%
ifnumlessvaluelistcountvalueliststop%
addcommaaddspace%
addspacebibstringandaddspace
addspacebibstringandaddspace%
%
%
iffirstinits
ifblank#4#4addspace%
ifblank#3#3addspace%
ifblank#5#5addspace%
togglefalsemyselfprec%
#1%
usebibmacroname:andothers%
ifthenelsevaluelistcount=valueliststopANDvalueeditor>1unspacebibcloseparen%
DeclareNameFormatbookauthor%
ifblank#5#5addspace%
#1%
iffirstinits
ifblank#4addcommaspace #4%
ifblank#3addcommaspace #3%
ifthenelsevaluelistcount<valueliststop
addslash
%
usebibmacroname:andothers
renewbibmacro*name:andothers%
ifthenelsevaluelistcount=valueliststopAND
ifmorenames
ifnumvalueliststop>1 finalandcommafi
andothersdelimbiblcstringandothers
%
% Macros
%
renewbibmacro*author%
ifnameundefauthor
usebibmacroyear+labelyearaddspace%
printnamesauthor%
setunitaddspace%
iffieldundefnameaddon
mkbibbracketsbibstringalias%
addspaceprintfieldnameaddon
renewbibmacro*editor%
ifnameundefeditor
usebibmacroyear+labelyear%
addspace%
printnameseditor%
setunitaddspace%
usebibmacroeditorstrg
renewbibmacro*editor+others%
ifboolexpr
test ifuseeditor
and
not test ifnameundefeditor
usebibmacroyear+labelyear%
addspace%
printnameseditor%
setunitaddcommaspace%
usebibmacroeditor+othersstrg%
clearnameeditor
newbibmacro*date:makedate%
printtext%
iffieldundefyear%
iffieldundefpubstate%
printfieldpubstate%
%
%
iffieldundefmonth%
printdateextra%
printdate%
%
%
newbibmacro*date:labelyear+extrayear%
mkbibboldusebibmacrodate:makedate%
newbibmacro*year+labelyear%
iffieldundefyear%
iffieldundefpubstateletbbx@lasthashundefined%
usebibmacrodate:labelyear+extrayear%
if@marginyear%
iffieldequalspubstatebbx@lasthash%
printtextmarginparsmallplmarginyearbibsentenceprintfieldpubstate%
%
fi
savefieldpubstatebbx@lasthash%
clearfieldpubstate%
%
usebibmacrodate:labelyear+extrayear%
if@marginyear%
iffieldequalslabelyearbbx@lasthash%
printtextmarginparsmallplmarginyearprintfieldlabelyear%
%
fi
savefieldlabelyearbbx@lasthash%
newbibmacro*rauthor/label%
ifnameundefauthor
usebibmacrolabel
usebibmacrorauthor
newbibmacro*rauthor%
ifnameundefauthor
letbbx@lasthashundefined
ifthenelseiffieldequalsnamehashbbx@lasthashANDNOT
iffirstonpage
bibnamedash
savefieldnamehashbbx@lasthash%
printnamesauthor%
setunitaddspace%
iffieldundefnameaddon
mkbibbracketsbibstring[unspace]aliasaddspaceprintfieldnameaddon%
addspace%
usebibmacroryear+labelyear
newbibmacro*ryear+labelyear%
iffieldundefyear
printtext[parens]%
printfieldlabelyear%
printfieldextrayear
makeatother
My guess is the sorting is all screwed up, but biblatex
supports multiple sorting schemes. Again, there are likely style combinations that will result in major clashes so this is not a general solution. I think it, however, hints at a general solution if people wrote the bbx
and cbx
styles to be modular.
I'm just looking into the feasibility of doing something similar for a combination ofbiblatex-chicago
'snotes
andauthordate
styles, for primary and secondary literature references respectively, but I'm getting the impression it's not reasonably possible: For example, these two styles differ in their set ofDeclareBibliographyDriver
sequences, which can only be loaded in the preamble, so I would have to decide for one of the two drivers, but don't I break a style by using the drivers of another one?
– muk.li
Apr 20 '15 at 19:52
add a comment |
You cannot do this automatically, but in some cases it is possible to break the bbx
file into pieces to give you what you want. For the case of mixing the authoryear
style and the publist
style this is pretty straight forward. Working from the following MWE
documentclassarticle
usepackage[labelnumber=true, bibstyle=authoryear]biblatex
% usepackage[bibstyle=publist]biblatex
addbibresourcebiblatex-examples.bib
% inputjobname Pre
makeatletter
defbpl@osurnameBaez
defbpl@ofirstnameJohn C.
makeatother
begindocument
nocitebaez/article
printbibliography
inputjobname Post
beginrefsection
nocitebaez/article
printbibliography
endrefsection
enddocument
The authoryear
output is
and the publist
output is
If we include the jobname Pre
and jobname Post
files with usepackage[labelnumber=true, bibstyle=authoryear]biblatex
we get
with the exception of a stray space at the beginning of the "publist" style entry, the output matches both styles.
The "magic" is occurring in the jobname Pre
and jobname Post
files. To create these files, I copied publist.bbx
into jobname Post
and then moved things that caused errors, or seemed like it belonged in the preamble, into jobname Pre
. Anything that still caused errors when it was in jobname Pre
I deleted.
This gave me a jobname Pre
of
makeatletter
%
% The omitted name of the publication list author
defbpl@osurname
defbpl@ofirstname
defbpl@ovonpart
%
% Manual way to specify omitted name
defomitname%
@ifnextchar[%
omitname@i
omitname@i[]%
defomitname@i[#1]%
@ifnextchar[%
omitname@ii#1
omitname@ii#1[]%
defomitname@ii#1[#2]#3%
% Do stuff
defbpl@osurname#3
ifx@empty#1elsedefbpl@ofirstname#1fi
ifx@empty#2elsedefbpl@ovonpart#2fi
%
% Formatting of year in margin par (if requested)
providecommand*plmarginyear[1]%
raggedleftsmalltextbf#1%
%
% Options
%
DeclareBibliographyOptionomitnamedefbpl@osurname#1
DeclareBibliographyOptionomitfirstnamedefbpl@ofirstname#1
DeclareBibliographyOptionomitnameprefixdefbpl@ovonpart#1
newifif@marginyear@marginyearfalse
DeclareBibliographyOptionmarginyear[true]%
ifstrequal#1true@marginyeartruereversemarginpar@marginyearfalse
newifif@unboldyear@unboldyearfalse
DeclareBibliographyOptionboldyear[true]%
ifstrequal#1false@unboldyeartrue@unboldyearfalse
%
% Bibliography filter
%
% Inspired by http://tex.stackexchange.com/a/28555/19291
DeclareBibliographyCategoryfiltered
DeclareIndexNameFormatauthorfiltered%
bpl@normalize#1bpl@tsurname%
bpl@normalize#3bpl@tfirstname%
bpl@normalize#5bpl@tvonpart%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
bpl@normalizebpl@ovonpartbpl@evonpart%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
addtocategoryfilteredthefieldentrykey
DeclareIndexNameFormateditorfiltered%
edefbpl@tsurname#1%
edefbpl@tfirstname#3%
edefbpl@tvonpart#5%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
bpl@normalizebpl@ovonpartbpl@evonpart%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
addtocategoryfilteredthefieldentrykey
DeclareIndexNameFormat[inbook,inproceedings,incollection]editorfiltered%
% AtDataInput%
% indexnames[authorfiltered]author%
% indexnames[editorfiltered]editor%
%
defbibfilterminecategory=filtered
AtBeginDocument%
if@unboldyear
renewbibmacro*date:labelyear+extrayear%
usebibmacrodate:makedate%
fi
%
% l7n
%
NewBibliographyStringwith
NewBibliographyStringparttranslationof
DefineBibliographyStringsenglish%
parttranslationof = partial translation of,
with = with
DefineBibliographyStringsfrench%
parttranslationof = traduction partielle de,
with = avec
DefineBibliographyStringsgerman%
parttranslationof = Teil"ubersetzung von,
with = mit
%
% New driver for reviews
%
DeclareBibliographyDriverreview%
usebibmacrorauthor/label%
setunit*addcolonspace%
usebibmacrotitle%
newunitnewblock
usebibmacroin:%
usebibmacrojournal+issuetitle%
newunitnewblock
printfieldnote%
setunitaddcommaspace%
printfieldpages
newunitnewblock
printfieldissn%
newunitnewblock
printfielddoi%
setunitaddspace
usebibmacroaddendum+pubstate%
newunitnewblock
usebibmacrourl+urldate%
newunitnewblock
usebibmacropageref%
newunitnewblock
usebibmacrorelated%
usebibmacrofinentry
%
% Sorting schemes
%
% Consider the whole date (year-month-day)
% Sorting date (descending), name, title
DeclareSortingSchemeddnt
sort
fieldpresort
sort[final]
fieldsortkey
sort[direction=descending]
field[strside=left,strwidth=4]sortyear
field[strside=left,strwidth=4]year
literal9999
sort[direction=descending]
field[padside=left,padwidth=2,padchar=0]month
literal00
sort[direction=descending]
field[padside=left,padwidth=2,padchar=0]day
literal00
sort
fieldsortname
fieldauthor
fieldeditor
fieldtranslator
fieldsorttitle
fieldtitle
sort
fieldsorttitle
fieldtitle
% Sorting year (descending), month, day, name, title
DeclareSortingSchemeydmdnt
sort
fieldpresort
sort[final]
fieldsortkey
sort[direction=descending]
field[strside=left,strwidth=4]sortyear
field[strside=left,strwidth=4]year
literal9999
sort
field[padside=left,padwidth=2,padchar=0]month
literal00
sort
field[padside=left,padwidth=2,padchar=0]day
literal00
sort
fieldsortname
fieldauthor
fieldeditor
fieldtranslator
fieldsorttitle
fieldtitle
sort
fieldsorttitle
fieldtitle
% Sorting date (ascending), name, title
DeclareSortingSchemednt
sort
fieldpresort
sort[final]
fieldsortkey
sort
field[strside=left,strwidth=4]sortyear
field[strside=left,strwidth=4]year
literal9999
sort
field[padside=left,padwidth=2,padchar=0]month
literal00
sort
field[padside=left,padwidth=2,padchar=0]day
literal00
sort
fieldsortname
fieldauthor
fieldeditor
fieldtranslator
fieldsorttitle
fieldtitle
sort
fieldsorttitle
fieldtitle
makeatother
and a jobname Post
of
makeatletter
%
% Field format definitions
%
DeclareFieldFormatbibentrysetcountmkbibparensmknumalph#1
DeclareFieldFormatlabelnumberwidthmkbibbrackets#1
DeclareFieldFormatshorthandwidthmkbibbrackets#1
DeclareFieldFormatrelated:parttranslationofmkbibbrackets#1
%
% Deal with numbering (resume numbers in refsections)
%
csnumgdefbbx@itemtotal0
csnumgdefbbx@currentitem0
csnumgdefbbx@saverefsection0
newboolnewsection
pretoblx@refsectionglobalsetboolnewsectiontrue
defbibenvironmentbibliography
list
printtext[labelnumberwidth]%
printfieldprefixnumber%
printfieldlabelnumber
setlengthlabelwidthlabelnumberwidth%
setlengthleftmarginlabelwidth%
setlengthlabelsepbiblabelsep%
addtolengthleftmarginlabelsep%
setlengthitemsepbibitemsep%
setlengthparsepbibparsep%
renewcommand*makelabel[1]hss##1%
endlist
ifnumgreaterc@refsectionbbx@saverefsection%
csnumgdefbbx@itemtotalcsusebbx@itemtotal+csusebbx@currentitem%
csnumgdefbbx@saverefsectionc@refsection%
item
DeclareFieldFormatlabelnumber%
ifboolnewsection%
% Fix start counter value
csnumgdefbbx@itemtotalcsusebbx@itemtotal-#1+1%
globalsetboolnewsectionfalse%
%
mkbibdesc#1%
csnumgdefbbx@currentitem#1%
% Print labelnumber as actual number, plus item total
newrobustcmdmkbibdesc[1]%
numbernumexprcsusebbx@itemtotal+#1relax
newcommand*decreasebbxnumbering[1]csnumgdefbbx@itemtotalcsusebbx@itemtotal-#1
%
% New environment for (foreign) reviews
%
defbibenvironmentreviews
beginenumerate%
smallsetlengthitemsep0pt
endenumerate
item
%
% Helper function:
% Removing braces from names (courtesy of egreg at
% http://tex.stackexchange.com/a/79583/19291)
% and normalize spaces
defbpl@normalize#1#2%
begingroup
defbibnamedelima %
defbibnamedelimb %
defIeC##1##1%
protected@edef@tempa#1%
gdef@gtempa%
expandafterbpl@@normalize@tempa@nil
endgroup
let#2@gtempa
defbpl@@normalize#1%
ifx#1@nilelse
expandaftergdefexpandafter@gtempaexpandafter@gtempa#1%
expandafterbpl@@normalize
fi
%
% Remove omitted name from author and editor lists
%
newtogglemyselfprec
newtogglehadmyself
DeclareNameFormatauthor%
ifthenelsevaluelistcount=1ifthenelsevalueauthor>1bibopenparenbibstringwithaddspace%
% Exclude omitted author
bpl@normalize#1bpl@tsurname%
bpl@normalize#3bpl@tfirstname%
bpl@normalize#5bpl@tvonpart%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
bpl@normalizebpl@ovonpartbpl@evonpart%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
toggletruemyselfprectoggletruehadmyself%
ifthenelsevaluelistcount=1ANDvalueliststop=1
stepcounterliststop
ifthenelsevaluelistcount=1togglefalsehadmyself%
ifboolexpr
test iftogglemyselfprec
and
test ifnumlessvaluelistcount3
%
ifnumlessvaluelistcountvalueliststop-1%
addcommaaddspace%
iftogglehadmyself%
ifnumlessvaluelistcountvalueliststop%
addcommaaddspace%
addspacebibstringandaddspace
addspacebibstringandaddspace%
%
%
iffirstinits
ifblank#4#4addspace%
ifblank#3#3addspace%
ifblank#5#5addspace%
togglefalsemyselfprec%
#1%
usebibmacroname:andothers%
ifthenelsevaluelistcount=valueliststopANDvalueauthor>1unspacebibcloseparen%
DeclareNameFormateditor%
ifthenelsevaluelistcount=1ifthenelsevalueeditor>1bibopenparenbibstringwithaddspace%
% Exclude omitted author
bpl@normalize#1bpl@tsurname%
bpl@normalize#3bpl@tfirstname%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
toggletruemyselfprectoggletruehadmyself%
ifthenelsevaluelistcount=1ANDvalueliststop=1
stepcounterliststop
ifthenelsevaluelistcount=1togglefalsehadmyself%
ifboolexpr
test iftogglemyselfprec
and
test ifnumlessvaluelistcount3
%
ifnumlessvaluelistcountvalueliststop-1%
addcommaaddspace%
iftogglehadmyself%
ifnumlessvaluelistcountvalueliststop%
addcommaaddspace%
addspacebibstringandaddspace
addspacebibstringandaddspace%
%
%
iffirstinits
ifblank#4#4addspace%
ifblank#3#3addspace%
ifblank#5#5addspace%
togglefalsemyselfprec%
#1%
usebibmacroname:andothers%
ifthenelsevaluelistcount=valueliststopANDvalueeditor>1unspacebibcloseparen%
DeclareNameFormatbookauthor%
ifblank#5#5addspace%
#1%
iffirstinits
ifblank#4addcommaspace #4%
ifblank#3addcommaspace #3%
ifthenelsevaluelistcount<valueliststop
addslash
%
usebibmacroname:andothers
renewbibmacro*name:andothers%
ifthenelsevaluelistcount=valueliststopAND
ifmorenames
ifnumvalueliststop>1 finalandcommafi
andothersdelimbiblcstringandothers
%
% Macros
%
renewbibmacro*author%
ifnameundefauthor
usebibmacroyear+labelyearaddspace%
printnamesauthor%
setunitaddspace%
iffieldundefnameaddon
mkbibbracketsbibstringalias%
addspaceprintfieldnameaddon
renewbibmacro*editor%
ifnameundefeditor
usebibmacroyear+labelyear%
addspace%
printnameseditor%
setunitaddspace%
usebibmacroeditorstrg
renewbibmacro*editor+others%
ifboolexpr
test ifuseeditor
and
not test ifnameundefeditor
usebibmacroyear+labelyear%
addspace%
printnameseditor%
setunitaddcommaspace%
usebibmacroeditor+othersstrg%
clearnameeditor
newbibmacro*date:makedate%
printtext%
iffieldundefyear%
iffieldundefpubstate%
printfieldpubstate%
%
%
iffieldundefmonth%
printdateextra%
printdate%
%
%
newbibmacro*date:labelyear+extrayear%
mkbibboldusebibmacrodate:makedate%
newbibmacro*year+labelyear%
iffieldundefyear%
iffieldundefpubstateletbbx@lasthashundefined%
usebibmacrodate:labelyear+extrayear%
if@marginyear%
iffieldequalspubstatebbx@lasthash%
printtextmarginparsmallplmarginyearbibsentenceprintfieldpubstate%
%
fi
savefieldpubstatebbx@lasthash%
clearfieldpubstate%
%
usebibmacrodate:labelyear+extrayear%
if@marginyear%
iffieldequalslabelyearbbx@lasthash%
printtextmarginparsmallplmarginyearprintfieldlabelyear%
%
fi
savefieldlabelyearbbx@lasthash%
newbibmacro*rauthor/label%
ifnameundefauthor
usebibmacrolabel
usebibmacrorauthor
newbibmacro*rauthor%
ifnameundefauthor
letbbx@lasthashundefined
ifthenelseiffieldequalsnamehashbbx@lasthashANDNOT
iffirstonpage
bibnamedash
savefieldnamehashbbx@lasthash%
printnamesauthor%
setunitaddspace%
iffieldundefnameaddon
mkbibbracketsbibstring[unspace]aliasaddspaceprintfieldnameaddon%
addspace%
usebibmacroryear+labelyear
newbibmacro*ryear+labelyear%
iffieldundefyear
printtext[parens]%
printfieldlabelyear%
printfieldextrayear
makeatother
My guess is the sorting is all screwed up, but biblatex
supports multiple sorting schemes. Again, there are likely style combinations that will result in major clashes so this is not a general solution. I think it, however, hints at a general solution if people wrote the bbx
and cbx
styles to be modular.
I'm just looking into the feasibility of doing something similar for a combination ofbiblatex-chicago
'snotes
andauthordate
styles, for primary and secondary literature references respectively, but I'm getting the impression it's not reasonably possible: For example, these two styles differ in their set ofDeclareBibliographyDriver
sequences, which can only be loaded in the preamble, so I would have to decide for one of the two drivers, but don't I break a style by using the drivers of another one?
– muk.li
Apr 20 '15 at 19:52
add a comment |
You cannot do this automatically, but in some cases it is possible to break the bbx
file into pieces to give you what you want. For the case of mixing the authoryear
style and the publist
style this is pretty straight forward. Working from the following MWE
documentclassarticle
usepackage[labelnumber=true, bibstyle=authoryear]biblatex
% usepackage[bibstyle=publist]biblatex
addbibresourcebiblatex-examples.bib
% inputjobname Pre
makeatletter
defbpl@osurnameBaez
defbpl@ofirstnameJohn C.
makeatother
begindocument
nocitebaez/article
printbibliography
inputjobname Post
beginrefsection
nocitebaez/article
printbibliography
endrefsection
enddocument
The authoryear
output is
and the publist
output is
If we include the jobname Pre
and jobname Post
files with usepackage[labelnumber=true, bibstyle=authoryear]biblatex
we get
with the exception of a stray space at the beginning of the "publist" style entry, the output matches both styles.
The "magic" is occurring in the jobname Pre
and jobname Post
files. To create these files, I copied publist.bbx
into jobname Post
and then moved things that caused errors, or seemed like it belonged in the preamble, into jobname Pre
. Anything that still caused errors when it was in jobname Pre
I deleted.
This gave me a jobname Pre
of
makeatletter
%
% The omitted name of the publication list author
defbpl@osurname
defbpl@ofirstname
defbpl@ovonpart
%
% Manual way to specify omitted name
defomitname%
@ifnextchar[%
omitname@i
omitname@i[]%
defomitname@i[#1]%
@ifnextchar[%
omitname@ii#1
omitname@ii#1[]%
defomitname@ii#1[#2]#3%
% Do stuff
defbpl@osurname#3
ifx@empty#1elsedefbpl@ofirstname#1fi
ifx@empty#2elsedefbpl@ovonpart#2fi
%
% Formatting of year in margin par (if requested)
providecommand*plmarginyear[1]%
raggedleftsmalltextbf#1%
%
% Options
%
DeclareBibliographyOptionomitnamedefbpl@osurname#1
DeclareBibliographyOptionomitfirstnamedefbpl@ofirstname#1
DeclareBibliographyOptionomitnameprefixdefbpl@ovonpart#1
newifif@marginyear@marginyearfalse
DeclareBibliographyOptionmarginyear[true]%
ifstrequal#1true@marginyeartruereversemarginpar@marginyearfalse
newifif@unboldyear@unboldyearfalse
DeclareBibliographyOptionboldyear[true]%
ifstrequal#1false@unboldyeartrue@unboldyearfalse
%
% Bibliography filter
%
% Inspired by http://tex.stackexchange.com/a/28555/19291
DeclareBibliographyCategoryfiltered
DeclareIndexNameFormatauthorfiltered%
bpl@normalize#1bpl@tsurname%
bpl@normalize#3bpl@tfirstname%
bpl@normalize#5bpl@tvonpart%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
bpl@normalizebpl@ovonpartbpl@evonpart%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
addtocategoryfilteredthefieldentrykey
DeclareIndexNameFormateditorfiltered%
edefbpl@tsurname#1%
edefbpl@tfirstname#3%
edefbpl@tvonpart#5%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
bpl@normalizebpl@ovonpartbpl@evonpart%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
addtocategoryfilteredthefieldentrykey
DeclareIndexNameFormat[inbook,inproceedings,incollection]editorfiltered%
% AtDataInput%
% indexnames[authorfiltered]author%
% indexnames[editorfiltered]editor%
%
defbibfilterminecategory=filtered
AtBeginDocument%
if@unboldyear
renewbibmacro*date:labelyear+extrayear%
usebibmacrodate:makedate%
fi
%
% l7n
%
NewBibliographyStringwith
NewBibliographyStringparttranslationof
DefineBibliographyStringsenglish%
parttranslationof = partial translation of,
with = with
DefineBibliographyStringsfrench%
parttranslationof = traduction partielle de,
with = avec
DefineBibliographyStringsgerman%
parttranslationof = Teil"ubersetzung von,
with = mit
%
% New driver for reviews
%
DeclareBibliographyDriverreview%
usebibmacrorauthor/label%
setunit*addcolonspace%
usebibmacrotitle%
newunitnewblock
usebibmacroin:%
usebibmacrojournal+issuetitle%
newunitnewblock
printfieldnote%
setunitaddcommaspace%
printfieldpages
newunitnewblock
printfieldissn%
newunitnewblock
printfielddoi%
setunitaddspace
usebibmacroaddendum+pubstate%
newunitnewblock
usebibmacrourl+urldate%
newunitnewblock
usebibmacropageref%
newunitnewblock
usebibmacrorelated%
usebibmacrofinentry
%
% Sorting schemes
%
% Consider the whole date (year-month-day)
% Sorting date (descending), name, title
DeclareSortingSchemeddnt
sort
fieldpresort
sort[final]
fieldsortkey
sort[direction=descending]
field[strside=left,strwidth=4]sortyear
field[strside=left,strwidth=4]year
literal9999
sort[direction=descending]
field[padside=left,padwidth=2,padchar=0]month
literal00
sort[direction=descending]
field[padside=left,padwidth=2,padchar=0]day
literal00
sort
fieldsortname
fieldauthor
fieldeditor
fieldtranslator
fieldsorttitle
fieldtitle
sort
fieldsorttitle
fieldtitle
% Sorting year (descending), month, day, name, title
DeclareSortingSchemeydmdnt
sort
fieldpresort
sort[final]
fieldsortkey
sort[direction=descending]
field[strside=left,strwidth=4]sortyear
field[strside=left,strwidth=4]year
literal9999
sort
field[padside=left,padwidth=2,padchar=0]month
literal00
sort
field[padside=left,padwidth=2,padchar=0]day
literal00
sort
fieldsortname
fieldauthor
fieldeditor
fieldtranslator
fieldsorttitle
fieldtitle
sort
fieldsorttitle
fieldtitle
% Sorting date (ascending), name, title
DeclareSortingSchemednt
sort
fieldpresort
sort[final]
fieldsortkey
sort
field[strside=left,strwidth=4]sortyear
field[strside=left,strwidth=4]year
literal9999
sort
field[padside=left,padwidth=2,padchar=0]month
literal00
sort
field[padside=left,padwidth=2,padchar=0]day
literal00
sort
fieldsortname
fieldauthor
fieldeditor
fieldtranslator
fieldsorttitle
fieldtitle
sort
fieldsorttitle
fieldtitle
makeatother
and a jobname Post
of
makeatletter
%
% Field format definitions
%
DeclareFieldFormatbibentrysetcountmkbibparensmknumalph#1
DeclareFieldFormatlabelnumberwidthmkbibbrackets#1
DeclareFieldFormatshorthandwidthmkbibbrackets#1
DeclareFieldFormatrelated:parttranslationofmkbibbrackets#1
%
% Deal with numbering (resume numbers in refsections)
%
csnumgdefbbx@itemtotal0
csnumgdefbbx@currentitem0
csnumgdefbbx@saverefsection0
newboolnewsection
pretoblx@refsectionglobalsetboolnewsectiontrue
defbibenvironmentbibliography
list
printtext[labelnumberwidth]%
printfieldprefixnumber%
printfieldlabelnumber
setlengthlabelwidthlabelnumberwidth%
setlengthleftmarginlabelwidth%
setlengthlabelsepbiblabelsep%
addtolengthleftmarginlabelsep%
setlengthitemsepbibitemsep%
setlengthparsepbibparsep%
renewcommand*makelabel[1]hss##1%
endlist
ifnumgreaterc@refsectionbbx@saverefsection%
csnumgdefbbx@itemtotalcsusebbx@itemtotal+csusebbx@currentitem%
csnumgdefbbx@saverefsectionc@refsection%
item
DeclareFieldFormatlabelnumber%
ifboolnewsection%
% Fix start counter value
csnumgdefbbx@itemtotalcsusebbx@itemtotal-#1+1%
globalsetboolnewsectionfalse%
%
mkbibdesc#1%
csnumgdefbbx@currentitem#1%
% Print labelnumber as actual number, plus item total
newrobustcmdmkbibdesc[1]%
numbernumexprcsusebbx@itemtotal+#1relax
newcommand*decreasebbxnumbering[1]csnumgdefbbx@itemtotalcsusebbx@itemtotal-#1
%
% New environment for (foreign) reviews
%
defbibenvironmentreviews
beginenumerate%
smallsetlengthitemsep0pt
endenumerate
item
%
% Helper function:
% Removing braces from names (courtesy of egreg at
% http://tex.stackexchange.com/a/79583/19291)
% and normalize spaces
defbpl@normalize#1#2%
begingroup
defbibnamedelima %
defbibnamedelimb %
defIeC##1##1%
protected@edef@tempa#1%
gdef@gtempa%
expandafterbpl@@normalize@tempa@nil
endgroup
let#2@gtempa
defbpl@@normalize#1%
ifx#1@nilelse
expandaftergdefexpandafter@gtempaexpandafter@gtempa#1%
expandafterbpl@@normalize
fi
%
% Remove omitted name from author and editor lists
%
newtogglemyselfprec
newtogglehadmyself
DeclareNameFormatauthor%
ifthenelsevaluelistcount=1ifthenelsevalueauthor>1bibopenparenbibstringwithaddspace%
% Exclude omitted author
bpl@normalize#1bpl@tsurname%
bpl@normalize#3bpl@tfirstname%
bpl@normalize#5bpl@tvonpart%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
bpl@normalizebpl@ovonpartbpl@evonpart%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
toggletruemyselfprectoggletruehadmyself%
ifthenelsevaluelistcount=1ANDvalueliststop=1
stepcounterliststop
ifthenelsevaluelistcount=1togglefalsehadmyself%
ifboolexpr
test iftogglemyselfprec
and
test ifnumlessvaluelistcount3
%
ifnumlessvaluelistcountvalueliststop-1%
addcommaaddspace%
iftogglehadmyself%
ifnumlessvaluelistcountvalueliststop%
addcommaaddspace%
addspacebibstringandaddspace
addspacebibstringandaddspace%
%
%
iffirstinits
ifblank#4#4addspace%
ifblank#3#3addspace%
ifblank#5#5addspace%
togglefalsemyselfprec%
#1%
usebibmacroname:andothers%
ifthenelsevaluelistcount=valueliststopANDvalueauthor>1unspacebibcloseparen%
DeclareNameFormateditor%
ifthenelsevaluelistcount=1ifthenelsevalueeditor>1bibopenparenbibstringwithaddspace%
% Exclude omitted author
bpl@normalize#1bpl@tsurname%
bpl@normalize#3bpl@tfirstname%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
toggletruemyselfprectoggletruehadmyself%
ifthenelsevaluelistcount=1ANDvalueliststop=1
stepcounterliststop
ifthenelsevaluelistcount=1togglefalsehadmyself%
ifboolexpr
test iftogglemyselfprec
and
test ifnumlessvaluelistcount3
%
ifnumlessvaluelistcountvalueliststop-1%
addcommaaddspace%
iftogglehadmyself%
ifnumlessvaluelistcountvalueliststop%
addcommaaddspace%
addspacebibstringandaddspace
addspacebibstringandaddspace%
%
%
iffirstinits
ifblank#4#4addspace%
ifblank#3#3addspace%
ifblank#5#5addspace%
togglefalsemyselfprec%
#1%
usebibmacroname:andothers%
ifthenelsevaluelistcount=valueliststopANDvalueeditor>1unspacebibcloseparen%
DeclareNameFormatbookauthor%
ifblank#5#5addspace%
#1%
iffirstinits
ifblank#4addcommaspace #4%
ifblank#3addcommaspace #3%
ifthenelsevaluelistcount<valueliststop
addslash
%
usebibmacroname:andothers
renewbibmacro*name:andothers%
ifthenelsevaluelistcount=valueliststopAND
ifmorenames
ifnumvalueliststop>1 finalandcommafi
andothersdelimbiblcstringandothers
%
% Macros
%
renewbibmacro*author%
ifnameundefauthor
usebibmacroyear+labelyearaddspace%
printnamesauthor%
setunitaddspace%
iffieldundefnameaddon
mkbibbracketsbibstringalias%
addspaceprintfieldnameaddon
renewbibmacro*editor%
ifnameundefeditor
usebibmacroyear+labelyear%
addspace%
printnameseditor%
setunitaddspace%
usebibmacroeditorstrg
renewbibmacro*editor+others%
ifboolexpr
test ifuseeditor
and
not test ifnameundefeditor
usebibmacroyear+labelyear%
addspace%
printnameseditor%
setunitaddcommaspace%
usebibmacroeditor+othersstrg%
clearnameeditor
newbibmacro*date:makedate%
printtext%
iffieldundefyear%
iffieldundefpubstate%
printfieldpubstate%
%
%
iffieldundefmonth%
printdateextra%
printdate%
%
%
newbibmacro*date:labelyear+extrayear%
mkbibboldusebibmacrodate:makedate%
newbibmacro*year+labelyear%
iffieldundefyear%
iffieldundefpubstateletbbx@lasthashundefined%
usebibmacrodate:labelyear+extrayear%
if@marginyear%
iffieldequalspubstatebbx@lasthash%
printtextmarginparsmallplmarginyearbibsentenceprintfieldpubstate%
%
fi
savefieldpubstatebbx@lasthash%
clearfieldpubstate%
%
usebibmacrodate:labelyear+extrayear%
if@marginyear%
iffieldequalslabelyearbbx@lasthash%
printtextmarginparsmallplmarginyearprintfieldlabelyear%
%
fi
savefieldlabelyearbbx@lasthash%
newbibmacro*rauthor/label%
ifnameundefauthor
usebibmacrolabel
usebibmacrorauthor
newbibmacro*rauthor%
ifnameundefauthor
letbbx@lasthashundefined
ifthenelseiffieldequalsnamehashbbx@lasthashANDNOT
iffirstonpage
bibnamedash
savefieldnamehashbbx@lasthash%
printnamesauthor%
setunitaddspace%
iffieldundefnameaddon
mkbibbracketsbibstring[unspace]aliasaddspaceprintfieldnameaddon%
addspace%
usebibmacroryear+labelyear
newbibmacro*ryear+labelyear%
iffieldundefyear
printtext[parens]%
printfieldlabelyear%
printfieldextrayear
makeatother
My guess is the sorting is all screwed up, but biblatex
supports multiple sorting schemes. Again, there are likely style combinations that will result in major clashes so this is not a general solution. I think it, however, hints at a general solution if people wrote the bbx
and cbx
styles to be modular.
You cannot do this automatically, but in some cases it is possible to break the bbx
file into pieces to give you what you want. For the case of mixing the authoryear
style and the publist
style this is pretty straight forward. Working from the following MWE
documentclassarticle
usepackage[labelnumber=true, bibstyle=authoryear]biblatex
% usepackage[bibstyle=publist]biblatex
addbibresourcebiblatex-examples.bib
% inputjobname Pre
makeatletter
defbpl@osurnameBaez
defbpl@ofirstnameJohn C.
makeatother
begindocument
nocitebaez/article
printbibliography
inputjobname Post
beginrefsection
nocitebaez/article
printbibliography
endrefsection
enddocument
The authoryear
output is
and the publist
output is
If we include the jobname Pre
and jobname Post
files with usepackage[labelnumber=true, bibstyle=authoryear]biblatex
we get
with the exception of a stray space at the beginning of the "publist" style entry, the output matches both styles.
The "magic" is occurring in the jobname Pre
and jobname Post
files. To create these files, I copied publist.bbx
into jobname Post
and then moved things that caused errors, or seemed like it belonged in the preamble, into jobname Pre
. Anything that still caused errors when it was in jobname Pre
I deleted.
This gave me a jobname Pre
of
makeatletter
%
% The omitted name of the publication list author
defbpl@osurname
defbpl@ofirstname
defbpl@ovonpart
%
% Manual way to specify omitted name
defomitname%
@ifnextchar[%
omitname@i
omitname@i[]%
defomitname@i[#1]%
@ifnextchar[%
omitname@ii#1
omitname@ii#1[]%
defomitname@ii#1[#2]#3%
% Do stuff
defbpl@osurname#3
ifx@empty#1elsedefbpl@ofirstname#1fi
ifx@empty#2elsedefbpl@ovonpart#2fi
%
% Formatting of year in margin par (if requested)
providecommand*plmarginyear[1]%
raggedleftsmalltextbf#1%
%
% Options
%
DeclareBibliographyOptionomitnamedefbpl@osurname#1
DeclareBibliographyOptionomitfirstnamedefbpl@ofirstname#1
DeclareBibliographyOptionomitnameprefixdefbpl@ovonpart#1
newifif@marginyear@marginyearfalse
DeclareBibliographyOptionmarginyear[true]%
ifstrequal#1true@marginyeartruereversemarginpar@marginyearfalse
newifif@unboldyear@unboldyearfalse
DeclareBibliographyOptionboldyear[true]%
ifstrequal#1false@unboldyeartrue@unboldyearfalse
%
% Bibliography filter
%
% Inspired by http://tex.stackexchange.com/a/28555/19291
DeclareBibliographyCategoryfiltered
DeclareIndexNameFormatauthorfiltered%
bpl@normalize#1bpl@tsurname%
bpl@normalize#3bpl@tfirstname%
bpl@normalize#5bpl@tvonpart%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
bpl@normalizebpl@ovonpartbpl@evonpart%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
addtocategoryfilteredthefieldentrykey
DeclareIndexNameFormateditorfiltered%
edefbpl@tsurname#1%
edefbpl@tfirstname#3%
edefbpl@tvonpart#5%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
bpl@normalizebpl@ovonpartbpl@evonpart%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
addtocategoryfilteredthefieldentrykey
DeclareIndexNameFormat[inbook,inproceedings,incollection]editorfiltered%
% AtDataInput%
% indexnames[authorfiltered]author%
% indexnames[editorfiltered]editor%
%
defbibfilterminecategory=filtered
AtBeginDocument%
if@unboldyear
renewbibmacro*date:labelyear+extrayear%
usebibmacrodate:makedate%
fi
%
% l7n
%
NewBibliographyStringwith
NewBibliographyStringparttranslationof
DefineBibliographyStringsenglish%
parttranslationof = partial translation of,
with = with
DefineBibliographyStringsfrench%
parttranslationof = traduction partielle de,
with = avec
DefineBibliographyStringsgerman%
parttranslationof = Teil"ubersetzung von,
with = mit
%
% New driver for reviews
%
DeclareBibliographyDriverreview%
usebibmacrorauthor/label%
setunit*addcolonspace%
usebibmacrotitle%
newunitnewblock
usebibmacroin:%
usebibmacrojournal+issuetitle%
newunitnewblock
printfieldnote%
setunitaddcommaspace%
printfieldpages
newunitnewblock
printfieldissn%
newunitnewblock
printfielddoi%
setunitaddspace
usebibmacroaddendum+pubstate%
newunitnewblock
usebibmacrourl+urldate%
newunitnewblock
usebibmacropageref%
newunitnewblock
usebibmacrorelated%
usebibmacrofinentry
%
% Sorting schemes
%
% Consider the whole date (year-month-day)
% Sorting date (descending), name, title
DeclareSortingSchemeddnt
sort
fieldpresort
sort[final]
fieldsortkey
sort[direction=descending]
field[strside=left,strwidth=4]sortyear
field[strside=left,strwidth=4]year
literal9999
sort[direction=descending]
field[padside=left,padwidth=2,padchar=0]month
literal00
sort[direction=descending]
field[padside=left,padwidth=2,padchar=0]day
literal00
sort
fieldsortname
fieldauthor
fieldeditor
fieldtranslator
fieldsorttitle
fieldtitle
sort
fieldsorttitle
fieldtitle
% Sorting year (descending), month, day, name, title
DeclareSortingSchemeydmdnt
sort
fieldpresort
sort[final]
fieldsortkey
sort[direction=descending]
field[strside=left,strwidth=4]sortyear
field[strside=left,strwidth=4]year
literal9999
sort
field[padside=left,padwidth=2,padchar=0]month
literal00
sort
field[padside=left,padwidth=2,padchar=0]day
literal00
sort
fieldsortname
fieldauthor
fieldeditor
fieldtranslator
fieldsorttitle
fieldtitle
sort
fieldsorttitle
fieldtitle
% Sorting date (ascending), name, title
DeclareSortingSchemednt
sort
fieldpresort
sort[final]
fieldsortkey
sort
field[strside=left,strwidth=4]sortyear
field[strside=left,strwidth=4]year
literal9999
sort
field[padside=left,padwidth=2,padchar=0]month
literal00
sort
field[padside=left,padwidth=2,padchar=0]day
literal00
sort
fieldsortname
fieldauthor
fieldeditor
fieldtranslator
fieldsorttitle
fieldtitle
sort
fieldsorttitle
fieldtitle
makeatother
and a jobname Post
of
makeatletter
%
% Field format definitions
%
DeclareFieldFormatbibentrysetcountmkbibparensmknumalph#1
DeclareFieldFormatlabelnumberwidthmkbibbrackets#1
DeclareFieldFormatshorthandwidthmkbibbrackets#1
DeclareFieldFormatrelated:parttranslationofmkbibbrackets#1
%
% Deal with numbering (resume numbers in refsections)
%
csnumgdefbbx@itemtotal0
csnumgdefbbx@currentitem0
csnumgdefbbx@saverefsection0
newboolnewsection
pretoblx@refsectionglobalsetboolnewsectiontrue
defbibenvironmentbibliography
list
printtext[labelnumberwidth]%
printfieldprefixnumber%
printfieldlabelnumber
setlengthlabelwidthlabelnumberwidth%
setlengthleftmarginlabelwidth%
setlengthlabelsepbiblabelsep%
addtolengthleftmarginlabelsep%
setlengthitemsepbibitemsep%
setlengthparsepbibparsep%
renewcommand*makelabel[1]hss##1%
endlist
ifnumgreaterc@refsectionbbx@saverefsection%
csnumgdefbbx@itemtotalcsusebbx@itemtotal+csusebbx@currentitem%
csnumgdefbbx@saverefsectionc@refsection%
item
DeclareFieldFormatlabelnumber%
ifboolnewsection%
% Fix start counter value
csnumgdefbbx@itemtotalcsusebbx@itemtotal-#1+1%
globalsetboolnewsectionfalse%
%
mkbibdesc#1%
csnumgdefbbx@currentitem#1%
% Print labelnumber as actual number, plus item total
newrobustcmdmkbibdesc[1]%
numbernumexprcsusebbx@itemtotal+#1relax
newcommand*decreasebbxnumbering[1]csnumgdefbbx@itemtotalcsusebbx@itemtotal-#1
%
% New environment for (foreign) reviews
%
defbibenvironmentreviews
beginenumerate%
smallsetlengthitemsep0pt
endenumerate
item
%
% Helper function:
% Removing braces from names (courtesy of egreg at
% http://tex.stackexchange.com/a/79583/19291)
% and normalize spaces
defbpl@normalize#1#2%
begingroup
defbibnamedelima %
defbibnamedelimb %
defIeC##1##1%
protected@edef@tempa#1%
gdef@gtempa%
expandafterbpl@@normalize@tempa@nil
endgroup
let#2@gtempa
defbpl@@normalize#1%
ifx#1@nilelse
expandaftergdefexpandafter@gtempaexpandafter@gtempa#1%
expandafterbpl@@normalize
fi
%
% Remove omitted name from author and editor lists
%
newtogglemyselfprec
newtogglehadmyself
DeclareNameFormatauthor%
ifthenelsevaluelistcount=1ifthenelsevalueauthor>1bibopenparenbibstringwithaddspace%
% Exclude omitted author
bpl@normalize#1bpl@tsurname%
bpl@normalize#3bpl@tfirstname%
bpl@normalize#5bpl@tvonpart%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
bpl@normalizebpl@ovonpartbpl@evonpart%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
toggletruemyselfprectoggletruehadmyself%
ifthenelsevaluelistcount=1ANDvalueliststop=1
stepcounterliststop
ifthenelsevaluelistcount=1togglefalsehadmyself%
ifboolexpr
test iftogglemyselfprec
and
test ifnumlessvaluelistcount3
%
ifnumlessvaluelistcountvalueliststop-1%
addcommaaddspace%
iftogglehadmyself%
ifnumlessvaluelistcountvalueliststop%
addcommaaddspace%
addspacebibstringandaddspace
addspacebibstringandaddspace%
%
%
iffirstinits
ifblank#4#4addspace%
ifblank#3#3addspace%
ifblank#5#5addspace%
togglefalsemyselfprec%
#1%
usebibmacroname:andothers%
ifthenelsevaluelistcount=valueliststopANDvalueauthor>1unspacebibcloseparen%
DeclareNameFormateditor%
ifthenelsevaluelistcount=1ifthenelsevalueeditor>1bibopenparenbibstringwithaddspace%
% Exclude omitted author
bpl@normalize#1bpl@tsurname%
bpl@normalize#3bpl@tfirstname%
bpl@normalizebpl@osurnamebpl@esurname%
bpl@normalizebpl@ofirstnamebpl@efirstname%
ifboolexpr
test ifdefstrequalbpl@esurnamebpl@tsurname
and
( test ifdefstrequalbpl@efirstnamebpl@tfirstname or test ifdefstringbpl@ofirstname )
and
( test ifdefstrequalbpl@evonpartbpl@tvonpart or test ifdefstringbpl@ovonpart )
toggletruemyselfprectoggletruehadmyself%
ifthenelsevaluelistcount=1ANDvalueliststop=1
stepcounterliststop
ifthenelsevaluelistcount=1togglefalsehadmyself%
ifboolexpr
test iftogglemyselfprec
and
test ifnumlessvaluelistcount3
%
ifnumlessvaluelistcountvalueliststop-1%
addcommaaddspace%
iftogglehadmyself%
ifnumlessvaluelistcountvalueliststop%
addcommaaddspace%
addspacebibstringandaddspace
addspacebibstringandaddspace%
%
%
iffirstinits
ifblank#4#4addspace%
ifblank#3#3addspace%
ifblank#5#5addspace%
togglefalsemyselfprec%
#1%
usebibmacroname:andothers%
ifthenelsevaluelistcount=valueliststopANDvalueeditor>1unspacebibcloseparen%
DeclareNameFormatbookauthor%
ifblank#5#5addspace%
#1%
iffirstinits
ifblank#4addcommaspace #4%
ifblank#3addcommaspace #3%
ifthenelsevaluelistcount<valueliststop
addslash
%
usebibmacroname:andothers
renewbibmacro*name:andothers%
ifthenelsevaluelistcount=valueliststopAND
ifmorenames
ifnumvalueliststop>1 finalandcommafi
andothersdelimbiblcstringandothers
%
% Macros
%
renewbibmacro*author%
ifnameundefauthor
usebibmacroyear+labelyearaddspace%
printnamesauthor%
setunitaddspace%
iffieldundefnameaddon
mkbibbracketsbibstringalias%
addspaceprintfieldnameaddon
renewbibmacro*editor%
ifnameundefeditor
usebibmacroyear+labelyear%
addspace%
printnameseditor%
setunitaddspace%
usebibmacroeditorstrg
renewbibmacro*editor+others%
ifboolexpr
test ifuseeditor
and
not test ifnameundefeditor
usebibmacroyear+labelyear%
addspace%
printnameseditor%
setunitaddcommaspace%
usebibmacroeditor+othersstrg%
clearnameeditor
newbibmacro*date:makedate%
printtext%
iffieldundefyear%
iffieldundefpubstate%
printfieldpubstate%
%
%
iffieldundefmonth%
printdateextra%
printdate%
%
%
newbibmacro*date:labelyear+extrayear%
mkbibboldusebibmacrodate:makedate%
newbibmacro*year+labelyear%
iffieldundefyear%
iffieldundefpubstateletbbx@lasthashundefined%
usebibmacrodate:labelyear+extrayear%
if@marginyear%
iffieldequalspubstatebbx@lasthash%
printtextmarginparsmallplmarginyearbibsentenceprintfieldpubstate%
%
fi
savefieldpubstatebbx@lasthash%
clearfieldpubstate%
%
usebibmacrodate:labelyear+extrayear%
if@marginyear%
iffieldequalslabelyearbbx@lasthash%
printtextmarginparsmallplmarginyearprintfieldlabelyear%
%
fi
savefieldlabelyearbbx@lasthash%
newbibmacro*rauthor/label%
ifnameundefauthor
usebibmacrolabel
usebibmacrorauthor
newbibmacro*rauthor%
ifnameundefauthor
letbbx@lasthashundefined
ifthenelseiffieldequalsnamehashbbx@lasthashANDNOT
iffirstonpage
bibnamedash
savefieldnamehashbbx@lasthash%
printnamesauthor%
setunitaddspace%
iffieldundefnameaddon
mkbibbracketsbibstring[unspace]aliasaddspaceprintfieldnameaddon%
addspace%
usebibmacroryear+labelyear
newbibmacro*ryear+labelyear%
iffieldundefyear
printtext[parens]%
printfieldlabelyear%
printfieldextrayear
makeatother
My guess is the sorting is all screwed up, but biblatex
supports multiple sorting schemes. Again, there are likely style combinations that will result in major clashes so this is not a general solution. I think it, however, hints at a general solution if people wrote the bbx
and cbx
styles to be modular.
answered Apr 9 '14 at 13:35
StrongBadStrongBad
13.3k649104
13.3k649104
I'm just looking into the feasibility of doing something similar for a combination ofbiblatex-chicago
'snotes
andauthordate
styles, for primary and secondary literature references respectively, but I'm getting the impression it's not reasonably possible: For example, these two styles differ in their set ofDeclareBibliographyDriver
sequences, which can only be loaded in the preamble, so I would have to decide for one of the two drivers, but don't I break a style by using the drivers of another one?
– muk.li
Apr 20 '15 at 19:52
add a comment |
I'm just looking into the feasibility of doing something similar for a combination ofbiblatex-chicago
'snotes
andauthordate
styles, for primary and secondary literature references respectively, but I'm getting the impression it's not reasonably possible: For example, these two styles differ in their set ofDeclareBibliographyDriver
sequences, which can only be loaded in the preamble, so I would have to decide for one of the two drivers, but don't I break a style by using the drivers of another one?
– muk.li
Apr 20 '15 at 19:52
I'm just looking into the feasibility of doing something similar for a combination of
biblatex-chicago
's notes
and authordate
styles, for primary and secondary literature references respectively, but I'm getting the impression it's not reasonably possible: For example, these two styles differ in their set of DeclareBibliographyDriver
sequences, which can only be loaded in the preamble, so I would have to decide for one of the two drivers, but don't I break a style by using the drivers of another one?– muk.li
Apr 20 '15 at 19:52
I'm just looking into the feasibility of doing something similar for a combination of
biblatex-chicago
's notes
and authordate
styles, for primary and secondary literature references respectively, but I'm getting the impression it's not reasonably possible: For example, these two styles differ in their set of DeclareBibliographyDriver
sequences, which can only be loaded in the preamble, so I would have to decide for one of the two drivers, but don't I break a style by using the drivers of another one?– muk.li
Apr 20 '15 at 19:52
add a comment |
Does combining styles work?
Answer: No, if randomly using existing biblatex styles and trying to merge them (I tried authordate and chicago-notes): the tricky part is where they use the same names for bibmacros and booleans, but do different things with and to them; or where they import base code (like standard.bbx) and add/modify in different ways. It's like getting a car to run by merging two different-model engines - there is some overlap, but some things just don't fit. (And at the style-level, merging won't help: does the date go before, or after? It can't do both.)
Answer: Yes, if you build the style (or meta-style) from the ground up so that the processing logic is internally consistent and coherent. The sequencing of blocks then becomes trivial because the bibliography driver then becomes a despatcher: "if this bibentry/type/key, then that bibmacro, else the other bibmacro". (Visually, mixed styles within the same text block won't help the reader, though.)
Alternatively, split the bibliography, by keyword or category, or custom entry type(s): let the structure follow the information. And, if style is thought of as separate from biblatex style, then a different "yes" is possible because, in the spirit of keeping form and content separate, Latex code is allowed inside the bib field formats and elsewhere. It doesn't all have to be #1.
add a comment |
Does combining styles work?
Answer: No, if randomly using existing biblatex styles and trying to merge them (I tried authordate and chicago-notes): the tricky part is where they use the same names for bibmacros and booleans, but do different things with and to them; or where they import base code (like standard.bbx) and add/modify in different ways. It's like getting a car to run by merging two different-model engines - there is some overlap, but some things just don't fit. (And at the style-level, merging won't help: does the date go before, or after? It can't do both.)
Answer: Yes, if you build the style (or meta-style) from the ground up so that the processing logic is internally consistent and coherent. The sequencing of blocks then becomes trivial because the bibliography driver then becomes a despatcher: "if this bibentry/type/key, then that bibmacro, else the other bibmacro". (Visually, mixed styles within the same text block won't help the reader, though.)
Alternatively, split the bibliography, by keyword or category, or custom entry type(s): let the structure follow the information. And, if style is thought of as separate from biblatex style, then a different "yes" is possible because, in the spirit of keeping form and content separate, Latex code is allowed inside the bib field formats and elsewhere. It doesn't all have to be #1.
add a comment |
Does combining styles work?
Answer: No, if randomly using existing biblatex styles and trying to merge them (I tried authordate and chicago-notes): the tricky part is where they use the same names for bibmacros and booleans, but do different things with and to them; or where they import base code (like standard.bbx) and add/modify in different ways. It's like getting a car to run by merging two different-model engines - there is some overlap, but some things just don't fit. (And at the style-level, merging won't help: does the date go before, or after? It can't do both.)
Answer: Yes, if you build the style (or meta-style) from the ground up so that the processing logic is internally consistent and coherent. The sequencing of blocks then becomes trivial because the bibliography driver then becomes a despatcher: "if this bibentry/type/key, then that bibmacro, else the other bibmacro". (Visually, mixed styles within the same text block won't help the reader, though.)
Alternatively, split the bibliography, by keyword or category, or custom entry type(s): let the structure follow the information. And, if style is thought of as separate from biblatex style, then a different "yes" is possible because, in the spirit of keeping form and content separate, Latex code is allowed inside the bib field formats and elsewhere. It doesn't all have to be #1.
Does combining styles work?
Answer: No, if randomly using existing biblatex styles and trying to merge them (I tried authordate and chicago-notes): the tricky part is where they use the same names for bibmacros and booleans, but do different things with and to them; or where they import base code (like standard.bbx) and add/modify in different ways. It's like getting a car to run by merging two different-model engines - there is some overlap, but some things just don't fit. (And at the style-level, merging won't help: does the date go before, or after? It can't do both.)
Answer: Yes, if you build the style (or meta-style) from the ground up so that the processing logic is internally consistent and coherent. The sequencing of blocks then becomes trivial because the bibliography driver then becomes a despatcher: "if this bibentry/type/key, then that bibmacro, else the other bibmacro". (Visually, mixed styles within the same text block won't help the reader, though.)
Alternatively, split the bibliography, by keyword or category, or custom entry type(s): let the structure follow the information. And, if style is thought of as separate from biblatex style, then a different "yes" is possible because, in the spirit of keeping form and content separate, Latex code is allowed inside the bib field formats and elsewhere. It doesn't all have to be #1.
answered 10 mins ago
CicadaCicada
765
765
add a comment |
add a comment |
Thanks for contributing an answer to TeX - LaTeX Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f170358%2fbiblatex-different-bibstyles-in-the-same-document%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Welcome to TeX.SX! You can have a look at our starter guide to familiarize yourself further with our format. Though it might not be crucial to your question a nice MWE is still greatly appreciated.
– moewe
Apr 8 '14 at 14:10
The following question seems to be related link
– Tahtisilma
Apr 8 '14 at 14:35
I'm afraid it does not look like this is currently possible with
biblatex
. While different sorting schemes for bibliographies have been implemented (as mentioned by lockstep in Tahtisilma's link above), different (bibliography/citation) styles is a different and much more complicated issue.– moewe
Apr 8 '14 at 14:41
1
Another possibility would be to create a new
cite
command for your personal publications lists and just use that. Something likeDeclareCiteCommandperscite...
, which provided output in the desired way, could be used to mimic the appearance of a second bibliographical style.– jon
Apr 9 '14 at 13:50
1
Do you really need different citation styles? For different bibliography styles you may probably define appropriate bibliography environments with
defbibenvironment
.– Oleg Domanov
Apr 30 '14 at 15:31