2

I have the following problem: I need a kind of very simple "double citing system". For normal literature I use the author-year style in biblatex without problems. I made following small changes:

\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
\renewcommand{\postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{#1}

The problem is now I want to cite old books (early modern period) in a different way (not as author-year), something like this:

 Shortauthor, *shorttitle*, p. 124

I think a solution is to write an own cite command, something like this, which seems to work well:

\DeclareBibliographyDriver{myshort}{%
 \usebibmacro{begentry}%
  \ifboolexpr{ test{\ifnameundef{shortauthor}} 
            or test {\iffieldundef{shorttitle}}}
   {\usedriver{}{\thefield{entrytype}}}
   {\printnames{shortauthor}%
    \setunit{\addcomma\space}%
    \printfield{shorttitle}\isdot}%
    \usebibmacro{finentry}%
  }

  \DeclareCiteCommand{\mycite}[\mkbibfootnote]
   {\usebibmacro{prenote}}
   {\usedriver{}{myshort}}
   {\multicitedelim}
    {\usebibmacro{postnote}}

BUT (and this is my actual question): is there a way to:

  • disable the small capitals of the author?
  • put the title in cursive?
  • get the "p." for pages back?

That is, a way of somehow disable for this concrete command the general options I put with the renewcommands, etc.

  • By ‘cursive’, I suppose you mean italic? – Bernard Dec 12 '14 at 19:54
  • Yes, of course. Sorry for the mistake. – rogorido Dec 12 '14 at 22:28
2

A useful trick for situations like this is to create a toggle that it is turned on when you enter the command and turned off when leaving the command:

\newtoggle{mycite}

\renewcommand*{\mkbibnamelast}[1]{\iftoggle{mycite}{#1}{\textsc{#1}}}
\renewcommand{\postnotedelim}{\iftoggle{mycite}{\addcomma\addspace}{\addcolon\space}}
\DeclareFieldFormat{postnote}{#1}

and then, when you define your new cite command:

\DeclareCiteCommand{\mycite}[\mkbibfootnote]
   {\toggletrue{mycite}\usebibmacro{prenote}}
   {\usebibmacro{mycite}}
   {\multicitedelim}
   {\usebibmacro{postnote}\togglefalse{mycite}}

By the way, you cannot use \usedriver{}{\thefield{entrytype} within the definition of \DeclareBibliographyDriver: it will enter in an infinite loop and TeX will report an error. What you can do is to define a new bib macro. For example, using your definition as a starting point (and adjusted to put the (short)title in itialic):

\newbibmacro{mycite}{
   \ifboolexpr
     {test {\ifnameundef{shortauthor}} or
      test {\iffieldundef{shorttitle}}}
     {\usedriver{}{\thefield{entrytype}}} 
     {\printnames{shortauthor}%
     \setunit{\addcomma\space}%
     \mkbibemph{\printfield{shorttitle}}}
}
  • thanks a lot. This seems to work perfectly. Except for getting back the p. or pp. I have put \DeclareFieldFormat{postnote}{\iftoggle{mycite}{p.#1}{#1}}, but I can imagine I should use a macro instead of "p.", but which one? – rogorido Dec 12 '14 at 22:31
  • I ignore that on purpose (and forgot to add the reason in my answer). I think you should put p. or pp. in the post note directly. What about if you refer to a chapter instead of a page? – Guido Dec 12 '14 at 22:35
  • You're right. Thanks a lot again! This was very helpful! – rogorido Dec 12 '14 at 22:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.