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










11















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?










share|improve this question



















  • 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 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





    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
















11















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?










share|improve this question



















  • 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 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





    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














11












11








11


2






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?










share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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 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 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





    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













  • 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 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





    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








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











2 Answers
2






active

oldest

votes


















2














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



enter image description here



and the publist output is



enter image description here



If we include the jobname Pre and jobname Post files with usepackage[labelnumber=true, bibstyle=authoryear]biblatex we get



enter image description here



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.






share|improve this answer























  • 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


















0














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.



sub bibs






share|improve this answer























    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
    );



    );













    draft saved

    draft discarded


















    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









    2














    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



    enter image description here



    and the publist output is



    enter image description here



    If we include the jobname Pre and jobname Post files with usepackage[labelnumber=true, bibstyle=authoryear]biblatex we get



    enter image description here



    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.






    share|improve this answer























    • 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















    2














    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



    enter image description here



    and the publist output is



    enter image description here



    If we include the jobname Pre and jobname Post files with usepackage[labelnumber=true, bibstyle=authoryear]biblatex we get



    enter image description here



    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.






    share|improve this answer























    • 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













    2












    2








    2







    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



    enter image description here



    and the publist output is



    enter image description here



    If we include the jobname Pre and jobname Post files with usepackage[labelnumber=true, bibstyle=authoryear]biblatex we get



    enter image description here



    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.






    share|improve this answer













    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



    enter image description here



    and the publist output is



    enter image description here



    If we include the jobname Pre and jobname Post files with usepackage[labelnumber=true, bibstyle=authoryear]biblatex we get



    enter image description here



    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.







    share|improve this answer












    share|improve this answer



    share|improve this answer










    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 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
















    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











    0














    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.



    sub bibs






    share|improve this answer



























      0














      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.



      sub bibs






      share|improve this answer

























        0












        0








        0







        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.



        sub bibs






        share|improve this answer













        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.



        sub bibs







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 10 mins ago









        CicadaCicada

        765




        765



























            draft saved

            draft discarded
















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Lioubotyn Sommaire Géographie | Histoire | Population | Notes et références | Liens externes | Menu de navigationlubotin.kharkov.uamodifier« Recensements et estimations de la population depuis 1897 »« Office des statistiques d'Ukraine : population au 1er janvier 2010, 2011 et 2012 »« Office des statistiques d'Ukraine : population au 1er janvier 2011, 2012 et 2013 »Informations officiellesCartes topographiquesCarte routièrem

            Isabella Eugénie Boyer Biographie | Références | Menu de navigationmodifiermodifier le codeComparator to Compute the Relative Value of a U.S. Dollar Amount – 1774 to Present.

            Mpande kaSenzangakhona Biographie | Références | Menu de navigationmodifierMpande kaSenzangakhonavoir la liste des auteursm