如何在 C Sharp(C#)中创建正确的井号

如何在 C Sharp(C#)中创建正确的井号

我想让它C#在我的书中看起来不错,但需要以下内容:

C\#它看起来像这样:

在此处输入图片描述

实际看起来应该更像这样:

在此处输入图片描述

对于第二个,我使用了逐字逐句,但我不想这样,并且我也在各处使用了如下的宏,因此应该很容易替换:

\def\Csharp{C\#}

关于如何使其看起来正确,有什么建议吗?

编辑

我正在写一本编程书,在 C# 语言规范中,它看起来像这样:

在此处输入图片描述

答案1

由于 Computer Modern Roman 没有合适的井号,我们需要另寻他处。我尝试了几种流行的字体,发现 Liberation Serif 的井号并不突出,笔刷宽度大致相同,而且不太宽。

结果

不幸的是,由于 Liberation Serif 是一种 TrueType 字体,因此无法与 pdfTeX 一起使用。以下是将其与 XeTeX/LuaTeX 一起使用的代码。

\documentclass{article}

\usepackage{fontspec}

\newfontface\lserif{Liberation Serif}

\newcommand{\Csh}{C{\lserif\#}}

\begin{document}

Some text \Csh{} some text.

\end{document}

pdfTeX 的解决方法

使用 XeTeX/LuaTeX 处理此文件并将结果保存为hash-symbol.pdf

\documentclass[border=0pt]{standalone}
\usepackage{fontspec}
\begin{document}% I get extra space without this comment
\fontspec{Liberation Serif}\#
\end{document}

然后使用此代码将符号包含在 pdfTeX 中:

\documentclass{article}

\usepackage{graphicx}

\newcommand{\Csh}{C\includegraphics{hash-symbol}}

\begin{document}

Some text \Csh{} some text.

\end{document}

在此处输入图片描述

符号的定位可能略有偏差,请使用\kern\raisebox进行微调。另请注意,这仅适用于一种字体大小;要解决这个问题,\scalebox可能有用(手动的)。

答案2

就像 egreg 早些时候在他的评论中所说的那样,使用\newcommand{\textsharp}{$\sharp$}

由于 ASCII 不包含升号符号,因此出于必要而使用了井号符号,但正如语言名称所示,它旨在用作升号音符。

附录:您可以始终使用$^\sharp$它来上标。

在此处输入图片描述

答案3

你可以这样做

\documentclass{article}
\usepackage{graphicx}
\newcommand{\Csharp}{%
  {\settoheight{\dimen0}{C}C\kern-.05em \resizebox{!}{\dimen0}{\raisebox{\depth}{\#}}}}
\begin{document}
\Huge\Csharp
\end{document}

结果如下;第二行有\fontseries{b}\selectfont\#,但是笔画似乎太重了:

在此处输入图片描述

如果你喜欢使用音乐升号符号,那么

\newcommand{\Csharp}{%
  {\settoheight{\dimen0}{C}C\kern-.05em \resizebox{!}{\dimen0}{\raisebox{\depth}{$\sharp$}}}}

在此处输入图片描述

答案4

如果你使用特克斯并且你的字体支持它,你可以将 Unicode 字符直接放入源文件中,或者使用\symbol{"266F}。对于以下字体Linux 浪子,这看起来比好看得多\sharp,后者似乎使用原始 TeX,而不是寻找合适的尖锐字符:

使用 XeTeX 渲染 C# 的不同方法的屏幕截图

相关内容