是否有表示“变形”的“镜头支架”的 LaTeX 符号,如第 4 页所述“用香蕉、镜头、信封和铁丝网进行函数式编程?
该stmaryrd
包中有表示“香蕉括号”(变形)的符号:(\llparenthesis
,\rrparenthesis
)和“信封括号”(质变)的符号(\llbracket
,\rrbracket
)。
但是,我找不到任何有关变形的东西。
答案1
论文中使用了方括号和圆括号,效果比较差。
这是一个更好的。
\documentclass{article}
\usepackage{amsmath}
\usepackage{pict2e}
\newcommand{\lbparen}{%
\mathopen{%
\sbox0{$()$}%
\setlength{\unitlength}{\dimexpr\ht0+\dp0}%
\raisebox{-\dp0}{%
\begin{picture}(.32,1)
\linethickness{\fontdimen8\textfont3}
\roundcap
\put(0,0){\raisebox{\depth}{$($}}
\polyline(0.32,0)(0,0)(0,1)(0.32,1)
\end{picture}%
}%
}%
}
\newcommand{\rbparen}{%
\mathclose{%
\sbox0{$()$}%
\setlength{\unitlength}{\dimexpr\ht0+\dp0}%
\raisebox{-\dp0}{%
\begin{picture}(.32,1)
\linethickness{\fontdimen8\textfont3}
\roundcap
\put(-0.08,0){\raisebox{\depth}{$)$}}
\polyline(0,0)(0.32,0)(0.32,1)(0,1)
\end{picture}%
}%
}%
}
\begin{document}
$\lbparen g,p\rbparen$
\end{document}
如果需要使用Euler字体,则需要更改一些值。
\documentclass{article}
\usepackage{amsmath}
\usepackage{eulervm}
\usepackage{pict2e}
\newcommand{\lbparen}{%
\mathopen{%
\sbox0{$()$}%
\setlength{\unitlength}{\dimexpr\ht0+\dp0}%
\raisebox{-\dp0}{%
\begin{picture}(.3,1)
\linethickness{\fontdimen8\textfont3}
\roundcap
\put(0,0){\raisebox{\depth}{$($}}
\polyline(0.3,0.07)(0,0.07)(0,0.98)(0.3,0.98)
\end{picture}%
}%
}%
}
\newcommand{\rbparen}{%
\mathclose{%
\sbox0{$()$}%
\setlength{\unitlength}{\dimexpr\ht0+\dp0}%
\raisebox{-\dp0}{%
\begin{picture}(.3,1)
\linethickness{\fontdimen8\textfont3}
\roundcap
\put(-0.08,0){\raisebox{\depth}{$)$}}
\polyline(0,0.07)(0.3,0.07)(0.3,0.98)(0,0.98)
\end{picture}%
}%
}%
}
\begin{document}
$\lbparen g,p\rbparen$
\end{document}
答案2
不需要 LaTeX 图片环境的解决方案在这里。仅使用\vrule
和\hrule
原语。但此解决方案不关心脚本和脚本脚本大小。但 egreg 的解决方案也不关心它。
\def\lbparen{\mathopen{\vrule \lower.249em\vbox to1em{%
\hrule height.2pt width.3em\vss \hrule height.2pt}%
\kern-.32em(}}
\def\rbparen{\mathclose{)\kern-.32em\lower.249em\vbox to1em{%
\hrule height.2pt width.3em\vss \hrule height.2pt}%
\vrule}}
$\lbparen g, p\rbparen$
\bye