如何告诉 csquotes 将 blockquote 中的引号设为斜体?

如何告诉 csquotes 将 blockquote 中的引号设为斜体?

我在我的论文中使用csquotes添加引文,我需要将文内引文(短引文)和段落引文(分成缩进段落的长引文)斜体化(变为草书)。

我已经尝试过这里描述的解决方案:如何告诉 csquotes 将引号变为斜体?

但是对于第一个解决方案,我无法弄清楚如何在不切换到法语 babel(会将我的所有标题更改为法语)的情况下使其工作,并且它不会将段落引用斜体化。

第二种解决方案适用于短引文,但我不知道如何使其适应\blockquotes格式:\blockquote[citation]{quote},因为它会将引用斜体化而不是引文。

答案1

对于块引用,你需要大致如下:

\patchcmd{\csq@bquote@i}{{#6}}{{\emph{#6}}}{}{}

完整 MWE:

\documentclass{article}
\usepackage{csquotes}
\usepackage[american]{babel}

\makeatletter
\patchcmd{\csq@bquote@i}{{#6}}{{\emph{#6}}}{}{}
\makeatother

%%% if you want italic quotation marks as well
%\DeclareQuoteStyle{american}[][]
%   {{\itshape\textquotedblleft}}[]{{\itshape\textquotedblright}}
%   [0sp]
%   {{\itshape\textquoteleft}}[]{{\itshape\textquoteright}}

\begin{document}

hello all

\blockquote[example]{some \enquote{text} here}

and goodbye

\end{document}

答案2

对于 blockquotes,您可以使用\SetBlockEnvironmentcsquotes 包中的命令。首先必须定义一个斜体引号环境,然后告诉 csquotes 将其用于块引用。

对于内联引号,您可以使用 定义自己的引号样式\DeclarQuoteStyle。它采用可选参数outer init和,inner init您可以在其中分别提供在开始外部和内部引号之前要执行的命令。然后使用 来使用您的自定义样式\setquotestyle

以下示例改编自回答:

\documentclass[12pt]{article}
\usepackage{csquotes}

% Make block quotes italic
\newenvironment{italicquote}{\quote\itshape}{\endquote}
\SetBlockEnvironment{italicquote}

% Make inline quotes italic, too
\DeclareQuoteStyle{italic}[\itshape][\itshape]
{\textquotedblleft}{\textquotedblright}
{\textquoteleft}{\textquoteright}
\setquotestyle{italic}

\usepackage{lipsum} % for dummy lorem ipsum text

\begin{document}
    % Test inline quotes
    This is a test, what happens if I \enquote{enquote some text \enquote{and use an inner quote}}?
    
    \lipsum[1]

    % Test display block quotes
    \begin{displayquote}
        \lipsum[2]
    \end{displayquote}
    \lipsum[3]

    % Test a block quote with citation
    \blockquote[citation]{This is a block quote. It is italicized, but the citation is not.}

\end{document}

相关内容