12

I'm trying to force csquotes to always set a \blockquote in display mode but still enclose the quote in quotation marks, German ones in particular.

How can I achieve that?

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern,blindtext}

\usepackage[babel=true,strict=true,german=quotes,threshold=1]{csquotes}

\begin{document}

\blindtext

\blockquote{\blindtext}

\blindtext

\end{document}

This example produces a quote as an indented paragraph, but without quotation marks.

2
  • 4
    Something like \renewcommand\mkblockquote[4]{\enquote{#1#2#3}#4} should work, see section 8.7 Hooks for Quotations and Citations of the csquotes manual for details on \mkblockquote
    – cgnieder
    Sep 29, 2013 at 22:37
  • This sounds like what I'm looking for. I'll give it a try. If it works I would happily accept it as the answer.
    – Scolytus
    Sep 30, 2013 at 4:55

4 Answers 4

10

The csquotes manual suggests to redefine \mkblockquote, see section 8.7 Hooks for Quotations and Citations. One possibility would be

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

which gives the same effect as in this answer.

The four arguments of \mkblockquote refer to

\mkblockquote{<text>}{<punct>}{<tpunct>}{<cite>}

which are explained in the manual as follows

  • #1 The text argument of the command.
  • #2 The optional <punct> argument of the command. If there is no <punct> argument, this parameter is empty.
  • #3 Trailing <tpunct> punctuation immediately after the command. If there is no such punctuation or if the autopunct feature is disabled, this parameter is empty.
  • #4 The optional <cite> argument of the command, wrapped in \mkcitation. If there is no <cite> argument, this parameter is empty. With integrated quotation commands, this parameter is the citation code, wrapped in \mkccitation.

In the example below I use

\renewcommand\mkblockquote[4]{\leavevmode\llap{,,}#1#2#3``#4}

where \llap{,,} places the opening quotation mark left of the text in the quote margin. (The space at the end before the closing quotation mark is an artefact of \blindtext and not related to \mkblockquote.)

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern,blindtext}

\usepackage[babel=true,strict=true,german=quotes,threshold=1]{csquotes}

\renewcommand\mkblockquote[4]{\leavevmode\llap{,,}#1#2#3``#4}

\begin{document}

\blindtext

\blockquote{\blindtext}

\blindtext

\end{document}

enter image description here

5
  • Very nice result! thx!
    – Scolytus
    Oct 1, 2013 at 6:16
  • Instead of \renewcommand\mkblockquote[4]{\leavevmode\llap{,,}#1#2#3``#4} we could use \renewcommand\mkblockquote[4]{\leavevmode\llap{\textooquote}#1#2#3\textcoquote#4} for localization-awareness. Unfortunately the tracking with \openautoquote/\closeautoquote does not work.
    – moewe
    Nov 10, 2015 at 8:11
  • I cooked up \makeatletter \renewcommand\mkblockquote[4]{\leavevmode\llap{\openautoquote\csq@eqgroup}\csq@bqgroup\advance\csq@qlevel\@ne#1#2#3\closeautoquote#4} \makeatother just now, which seems to do all the tracking as advertised.
    – moewe
    Nov 10, 2015 at 8:39
  • @moewe Ah, probably being hidden in the \llap box is a problem for \openautoquote and the tracking mechanism
    – cgnieder
    Nov 10, 2015 at 8:52
  • Yes, I suppose it has to do with grouping.
    – moewe
    Nov 10, 2015 at 16:12
4

Just add \enquote{...} inside the \blockquote command.

MWE:

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern,blindtext}

\usepackage[babel=true,strict=true,german=quotes,threshold=1]{csquotes}

\begin{document}
\blindtext

\blockquote{\enquote{\blindtext}}   %<=======================

\blindtext
\end{document}

Result:

enter image description here

2
  • @jon That seems to be a problem with \blindtext, it puts a space at the end. If one uses a text without a space at the end, everything works as expected.
    – moewe
    Sep 30, 2013 at 8:10
  • 4
    it would be nicer if the opening quotes were set just outside the quote margin. Sep 30, 2013 at 14:23
0

I added threshold=1 and thresholdtype=words to the \usepackage-Command to enforce blockquotes even at short quotations.

The threshold option refers to words or lines (default). In combination with thresholdtype=words the threshold for block-quotes can be set to one word.

For me the following command worked well until now:

\usepackage[autostyle=false, style=english, threshold=1, thresholdtype=words]{csquotes}

The package documentation at page 4 shows the following options:

threshold=〈integer〉

default:3

This option defines the number of lines or words the block quotation facilities useas a threshold when determining whether a quotation should be typeset in inline orin display mode. It corresponds to the\SetBlockThresholdcommand. See §§ 3.5and 8.6 for further details.

thresholdtype=lines

wordsdefault:lines

This option selects the block threshold type. Withthresholdtype=lines, the blockquotation facilities will determine the number of lines required to typeset the quo-tation; withthresholdtype=words, they count the number of words in the quota-tion.3The default threshold setup is 3 lines. If you prefer something like 50 words,setthreshold=50andthresholdtype=words. See § 3.5 for further detail

0

Taken (and adapted) from MoeWe.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[american]{babel}
\usepackage{lipsum}

\usepackage[
    autostyle,
    strict=true,
    english=american,
    threshold=2
    ]{csquotes}

\makeatletter
\renewcommand{\mkbegdispquote}[2]{%
    \leavevmode\llap{\openautoquote\csq@eqgroup}%
    \csq@bqgroup
    \advance\csq@qlevel\@ne
    \csq@resetstyle
    \csq@init}
    
\renewcommand\mkblockquote[4]{%
    \leavevmode\llap{\openautoquote\csq@eqgroup}%
    \csq@bqgroup
    \advance\csq@qlevel\@ne
    \csq@resetstyle
    \csq@init
    #1#2#3\closeautoquote#4}
\makeatother

\renewcommand{\mkenddispquote}[2]{\closeautoquote\normalfont#1#2}

\begin{document}

\lipsum[1]

\begin{displayquote}[Blind Text]
    \lipsum[1]
\end{displayquote}

\blockquote{\lipsum[1]}

\lipsum[1]

\end{document}

rendered text

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .