Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I have another question about customizing footnote-citations with biblatex.

For common citations of facts or observations from some article, I want to add a prefix to my footnotes. It's meant to distinguish non-literal literal quotes. Only for the rare cases of actually verbatim quoting someone, it is not required. 95% of my citations use the "See:"-prefix.

(The "prefix" I'm referring to is not the usual name-prefix like "von", "de", "van", etc.)

So, instead of

Wayne (2012), p. 123.

I'd like to achieve

See: Wayne (2012), p. 123.

This works already with the prenote-syntax (see the MWE), but could I also customize the renewbibmacro to include the prefix there? Otherwise I'd a) have to crawl through the whole document to change every citation manually and b) would have to do it again if I'd ever want to change it.

For verbatim quotes I could just introduce a new command \citelit with \let\citelit\cite, I guess?

Minimum working example:

\begin{filecontents}{_references.bib}
@article{wayne12a,
    Author={Wayne, B.}, Title={A survey about the social inequalities in Gotham City},
    Journal={International Journal of Comic Science}, Year={2012},
    Volume={7}, Number={4}, Pages={35--45}}

@article{joker10b,
    Author={Joker, T.}, Title={Why so serious?},
    Journal={Journal of Vulgarity}, Year={2010},
    Volume={38},Number={5}, Pages={103--116}}
\end{filecontents}

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}

\usepackage[bibstyle=authoryear, citestyle=authoryear, autocite=footnote,% 
           dashed=false, firstinits=true]{biblatex}
\addbibresource{_references.bib}% add bibtex-file
\let\cite\autocite% \cite -> \autocite

\renewbibmacro*{cite:labelyear+extrayear}{% Round parentheses around the year
\iffieldundef{labelyear} % Source: tex.stackexchange.com/a/30822/10434
  {}
  {\printtext[bibhyperref]{%
   \printtext[parens]{%
   \printfield{labelyear}%
   \printfield{extrayear}}}}}

\begin{document}
The CEO of Wayne Enterprises praised Batman's achievements for improving the living 
conditions in Gotham City.~\cite[See:][31]{wayne12a}

In a recent publication, however, The Joker described Batman as ``a little boy in a 
playsuit, crying for mummy and daddy.''~\cite[109]{joker10b}
\end{document}
share|improve this question
2  
I am posting this as a comment since I won't be able to provide you with the actual (tested) solution at the moment. You could modify the .cbx file (after copying it to your local directory tree) or declare a new cite command (search for \DeclareCiteCommand in the file) and insert the prefix before \usebibmacro{prenote}. And don't hardcode "See:" – use something like \bibstring{see}\addcolon\addspace. –  ienissei Jan 27 '12 at 14:02
add comment

2 Answers

up vote 3 down vote accepted

For future reference, here is another solution that allows you to overwrite the default setting for the citations with an automatic "See:" prenote.

As discussed with lockstep, this functionality is not absolutely needed as an answer to the OP's question, but since \citelitand \cite have a semantic meaning in this case (i.e. direct and indirect citation), it may be relevant to have commands that reflect it. Furthermore, this solution is more customisable than a \newcommand, and could be used by other people who want to achieve a similar result.

Here is what you can write in the preamble:

% Create a cite command that uses the default autocite=footnote behaviour
\DeclareCiteCommand{\seecite}[\iffootnote\mkbibparens\mkbibfootnote]
    {% Replace \usebibmacro{prenote} by its demfinition and modify it
    \iffieldundef{prenote}
        {\bibstring{see}\addcolon%
        \setunit{\prenotedelim}}%
        {\printfield{prenote}%
        \setunit{\prenotedelim}}%
    }
    {\usebibmacro{citeindex}%
    \usebibmacro{cite}}
    {\multicitedelim}
    {\usebibmacro{postnote}}

As suggested in the original question, we use \citelit and \cite:

\let\citelit\autocite
\let\cite\seecite

Now, we can write this in the document:

\cite[92]{wayne12a}
\cite[Contra\addcolon][73]{joker10b}
\citelit[127]{joker10b}

Output for the above code

share|improve this answer
    
Your solution probably extends more easily to qualified citation lists. For this case you'd use multiprenote instead of prenote. –  Audrey Jan 28 '12 at 17:27
add comment

I would simply define a macro \precite that builds on \autocite but always uses its second optional argument. iennisei's \bibstring tip is also sound -- note, however, that adding \addspace to the new macro's definition would result in a double space after the prefix.

\documentclass{article}

\usepackage[style=authoryear,autocite=footnote]{biblatex}

\NewBibliographyString{see}
\DefineBibliographyStrings{english}{%
  see = {See},
}

\newcommand*{\precite}[2][]{\autocite[\bibstring{see}\addcolon][#1]{#2}}

\textheight=100pt% just for the example

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@article{wayne12a,
    Author={Wayne, B.}, Title={A survey about the social inequalities in Gotham City},
    Journal={International Journal of Comic Science}, Year={2012},
    Volume={7}, Number={4}, Pages={35--45}}
@article{joker10b,
    Author={Joker, T.}, Title={Why so serious?},
    Journal={Journal of Vulgarity}, Year={2010},
    Volume={38},Number={5}, Pages={103--116}}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}

The CEO of Wayne Enterprises praised Batman's achievements for improving the living
    conditions in Gotham City \precite[31]{wayne12a}.

In a recent publication, however, The Joker described Batman as ``a little boy in a
    playsuit, crying for mummy and daddy'' \autocite[109]{joker10b}.

\end{document}

enter image description here

share|improve this answer
2  
Thank you for mentioning the extra space, I wrote this off the top of my head, and BibLaTeX has a real knack for adding extra spaces. Your solution is much easier than mine – but it prevents the use of the precite optional argument (although it doesn't seem needed in this particular case). –  ienissei Jan 27 '12 at 14:19
    
This is a really clean solution. I altered it a bit and used \renewcommand*{\cite}[2][]{\autocite[\bibstring{see}\addcolon][#1]{#2}} instead. Now I only need to change the few citations using a precite (as ienissei mentioned already, this argument is not valid anymore) and the verbatim citations should become \autocite. Thanks a lot, lockstep! –  dhst Jan 27 '12 at 14:49
1  
@ienissei I agree that using \DeclareCiteCommand is a cleaner solution for most cases. I used \newcommand because I didn't think that a second precite argument is needed in case of the OP's request. –  lockstep Jan 27 '12 at 15:38
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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