如何获得直引号?

如何获得直引号?

如何在 TeX 中获得直引号,即"'?(不,\verb会更改字体,这是不可接受的。)

[编辑] 我忘了说我正在使用 XeLaTeX,这fontspec是必需的。前两个建议的答案确实有效,没有fontspec

答案1

最近几天,我在搜索相同问题的答案时发现了这篇文章。我也在使用 XeLaTeX,也需要fontspec,所以我理解你的痛苦。我尝试了各种各样的方法,这里就不一一列举了。

以下是我想到的解决方案:

正如您所发现的,该Mapping=tex-text选项会将直引号改为弯引号(无论如何)。正如您所看到的,删除它会导致任何地方都没有弯引号。这也不好。

TeXShop 中的标准 XeLaTeX 模板(我已经排除了 sans 和 mono 字体声明)具有:

\usepackage{fontspec,xltxtra,xunicode}
\defaultfontfeatures{Mapping=tex-text}
\setmainfont[Mapping=tex-text]{Hoefler Text}

我决定定义一种新字体,使用与罗马字体相同的字体,但是不是包括任何映射。

\newfontfamily{\S}{Hoefler Text}

最后一步,\defaultfontfeatures{Mapping=tex-text}必须删除或注释掉该行。如果不删除或注释掉,它会将映射添加到所有字体声明中。我想这是为了在有人忘记它时有所帮助,但在这种情况下,它阻碍了我们。由于\setromanfont上面已经声明了它的映射,因此将其作为默认功能删除不会改变正常输入的外观,让您可以访问花括号。

修改后的序言部分如下:

\usepackage{fontspec,xltxtra,xunicode}
%\defaultfontfeatures{Mapping=tex-text}
\setmainfont[Mapping=tex-text]{Hoefler Text}
\newfontfamily{\S}{Hoefler Text}

当您需要直引号时,请将它们放在自定义字体调用中。由于没有映射,您最终会得到它们。

The ``antique'' table is 5{\S '}6{\S "} long.

我设置了自定义命令以使写作更容易。

\newcommand{\inch}{{\S "}}
\newcommand{\feet}{{\S '}}

这使我可以写道:

The ``antique'' table is 5\feet 6\inch\ long.

希望这能有所帮助。我正在创建一个 100 多页的文档,经常需要使用弯引号和直引号。这是我尝试过的唯一有效方法。如果有更优雅的方法(在 XeLaTeX 中使用fontspec),我很乐意学习。我只使用 TeX/XeLaTeX 2-3 个月,所以我算是新手。

答案2

替代文本

使用\usepackage[T1]{fontenc}是@TH的想法。我只是添加了\usepackage{upquote}一个直引号使用\textquotesingle

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{upquote}

\begin{document}

\textquotesingle single straight quote\textquotesingle\ 
and "double straight quote"

\vspace{5mm}

`single curly quote' and ``double curly quote''
\end{document}

答案3

在此处输入图片描述

各种引号的 LaTeX 编码特定命令如下所列。第一组至少在 T1 编码中定义,第二组至少在 TS1 编码中定义。如果除了加载编码(通过\usepackage[TS1,T1]{fontenc}TS1 编码加载)之外\usepackage{textcomp},还声明了 TS1 编码的 TS1 引号,则这将成为默认编码,因此如果您\textquotesingle在未声明直引号的编码中使用,则 LaTeX 将仅针对此字符切换到 TS1 编码。

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage{textcomp}

\def\showq#1{\texttt{\string#1}&abc#1xyz\\}

\begin{document}


\begin{tabular}{ll}
\multicolumn{2}{c}{T1}\\
\showq\quotedblbase
\showq\quotesinglbase
\showq\textquotedblleft
\showq\textquotedblright
\showq\textquotedbl
\showq\textquoteleft
\showq\textquoteright
\multicolumn{2}{c}{TS1}\\
\showq\textquotestraightbase
\showq\textquotestraightdblbase
\showq\textquotesingle
\end{tabular}

\end{document}

即使您的文档编码是 T1,也建议使用\textquotedbl而不是简单地"获取直双引号。它们将产生相同的字符(并且"更容易输入),但\textquotedbl如果在可能设置为使用其他默认编码的其他上下文中重复使用,使用将使您的文本更易于使用。

答案4

我也有同样的问题;如何获得撇号 ( U+0027),也就是中性、垂直或直的单引号。我彻底搜索了一下,我发现的几乎所有“解决方案”似乎要么在 XeTeX 中不起作用,要么过于复杂,和/或对文档、字体等进行了额外的不必要的更改。

我已经发现一个解决方案与 XeTeX 配合得很好。

定义撇号:

\newcommand{\apostrophe}{\XeTeXglyph\XeTeXcharglyph"0027\relax}

用它!:

James\apostrophe{}, ‘wasn\apostrophe{}t’, it\apostrophe{}s, “\apostrophe{}tis”.

使用 XeTeX,其渲染效果应如下:

詹姆斯的“不是”而是“是”。

对于 LyX 用户,我可以确认此解决方案在 LyX 中也运行良好(已在版本 2 上测试)。确保已安装 XeTeX,并且工具重新配置如果您刚刚安装了 XeTeX,则可以使用 LyX。在文档设置字体, 查看 '使用非 TeX 字体(通过 XeTeX/LuaTeX)'。我定义撇号为文档设置LaTeX 序言.然后使用Ctrl+L并输入\apostrophe{}


顺便说一句,我最近才开始使用 XeTeX(我正在试用它,因为我使用了很多 Unicode!)。在切换之前,我使用的是\textquotesingle' ' 包中的 ' ' 命令upquote。切换到 XeTeX 后,它停止工作了。不过它的效果不是很好,因为撇号看起来又大又丑;这个 XeTeX 解决方案要好得多,绝对值得花时间研究一下!

相关内容