csquotes: Footnotes after Block Quotes with Quotation Marks

Pretty often, I come across a situation where I'd like to add a footnote to a block quote in order to comment on the passage quoted.

\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage{lmodern,csquotes,lipsum}
\begin{document}
\lipsum*[1]
\blockquote{\lipsum*[1]...}\footnote{bla...}
\lipsum*[1]
\blockquote{\lipsum*[1]...\footnote{bla...}}
\lipsum*[1]
\end{document}


As expected, the first arrangement is not going to work. The footnote mark will end up at the beginning of the paragraph following the quote (as \footnote is invoked after the \blockquote is closed). This can be fixed by including \footnote within \blockquote.

But this fix will stop working as soon as we apply certain changes to the appearance of our block quotes. Consider my modifications, which I find more pleasing than the LaTeX defaults. (I've disabled those parts of my modifications that aren't relevant to the problem.)

\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage{lmodern,csquotes,lipsum}

\renewcommand{\mkblockquote}[4]{\enquote{#1}#2\ifterm{\relax}{#3}#4}

%
%\renewenvironment{quote}
%{\list{}{\itemindent=0em
%         \listparindent=\parindent
%         \leftmargin=\parindent
%         \rightmargin=0em
%         \partopsep=0em
%         \topsep=0em
%         }%
% \item\relax}
%{\endlist}

\begin{document}
\lipsum*[1]
\blockquote{\lipsum*[1]...}\footnote{bla...}
\lipsum*[1]
\end{document}


This style (among other things) retains the quotation marks even for the block quotes. That's what the \mkblockquote line is about. The problem is: how can we can have the footnote mark come after the closing mark, but remain on the same line? I've experiment with things like \nobreak, but, being a layman when it comes to low-level things, to no avail. I've also tried working on the modified \mkblockquote: one might make the footnote an optional argument to \blockquote. But everything I tried still resulted in the footnote mark being pushed into the next paragraph.

Update

karlkoeller suggested using a re-defined \mkcitation for that purpose. This does indeed produce a footnote mark in the proper place, and provides a very elegant interface: \blockquote[footnote text]{quote text}. But it breaks as soon as there is a citation command somewhere in the footnote text -- which will happen quite often ...or, in my case, literally every time. For a simple block quote with no additional remarks in the footnote, I use \blockc(!)quote[123]{xyz}{quote text}, which generates the block quote, the footnote mark, and the citation in the footnote. What I'm after is a way to not only have a citation in the footnote, but additional text, which in turn may include more citations (see the picture, which I updated as well).

\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage[style=authoryear]{biblatex}
\usepackage{lmodern,csquotes,lipsum}

\renewcommand{\mkblockquote}[4]{\enquote{#1}#2\ifterm{\relax}{#3}#4}
\renewcommand{\mkcitation}[1]{\footnote{#1}}

\begin{document}
\lipsum*[1]
\lipsum*[1]
\end{document}


NB: using the postnote of \blockcquote, as in
\blockcquote[123... footnote text, more citations]{xyz}{quote text}
is not an option. It'll break as well, complaining about nested citation commands.

Note that the csquotes package allows to define an optional argument for citations in \blockquote and this one can be defined to be a footnote.

So, you just have to add

\renewcommand{\mkcitation}[1]{\footnote{#1}}


in the preamble

and use

\blockquote[bla...]{\lipsum*[1]...}


\blockquote{\lipsum*[1]...}\footnote{bla...}


Complete MWE

\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage{lmodern,csquotes,lipsum}

\renewcommand{\mkblockquote}[4]{\enquote{#1}#2\ifterm{\relax}{#3}#4}
\renewcommand{\mkcitation}[1]{\footnote{#1}}

\begin{document}
\lipsum*[1]
\blockquote[bla...]{\lipsum*[1]...}
\lipsum*[1]
\end{document}


Output

Update

Your issue in the update can be resolved in this way:

replace

\renewcommand{\mkcitation}[1]{\footnote{#1}}


with simply

\renewcommand{\mkcitation}[1]{#1}


and then use

\blockquote[\footnotemark]{\lipsum*[1]...}


\blockquote[Says \cite[123]{xyz}. See also \cite[123]{xyz}.]{\lipsum*[1]...}


In this way, we've separated the \footnotemark from the \footnotetext and the problem doesn't arise.

Complete working MWE

\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage[style=authoryear]{biblatex}
\usepackage{lmodern,csquotes,lipsum}

\renewcommand{\mkblockquote}[4]{\enquote{#1}#2\ifterm{\relax}{#3}#4}
\renewcommand{\mkcitation}[1]{#1}

\begin{document}
\lipsum*[1]
\blockquote[\footnotemark]{\lipsum*[1]...}
\lipsum*[1]
\end{document}


Output

• I guess some people might consider that an abuse of what that optional argument was designed for... I'm not that strict; it works great for me :) – Nils L Oct 4 '13 at 17:39
• update: looks like it isn't as simple as I thougt. See my edited post. – Nils L Oct 4 '13 at 19:09
• @NilsL see the updated answer. Now it should be OK. – karlkoeller Oct 5 '13 at 5:45
• yes, this one seems to work. I'll do some more thorough testing in more real-life situations the next two or three days and will let you know how that turns out... – Nils L Oct 6 '13 at 9:31