我想知道为什么\twoheadleftarrow
下面代码中的看起来与如此不同(更糟糕)\leftarrow
,虽然根据LaTeX
符号列表,箭头应该具有相同的高度等。
\documentclass{article}
\usepackage{amssymb}
\usepackage{bm}
\usepackage{Sweave}
\usepackage{listings}
\lstset{
language=R,
basicstyle=\ttfamily,
literate={<-}{{$\bm\leftarrow$}}2{<<-}{{$\bm\twoheadleftarrow$}}2
}
% undefine Sinput, and Soutput (due to missing 'lstrenewenvironment')
\expandafter\let\csname Sinput\endcsname\relax
\expandafter\let\csname endSinput\endcsname\relax
\expandafter\let\csname Soutput\endcsname\relax
\expandafter\let\csname endSoutput\endcsname\relax
\lstnewenvironment{Sinput}[1][]{#1}{}
\begin{document}
<<foo>>=
x <- 1
x <<- 1
@
\end{document}
答案1
您的最小示例本来可以更简单:-)
查看日志
\documentclass{article}
\usepackage{amssymb}
\begin{document}
\showoutput
$ a \leftarrow b $
$ x \mathrel{\leftarrow\mkern-14mu\leftarrow} y $
$c \twoheadleftarrow d $
\end{document}
您会看到单箭头来自原始 CM 字体,但双箭头来自 AMS 字体,并且箭头并不真正匹配。
您的选择是寻找具有匹配箭头的字体集,或者通过重复打印单箭头来伪造双箭头,如我的示例所示。一旦箭头匹配bm
,sweave
包就可以完成它们的工作,但如果基本的底层箭头定义不匹配,bm
就sweave
无法使它们匹配。