I want to have the DOI field explicitly printed for just one (or two) citations (\fullfootcite in my case). For the rest of the document, I use the doi=false option of biblatex combined with a DOI link included in the title of the reference. The other questions about per citation options found here and here are only concerned with modifying the number of printed author names.
Asked
Active
Viewed 518 times
8
1 Answers
9
From standard.bbx it is apparent that the doi option setting toggles the value of bbx:doi. Loading biblatex with doi=false essentially invokes \togglefalse{bbx:doi}. To enable doi for just a few \fullfootcite commands, use:
\AtNextCite{\toggletrue{bbx:doi}}\fullfootcite{<keys>}
Note that use of \AtNextCite is appropriate here because the scope of doi is global. Scope of all standard options can be found in the biblatex manual appendix called "Option Scope".
Audrey
- 28,881
\fullfootciteand simply use\citefield{<entry key>}{doi}along with\fullcitein a\footnotecommand? – jon Jul 23 '13 at 19:15\citefieldcommand. However, it would be interesting to know whether there is a more general solution which does not include the manual workaround. – sebschub Jul 23 '13 at 19:41biblatex's\DeclareCiteCommand. – jon Jul 23 '13 at 20:43\citefielddoesn't apply the same format as the bibliography driver. The user would also have to replicate the driver's order and unit punctuation. Small changes to existing citation commands are best handled using the citation hooks. For big changes\DeclareCiteCommandshould almost always be preferred over generic LaTeX commands. – Audrey Jul 23 '13 at 21:52biblatexmethods is usually the better way forward (and +1 for your simple and elegant answer), but if one is globally turning off theDOIfield, there is no a priori reason to assume that the bibliography driver is doing or even needs to be doing the 'right thing' with the formatting of theDOIfield. Thus the simpler, and perhaps much faster (depending on one's knowledge ofbiblatex), though certainly less cleaner, solution may be to use a low-level command for what amounts to an ad hoc problem. – jon Jul 23 '13 at 22:19