Unicode 输入表
在 Julia REPL 或其它编辑器中,可以像输入 LaTeX 符号一样,用 tab 补全下表列出的 Unicode 字符。在 REPL 中,可以先按 ? 进入帮助模式,然后将 Unicode 字符复制粘贴进去,一般在文档开头就会写输入方式。
!!! warning
此表第二列可能会缺失一些字符,对某些字符的显示效果也可能会与在 Julia REPL 中不一致。如果发生了这种状况,强烈建议用户检查一下浏览器或 REPL 的字体设置,目前已知很多字体都有显示问题。
## Generate a table containing all LaTeX and Emoji tab completions available in the REPL.#import REPL, Markdownconst NBSP = '\u00A0'function tab_completions(symbols...)completions = Dict{String, Vector{String}}()for each in symbols, (k, v) in eachcompletions[v] = push!(get!(completions, v, String[]), k)endreturn completionsendfunction unicode_data()file = normpath(Sys.BINDIR, "..", "UnicodeData.txt")names = Dict{UInt32, String}()open(file) do unidatafor line in readlines(unidata)id, name, desc = split(line, ";")[[1, 2, 11]]codepoint = parse(UInt32, "0x$id")names[codepoint] = titlecase(lowercase(name == "" ? desc : desc == "" ? name : "$name / $desc"))endendreturn namesend# Surround combining characters with no-break spaces (i.e '\u00A0'). Follows the same format# for how unicode is displayed on the unicode.org website:# http://unicode.org/cldr/utility/character.jsp?a=0300function fix_combining_chars(char)cat = Base.Unicode.category_code(char)return cat == 6 || cat == 8 ? "$NBSP$char$NBSP" : "$char"endfunction table_entries(completions, unicode_dict)entries = [["Code point(s)", "Character(s)","Tab completion sequence(s)", "Unicode name(s)"]]for (chars, inputs) in sort!(collect(completions), by = first)code_points, unicode_names, characters = String[], String[], String[]for char in charspush!(code_points, "U+$(uppercase(string(UInt32(char), base = 16, pad = 5)))")push!(unicode_names, get(unicode_dict, UInt32(char), "(No Unicode name)"))push!(characters, isempty(characters) ? fix_combining_chars(char) : "$char")endpush!(entries, [join(code_points, " + "), join(characters),join(inputs, ", "), join(unicode_names, " + ")])endreturn Markdown.Table(entries, [:l, :l, :l, :l])endtable_entries(tab_completions(REPL.REPLCompletions.latex_symbols,REPL.REPLCompletions.emoji_symbols),unicode_data())
