在某些情况下,启用突出功能的书目文本排版非常好,尤其是当使用很多行以斜体开头的书目样式时。但是,典型的 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 ),您可以通过在该项目中填充不可见的零宽度字符来实现突出效果。
但是,我并不想突出\item
s,而是希望所有字符都根据各自的突出值以不同的方式突出。
因此,对于任何切实可行的解决办法我将不胜感激。
答案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}