Support LaTeX's `\blockcquote`
Opened this issue · 2 comments
I'd love to have a LaTeX special block which would correctly export to the respective \blockcquote
command. For example,
#+begin_bquote :key zermelo1908 :pages 20-22
This is a blockquote.
#+end_bquote
should export to \blockcquote[20-22]{zermelo1908}{This is a quote.}
. Could you implement it, or does anyone have an idea how to do it?
@Perangelot This should be straightforward to make.
To make it, start with this simple exercise (with solutions) on how to define a new block type 😉
In LaTeX, the blockcquote
block simply expands to the LaTeX-command \blockcquote
. In beamer
, it results in a quote environment in which the text is placed, below of which the full author name, the title of the work and the year it was published are displayed. For the beamer
implementation, the command \citeauthorfull
has to be defined like this:
\DeclareCiteCommand{\citeauthorfull}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\DeclareNameAlias{labelname}{first-last}%
\usebibmacro{prenote}}
{\ifciteindex
{\indexnames{labelname}}
{}%
\printtext[bibhyperref]{\printnames{labelname}}}
{\multicitedelim}
{\usebibmacro{postnote}}
Although not a mandatory argument, citekey
is needed for it to work properly.
Here is the code:
(org-defblock blockcquote nil (citekey "" pages "" above "1em" below "0.5em")
"For LaTeX, use the `blockcquote' command, for beamer, use the `quote' environment with the quote description centered below."
(cond
((equal backend 'latex)
(format "\\blockcquote[%s]{%s}{%s}"
pages citekey contents))
((equal backend 'beamer)
()
(format "\\vskip %s
\\begin{quote}
%s
\\end{quote} \\pause \\vskip %s
\\begin{center}
\\vskip -1em
\\parbox[c]{0.8\\linewidth}{\\centering \\textemdash~\\citeauthorfull{%s}, \\citefield{%s}{title}, \\citeyear{%s}}
\\end{center}"
above raw-contents below citekey citekey citekey))))