我想重新定义quotation
或quote
环境,以便我有一个不同的演示风格,例如大引号或全部斜体、右对齐等。
我还想引用来源(真正的引用,或作者引用...)。
这就是我所拥有的:
\renewenvironment{quote} %[1]
{
{\rightmargin\leftmargin}
\relax
{\Large\textbf{``}}
}
{
{\Large\textbf{''}}
%\hfill\citeauthor{#1} \cite{#1}
}
我的问题:
{\rightmargin\leftmargin}
在小于全宽的范围内居中不起作用,我从原始quote
环境中复制了它。envquotation
. 使用list
环境来执行此操作,但这也会改变段落间距,而我不希望这样。定义我想要的宽度和我想要居中的位置的正确方法是什么?- 引用本身的注释部分不起作用,我想用它作为
\begin{quote}{someBibRef}Some bla bla bla.\end{quote}
参数被正确传递,我可以打印它,但我不能将它与引用命令一起使用。输出看起来像##1 [##1]
,错误日志显示Illegal parameter number in definition of \endquote }
- 我怎样才能
\citeauthor
显示作者的全名而不仅仅是姓氏? - 我希望这最后一部分出现在右边的新行中,但我还没有找到同时做到这一点的方法。
我正在使用biblatex
biber 作为后端。
答案1
这是一个quote
使用NewDocumentEnvironment
以下方法重新定义环境的解决方案:xparse
包裹。
\let\oldquote\quote
\let\endoldquote\endquote
\RenewDocumentEnvironment{quote}{m}{%
\oldquote
\itshape
\setlength{\rightmargin}{\leftmargin}
{\Large\textbf{``}}
}
{%
{\Large\textbf{''}}
\item[]\mbox{}\hfill\cite{#1}\citeauthor{#1}
\endoldquote
}
必须使用这个包,因为为什么环境的结束代码不能包含参数?,我们不能#1
在常规环境的末尾使用latex
。
请注意,我使用了环境的原始定义quote
,并添加了行
\setlength{\rightmargin}{\leftmargin}
它设置了边距(如您所说,quote
环境是根据列表定义的)。我还添加了
\item[]\mbox{}\hfill\cite{#1}\citeauthor{#1}
到环境的末尾,根据需要添加引用。如果您担心项目之间的分页符,则可能需要添加一些代码。
% arara: pdflatex
% arara: biber
% arara: pdflatex
% !arara: indent: {overwrite: yes}
\documentclass{article}
\usepackage{lipsum}
\usepackage{xparse}
\usepackage[backend=biber]{biblatex}
\usepackage[colorlinks=true,linkcolor=blue]{hyperref}
\addbibresource{mybib.bib}
\let\oldquote\quote
\let\endoldquote\endquote
\RenewDocumentEnvironment{quote}{m}{%
\oldquote
\itshape
\setlength{\rightmargin}{\leftmargin}
{\Large\textbf{``}}
}
{%
{\Large\textbf{''}}
\item[]\mbox{}\hfill\cite{#1}\citeauthor{#1}
\endoldquote
}
\begin{document}
\lipsum[1]
\begin{quote}{kn:gnus}
\lipsum[1]
finishing text
\end{quote}
Now is the time.
\nocite{*}
\printbibliography
\end{document}
mybib.bib
@online{kn:gnus,
author= {{David Arnold}},
title= {Writing Scientific Papers in \LaTeX},
url = {http://msemac.redwoods.edu/~darnold/math55/WritingScientificPapers/project_latex.pdf}
}
答案2
我不鼓励你重新定义quote
环境,特别是如果你改变它的语法以想要一个强制参数。
因为这似乎是用于特定目的,所以最好定义一个新的环境。
\begin{filecontents*}{\jobname.bib}
@online{kn:gnus,
author= {{David Arnold}},
title= {Writing Scientific Papers in \LaTeX},
url = {http://msemac.redwoods.edu/~darnold/math55/WritingScientificPapers/project_latex.pdf}
}
\end{filecontents*}
\documentclass{article}
\usepackage{xparse}
\usepackage[backend=biber]{biblatex}
\usepackage{quoting}
\usepackage{kantlipsum}
\usepackage[colorlinks=true,linkcolor=blue]{hyperref}
\addbibresource{\jobname.bib}
\NewDocumentEnvironment{citequote}{m}
{%
\begin{quoting}[indentfirst=false,font=itshape]
\bigquotes{r}{``}\ignorespaces
}
{%
\unskip\bigquotes{l}{''}%
\item\relax\hspace*{\fill}\citeauthor{#1}\ \textup{\cite{#1}}%
\end{quoting}
}
\newcommand{\bigquotes}[2]{%
\makebox[0pt][#1]{%
\raisebox{\dimexpr\fontcharht\font`A-\height}{\Large\bfseries#2}%
}%
}
\begin{document}
\kant[1]
\begin{citequote}{kn:gnus}
\kant*[2]
And so it ends.
\end{citequote}
Now is the time.
\nocite{*}
\printbibliography
\end{document}
(我厚颜无耻地使用了 cmhughes 的参考和结构。)
quoting
同名包提供的环境可以轻松定制。
还请注意,我改变了大引文的高度;如果保持自然状态,结尾的引文会使引用前最后两行之间的行距过大。它们都是“悬空”的,只需删除部分即可\makebox[0pt]
避免悬空。