我知道Framed
用于显示符号周围的框架,如何在符号周围显示圆圈?
答案 0 :(得分:8)
如果您不介意对对齐参数进行微观管理,可以将空圆圈字符覆盖在符号上:
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"}
]
答案 1 :(得分:8)
这是尝试创建一个圈出任意表达式的函数。它相当笨拙,但我现在想不出更好的方法。
circled =
With[{m = Max@Rasterize[#,"RasterSize"]},
Framed[
Pane[#, {m, m}, Alignment -> Center],
RoundingRadius -> 1*^6]
] &;
circled[1/x + y + z]
答案 2 :(得分:6)
Framed
可以选择RoundingRadius
。
Framed[expr, RoundingRadius -> radius]
在radius
的较小值处,框架的角部略微呈圆形,但在较大的值处,框架变为椭圆形或圆形。
答案 3 :(得分:3)
与Reach相同的想法,但试图自动计算:
cirBeli[x_] :=
TraditionalForm@
Style[Overlay[{#,
Style[\[EmptyCircle],
N@2 Norm[ImageDimensions[Rasterize[#]][[1 ;; 2]]]]},
Alignment -> Center], "DisplayFormula"] &@x
cirBeli[x]
答案 4 :(得分:2)
f = 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]