如何修复引号后的逗号/冒号的字距?

如何修复引号后的逗号/冒号的字距?

如何修复引号后的逗号/冒号的字距?

您好,我是 Latex 的新手,我正在尝试减少右引号和冒号/逗号之间的空格,但通过序言中的一般方法,而不是通过手动\kern命令。

我的文档实际上是葡萄牙语的,在葡萄牙语中,标点符号通常保留在引号后面(与英语不同)。此外,它是用 Markdown 编写的,并由 Pandoc 翻译成 Latex;因此它后面有很多\enquote命令\autocite,后面可能跟着冒号/逗号。由于我使用的是 biblatex 的脚注样式,这些情况也存在问题。

在下一个示例中,我当前的情况在第 1 行,但希望它看起来更像第 2 行或第 3 行。

\documentclass{article}
\usepackage[autocite=footnote]{biblatex}
\begin{document}
1) \enquote{something}\autocite{key}, or \enquote{something}.
2) \enquote{something}\kern-.3em,\autocite{key} or \enquote{something}\kern-.3em.
3) \enquote{something\makebox[0pt][l]{,}}\autocite{key} or \enquote{something\makebox[0pt][l]{.}}
\end{document}

生成的图像

由于 Pandoc 用命令替换了我源文件中的所有引号\enquote,所以也许对它进行修补就可以了(但我不知道它是否可以处理插入的\autocite)。

我正在使用 pdflatex 作为处理器。

答案1

在这个问题中它展示了 xetex 和 luatex 如何自动调整字体字距。我没有测试 xetex 的方法,但是这个 luatex 代码非常有效:

\directlua{
local function kern_fix(fontdata)
 local ch = fontdata.characters[8221]
 ch.kerns = ch.kerns or {}
 ch.kerns[44] = -200000
 ch.kerns[46] = -200000
end
luatexbase.add_to_callback("luaotfload.patch_font", kern_fix, "kern_fix")
}

但由于我想继续使用 pdflatex,所以我当前的解决方案是使用 perl 脚本。这是我当前的 makefile:

define PATCH
#remove italics in titles
if($$_ =~ /^#/) { $$_ =~ s/\*//g; }
#switch puncts and cites, but not inside footnotes
if($$_ !~ /^\[\^/) { $$_ =~ s/\s*(\[[^[^]*@[^[^]*\])([:punct:])/\2\1/g; }
#set old style numbers
$$_ =~ s/(\d+)/\\oldstylenums{\1}/g;
#insert kern between quotes and commas/colons
$$_ =~ s/’\s*([.,])/’\\kern-.15em\1/g;
$$_ =~ s/”\s*([.,])/”\\kern-.25em\1/g;
print $$_;
endef
export PATCH

all: neumann.pdf

view: neumann.pdf
    open neumann.pdf

clean:
    rm -f neumann.{aux,bbl,bcf,blg,fls,fdb*,log,toc,out,pdf,dvi,run*,syn*,tex}

neumann.pdf: neumann.tex neumann.bib
    latexmk -quiet -pdf neumann

neumann.tex: template.tex neumann.md
    perl -ne "$$PATCH" neumann.md | pandoc --template=template.tex --bibliography=neumann.bib --biblatex -o neumann.tex

相关内容