嘿所以我知道由于Julia one中的Unicode支持,可以通过键入a\_1<TAB>
来编写带有下标1的字母a。现在,如果我想做以下事情,该怎么办?
for i in [1 2 3]
println("a\_i")
end
并将输出写为
a₁
a₂
a₃
如果不自己写下所有可能的下标,我该如何解决这个问题?
答案 0 :(得分:8)
你可以这样做(至少在版本0.6中):
ltx = Base.REPLCompletions.latex_symbols
for i in 1:3
println("a$(ltx["\\_$i"])")
end
答案 1 :(得分:1)
BogumiłKamiński的答案似乎是最好的,但我需要颠倒顺序以获得两位数字的正确字符串:
subscript(i::Integer) = i<0 ? error("$i is negative") : join('₀'+d for d in reverse(digits(i)))
for i=7:13 println("a"*subscript(i)) end
答案 2 :(得分:0)
在这里以其他答案为基础,我编写了一组函数,以允许使用负数并处理更复杂的上标情况。
function subscriptnumber(i::Int)
if i < 0
c = [Char(0x208B)]
else
c = []
end
for d in reverse(digits(abs(i)))
push!(c, Char(0x2080+d))
end
return join(c)
end
function superscriptnumber(i::Int)
if i < 0
c = [Char(0x207B)]
else
c = []
end
for d in reverse(digits(abs(i)))
if d == 0 push!(c, Char(0x2070)) end
if d == 1 push!(c, Char(0x00B9)) end
if d == 2 push!(c, Char(0x00B2)) end
if d == 3 push!(c, Char(0x00B3)) end
if d > 3 push!(c, Char(0x2070+d)) end
end
return join(c)
end
julia> for i in [1 -2 3]
println("a"*superscriptnumber(i))
println("a"*subscriptnumber(i))
end
a¹
a₁
a⁻²
a₋₂
a³
a₃