在打字机字体文本中,是否需要一个更像楔形的符号来代替插入符号?

在打字机字体文本中,是否需要一个更像楔形的符号来代替插入符号?

我正在尝试排版一些涉及插入符号(表示幂)的计算机代码;例如

\verb!x^3+x^2-1!

问题在于,生成的插入符号太扁平了。我可以使用楔形来代替:

\newcommand{\pwr}{${}^\wedge}$}
\texttt{x\pwr 3+x\pwr 2-1}

但这里的楔形太尖,而且粗细也不适合打字机字体。我想知道的是:是否有一个符号,形状介于插入符号和楔形之间,并且粗细与打字机插入符号相同(因此可以在 内使用\texttt{})?

我尝试过\verb!^!用 来替换{{}\large\textasciicircum},这种方法可行,但显然不是最佳解决方案。

答案1

护理符号的外观取决于所用的字体。例如,CourierTeX Gyre Cursor具有介于 Computer Modern 字体的插入符号和解决方案之间的符号\wedge

下面的示例使用\lstinline而不是\verb,因为符号可以更容易地通过选项 进行替换literate

\documentclass{article}
\usepackage{listings}
\newcommand*{\caret}{%
  \begingroup
    \fontencoding{T1}%
    \fontfamily{qcr}% TeX Gyre Cursor
    %\fontfamily{pcr}% Courier
    \selectfont
    \string^%
  \endgroup
}
\lstdefinestyle{caret}{
  basicstyle=\ttfamily,
  literate={^}{\caret}{1},
}
\newcommand*{\lstverb}{\lstinline[style=caret]}

\begin{document}
\begin{tabular}{ll}
\verb|\verb|: &
  \verb|x^3+x^2-1| \\
\verb|\wedge|: &
  \texttt{x$^\wedge$3+x$^\wedge$2-1} \\
\verb|\lstinline| + \verb|\caret|: &
  \lstverb|x^3+x^2-1| \\
\end{tabular}
\end{document}

结果

答案2

不可否认,在模式中自动使用不同符号的尝试很复杂verbatim;我在“粗体非扩展字体”中使用垂直缩放的抑扬符。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\newcommand\scalecircum{%
  \leavevmode\smash{%
    \ooalign{%
      \hidewidth
      \raisebox{-.75ex}{%
        \scalebox{1}[1.5]{\normalfont\fontseries{b}\selectfont\char`\^}%
      }%
      \hidewidth\cr
      \hphantom{n}\cr
    }%
  }%
}
\makeatletter
\def\activate@scalecircum{%
  \begingroup\lccode`\~=`\^
  \lowercase{\endgroup\def~}{\scalecircum}%
  \catcode`\^=\active}
\expandafter\def\expandafter\@noligs\expandafter{\@noligs\activate@scalecircum}
\makeatother

\begin{document}
\verb|x^2+y^2| --- \texttt{x\textasciicircum2+y\textasciicircum2}

\verb|x_1+y_1|
\end{document}

在此处输入图片描述

您可以将结果与通常的结果(右边第一行)进行比较,并看到符号占据了正确的空间量。

答案3

您可以使用该scalerel包将楔形符号拉伸至所需高度。在下面的示例中,我首先展示了您的两个原始尝试,然后展示了楔形,其高度为原始高度的 60%。显然,可以使用任何分数设置。

\documentclass{article}
\usepackage{scalerel}
\begin{document}

\verb!x^3+x^2-1!

\newcommand{\pwr}{${{}^\wedge}$}
\texttt{x\pwr 3+x\pwr 2-1}

\renewcommand{\pwr}{${{}^{\vstretch{.6}{\wedge}}}$}
\texttt{x\pwr 3+x\pwr 2-1}

\end{document}

在此处输入图片描述

答案4

谢谢大家。最后我用 tikz 拼凑了一个我自己的角色:

\usepackage{tikz}
\newcommand{\crt}{\tikz[baseline=0ex]{%
    \draw[color=white] (0,0) rectangle (1.3ex,1.5ex);%
    \draw[line width=1pt,line cap=round] (0.15ex,1.2ex) -- (0.65ex,1.7ex) -- (1.15ex,1.2ex);}}

然后在文档正文中:

\texttt{x\crt 3+x\crt 2-1}

显然,我的临时解决方案不太便携;我需要更聪明地让 TiKZ 使用当前字符的尺寸,这样它就始终是正确的尺寸。

在此处输入图片描述

相关内容