如何突出参考书目的左侧?

如何突出参考书目的左侧?

在某些情况下,启用突出功能的书目文本排版非常好,尤其是当使用很多行以斜体开头的书目样式时。但是,典型的 biblatex 生成的书目的左侧不会突出。MWE:

\documentclass[12pt]{article}
\usepackage[style=authoryear]{biblatex}
\usepackage[factor=6000]{microtype}
\usepackage{showframe}
\renewcommand*\ShowFrameLinethickness{.25pt}
\renewcommand*\ShowFrameColor{\color{green}}
\begin{filecontents}{\jobname.bib}
@BOOK{book1,
    AUTHOR = {\char"200B Author, A.},
    TITLE = {Title},
    LOCATION = {Location},
    YEAR = {2017}}
@BOOK{book2,
    AUTHOR = {Author, B.},
    TITLE = {Title},
    LOCATION = {Location},
    YEAR = {2017}}
\end{filecontents}
\addbibresource{\jobname.bib}
\renewcommand{\section}[2]{}
\begin{document}
\noindent Author\par
\nocite{book1,book2}
\printbibliography
\end{document}

这使:

在此处输入图片描述

快速浏览一下,biblatex.sty发现\def\blx@bibitem在第 7746 行,使用默认的 bibenvironment

\defbibenvironment{bibliography}
  {\list{}{%
     \leftmargin\bibhang
     \itemindent-\leftmargin
     \itemsep\bibitemsep
     \parsep\bibparsep}}
  {\endlist}
  {\item}

创建一个\list并将一个放在\item每行的开头。当然,后面的任何字符\item都不会突出到左边。

pdfTeX 手册(第 34 页)指出:

如果您想要突出字符之外的某些项目(例如 \hbox ),您可以通过在该项目中填充不可见的零宽度字符来实现突出效果。

但是,我并不想突出\items,而是希望所有字符都根据各自的突出值以不同的方式突出。

因此,对于任何切实可行的解决办法我将不胜感激。

答案1

\item正如我在评论中提到的那样,使用\protrudeleft命令描述后可以得到正确的突出Microtype 和 quote 环境导致首行缩进不同

但在参考书目这样的自动化环境中使用它相当困难。首先,该命令至少需要第一个字符作为参数,因此使用 pdflatex 和 utf8 时,类似的东西\protrudeleft Ä将无法工作,因为如果只使用 Ä 的前半部分作为参数,则需要括号\protrudeleft{Ä}- 使用 lualatex 或 xelatex 会更容易,但即使在那里,也不能确定第一个输入标记是否真的是字符。但除此之外:biblatex 在条目开头做了这么多事情,因此很难(甚至不可能)注入如此低级的命令。

一个更简单的替代方法是尽量避免使用参考书目列表。这种方法效果很好(标题中 T 的缩进是由于较大的微类型设置):

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[style=authoryear]{biblatex}
\usepackage[factor=6000]{microtype}
\usepackage{showframe,xpatch}
\renewcommand*\ShowFrameLinethickness{.25pt}
\renewcommand*\ShowFrameColor{\color{green}}

\addbibresource{test.bib}
\renewcommand{\section}[2]{}


\defbibenvironment{bibliography}
  {\parindent=0pt 
   \bibitemsep=1ex
   \endgraf}
  {\endgraf}
  {\endgraf\vspace{\bibitemsep} \hangindent=\bibhang \hangafter=1}

\xapptocmd\finentrypunct{\par}{}{\fail} %the paragraph musst be closed before the \endgroup
\textwidth=3cm  
\begin{document}

\noindent Author\par
\noindent Äuthor\par

\nocite{book1,book2}

\printbibliography
\end{document}

在此处输入图片描述

相关内容