据我所知,如果我想要一个正确的左双引号:
- 在所有非等宽字体中我必须执行“X
- 在所有等宽字体中我必须做“X
就我而言,这是一个问题,因为我有一个宏,它需要将一些文本作为参数,可能需要使用一种、另一种甚至两种字体进行排版。
是否有任何引号约定和等宽/普通字体的组合可以使左双引号在两种方式下都正确?
演示该问题的最小示例。
\documentclass{article}
\usepackage [autostyle, english = american]{csquotes}
\newcommand{\Foo}[1]{ % format the same argument in different fonts.
% monospaced look like garbage
\medbreak\begin{empty}\fontfamily{pcr}\selectfont#1\end{empty} Courier
% Okay, unless you really look
\medbreak\begin{empty}\fontfamily{ppl}\selectfont#1\end{empty} Palatino
% Easy to see issues.
\medbreak\begin{empty}\fontfamily{qag}\selectfont#1\end{empty} TeX Gyre Adventor
}
\begin{document}
\Foo{``X'' ``X" "X" \enquote{X}} % try different way to quote things.
\end{document}
我已经尝试过的方法
我所做的大部分搜索都只得到有关如何为非等宽字体获取正确的左双引号的结果。我找到了少量有关等宽字体中左双引号的结果,但没有找到同时处理这两种情况的结果。
我发现一个提示,安装自定义等宽字体可能会有所收获,但我需要一个尽可能独立的解决方案。(这pdflatex
已经破坏了密闭性,这让我很恼火,但我可以忍受。)
答案1
OT1 编码的等宽字体没有“双反引号”连字,因为在cmtt
字体中双开引号的位置用于不同的字形(反斜杠)。
添加\usepackage[T1]{fontenc}
;所有 T1 编码字体都应具有该连字符(如果您输入,还应具有无向双引号"
)。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage [autostyle, english = american]{csquotes}
\newcommand{\Foo}[1]{ % format the same argument in different fonts.
% monospaced look like garbage
\medbreak{\fontfamily{pcr}\selectfont#1} Courier
\medbreak{\fontfamily{cmtt}\selectfont#1} CMTT
% Okay, unless you really look
\medbreak{\fontfamily{ppl}\selectfont#1} Palatino
% Easy to see issues.
\medbreak{\fontfamily{qag}\selectfont#1} TeX Gyre Adventor
}
\begin{document}
\Foo{``X'' ``X" "X" \enquote{X}} % try different way to quote things.
\end{document}