我有一些 C 源代码,想以^
源代码中通常显示的方式显示脱字符或插入符号 ( )——全尺寸字符。源代码将以打字机字体显示,我希望该字符与所有其他字符具有相同(即固定)的宽度。
我尝试过\texttt{}
但效果不理想的方法(都在里面):
\textasciicircum
发出小而高的抑扬音\char`\^ 相同
\verb|^|
相同的\wedge
在数学模式下产生的符号太大太宽,影响后续列的对齐
我还想显示一个全尺寸波浪符号 (~
,尽管我发现它已经被打死了这里。我真的希望同样的恶作剧不会出现在抑扬符上,但无论如何,确定一下还是好的!
答案1
正如 Will Robertson 所说,插入符号的渲染取决于字体。这里我给出三个例子:
- OT1 编码的计算机现代打字机
- 采用 T1 编码的计算机现代打字机
- 因科索拉塔
在这三个字符中,第一个插入符号用 表示\textasciicircum
,第二个插入符号用 表示\^{}
。第一行中两个插入符号相同,第二行中第一个插入符号稍大且略低;\verb
如果默认编码为 T1,则这是 使用的符号。
答案2
我通常使用这样的东西:
\texttt{\char`\^}
当然是在适当的宏内。这是否看起来可以接受,在一定程度上取决于您使用的等宽字体。
答案3
我只是对这两个角色做了一点研究(在我对我需要逃跑感到震惊之后^
,虽然记录,到目前为止我还没有需要过),我发现切换字体看起来是一个很好的解决方案。
对于衬线字体(默认/罗马字体),我只查看了默认的 cmr,发现波浪号和插入符号都很丑陋,但可以使用。(我处理的大多数文档的正文都设置为无衬线字体……但这不是我决定的。)
对于无衬线字体,我查看了默认的 cmss(虽然不好看,但也可以用),pxss(看起来很完美;这是来自pxfonts
包的,但我推荐反对使用它,并赞成只添加\renewcommand{\sfdefault}{pxss}%
到您的文档中)。我还研究了非免费字体 museo(通过.ttf
)和 pfr(通过1型胶水);两者都很好,但是不如 pxss 那么好。
对于电传字体,我查看了 cmtt(默认,极其丑陋)和 inconsolata(完美;这个字体是我的最喜欢的自从我发现用斜线 0 来“正确”地\usepackage[varqu,varl]{inconsolata}%
激活它以来)。
具体来说,为了回答这个问题,我研究了 pxfont 的罗马风格是否与无衬线风格一样好(是的,它是)。
对于所有字体,我都查看了和\textasciitilde
,但“动词”字体总是较差,所以我现在使用库存和宏来引用这些字符。\textasciicircum
\verb|X|
\textasciitilde
\textasciicircum
因此,我建议您在文档序言中添加以下内容……
\renewcommand{\rmdefault}{pxr}%
\renewcommand{\sfdefault}{pxss}%
\usepackage[varqu,varl]{inconsolata}%
…然后根据你的需要使用这三种字体中的任意一种。(不过,如果你不想切换字体,我完全理解(.oO(除了避免使用 Inconsolata,我无法理解)☻☺),然后参考问题的其他答案。)