我知道Framed
用于在符号周围显示一个框架,那我如何在符号周围显示一个圆形呢?
我知道Framed
用于在符号周围显示一个框架,那我如何在符号周围显示一个圆形呢?
如果您不介意需要微调对齐参数,可以将空圆圈字符覆盖在符号上:
TraditionalForm @ Style[
Overlay[{x, Style[\[EmptyCircle], 24]}, Alignment -> {0.075, 0.16}]
, "DisplayFormula"
]
展示的字体大小和对齐参数适用于我的计算机上的字体,但您可能需要调整它们以在您的屏幕上获得良好的结果。并且为了获得良好的打印效果,您可能需要再次进行调整。以下的Manipulate
可以帮助您完成这个过程:
Manipulate[
TraditionalForm @ Style[
Overlay[
{Style[x, xSize], Style[\[EmptyCircle], circleSize]}
, Alignment -> {xAlign, yAlign}
]
, "DisplayFormula"
]
, {{xSize, 12}, 8, 40, 1, Appearance -> "Labeled"}
, {{circleSize, 24}, 8, 40, 1, Appearance -> "Labeled"}
, {{xAlign, 0.075}, -1, 1, Appearance -> "Labeled"}
, {{yAlign, 0.016}, -1, 1, Appearance -> "Labeled"}
]
这里是一种尝试创建环绕任意表达式的函数的方法。它相当笨拙,但目前我想不到更好的方法。
circled =
With[{m = Max@Rasterize[#,"RasterSize"]},
Framed[
Pane[#, {m, m}, Alignment -> Center],
RoundingRadius -> 1*^6]
] &;
circled[1/x + y + z]
1*^6
而不是10^6
有什么好处? - user6167361*^6
是我默认的“大值”,当我看到它时,通常知道它只是一个任意的“大”数。还有一件相关的事情:在极端情况下,使用 1*^x
比使用 10^x
少一次操作。例如:Timing[a = 1*^60000000;]
和 Timing[b = 10^60000000;]
。 - Mr.Wizardcircled["3((1/x+y+z)/h)\n2\nm\np"]
。 - Dr. belisariusFramed
可以使用选项 RoundingRadius
来设置圆角。
Framed[expr, RoundingRadius -> radius]
当 radius
值较小时,框架的角落只是稍微圆润一点,但当值较大时,框架会变成椭圆形或圆形。
cirBeli[x_] :=
TraditionalForm@
Style[Overlay[{#,
Style[\[EmptyCircle],
N@2 Norm[ImageDimensions[Rasterize[#]][[1 ;; 2]]]]},
Alignment -> Center], "DisplayFormula"] &@x
cirBeli[x]
cirBeli[Sin[z^2]/Exp[z] + Integrate[Sin[x] Cos[x] Sqrt[x], x]]
中,表达式不在圆的中心。 - Andrewf = Rasterize[#, "RasterSize"] &;
circledBeli[x_] := Framed[ x,
FrameMargins -> (Norm@f@x - Array[1 &, {2, 2}] f@x)/2,
RoundingRadius -> Norm@f@x];
circledBeli[Sin[z^2]/Exp[z] + Integrate[Sin[x] Cos[x] Sqrt[x], x]]
circledBeli["3((1/x+y+z)/h)\n2\nm\np"]
编辑
以下内容在使用TraditionalForm时效果更佳:
f = ImageDimensions[Rasterize[#]][[1 ;; 2]] &;
g = Reverse[ImageDimensions[Rasterize[Rotate[#, Pi/2]]][[1 ;; 2]]] &;
h = Max /@ Transpose@{f@#, g@#} &;
circledBeli[x_] :=
Framed[x, FrameMargins -> (Norm@h@x - Array[1 &, {2, 2}] h@x)/2,
RoundingRadius -> Norm@h@x];
t = TraditionalForm[Sin[z^2]/Exp[z] + Integrate[Sin[x] Cos[x] Sqrt[x], x]]
circledBeli[t]
TraditionalForm
中使用这个? - Andrew
Graphics
对象,您介意吗? - user616736