我正在尝试排版一些涉及插入符号(表示幂)的计算机代码;例如
\verb!x^3+x^2-1!
问题在于,生成的插入符号太扁平了。我可以使用楔形来代替:
\newcommand{\pwr}{${}^\wedge}$}
\texttt{x\pwr 3+x\pwr 2-1}
但这里的楔形太尖,而且粗细也不适合打字机字体。我想知道的是:是否有一个符号,形状介于插入符号和楔形之间,并且粗细与打字机插入符号相同(因此可以在 内使用\texttt{}
)?
我尝试过\verb!^!
用 来替换{{}\large\textasciicircum}
,这种方法可行,但显然不是最佳解决方案。
答案1
护理符号的外观取决于所用的字体。例如,Courier
或TeX 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 使用当前字符的尺寸,这样它就始终是正确的尺寸。