日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

latex 如何添加圆圈数字?

發布時間:2023/12/9 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 latex 如何添加圆圈数字? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

眾所周知,

實際上,加圈并不是一個平凡的變換,它會涉及到圈內字符形狀的微調,而這是幾乎無法在?


?

傳統方案

pifont?宏包提供了一系列雜錦符號(dingbats),其中就有帶圈數字。pifont?屬于?psnfss?宏集,它封裝了一系列 PostScript 字體,包含著名的 Helvetica、Times、Courier 等。pifont?使用的是?Zapf Dingbats?字體。

使用?\ding{<number>}?可以很方便地使用帶圈數字(共有四種),當然也有其他符號。具體數字可參見下圖:

在主流的?


?

Unicode

數字 0–50 的帶圈版本都分配了對應的 Unicode 碼位,因而在現代?

?
24EA2460246124622463246424652466246724682469
???????????
?246A246B246C246D246E246F2470247124722473
???????????
?325132523253325432553256325732583259325A
???????????
?325B325C325D325E325F32B132B232B332B432B5
???????????
?32B632B732B832B932BA32BB32BC32BD32BE32BF

Zapf Dingbats 中的其他幾種樣式也分配有碼位:

  • 反白(negative circled digits)

    ???????????
    24FF2776277727782779277A277B277C277D277E277F
    ???????????
    ?24EB24EC24ED24EE24EF24F024F124F224F324F4
  • 無襯線(circled sans-serif digits)

    🄋??????????
    1F10B2780278127822783278427852786278727882789
  • 無襯線反白(negative circled sans-serif digits)

    🄌??????????
    1F10C278A278B278C278D278E278F2790279127922793

此外,還額外增加了一些樣式:

  • 雙線(double circled digits)

    ??????????
    24F524F624F724F824F924FA24FB24FC24FD24FE
  • 加框(circled numbers on black square)

    ????????
    32483249324A324B324C324D324E324F
  • 帶圓括號(parenthesized digits)

    247424752476247724782479247A247B247C247D
    247E247F24802481248224832484248524862487
  • 帶點(digits with full stop)

    🄀
    1F10024882489248A248B248C248D248E248F24902491
    ?
    ?24922493249424952496249724982499249A249B
  • 帶逗號(digits with comma)

    🄁🄂🄃🄄🄅🄆🄇🄈🄉🄊
    1F1011F1021F1031F1041F1051F1061F1071F1081F1091F10A
  • 這些姑且也算上吧:

    3220322132223223322432253226322732283229
    3280328132823283328432853286328732883289
    🈩🈔🈪
    1F2291F2141F22A
    ?🉂🉁
    ?1F2421F241

這些符號分散在以下幾個 Unicode 區塊(block)中:

  • Enclosed Alphanumerics (U+2460–U+24FF)
    • 帶圈 0–20(以及 a–z、A–Z)
    • 反白 0、11–20
    • 雙線 1–10
    • 帶圓括號 1–20
    • 帶點 1–20
  • Dingbats (U+2700–U+27BF)
    • 反白 1–10
    • 無襯線 1–10
    • 無襯線反白 1–10
  • Enclosed CJK Letters and Months (U+3200–U+32FF)
    • 帶圈 21–50
    • 加框 10–80(僅限整十)
    • 帶圈?一~十
    • 帶圓括號?一~十
  • Enclosed Alphanumeric Supplement (U+1F100–U+1F1FF)
    • 帶逗號 0–9
    • 無襯線、無襯線反白以及帶點的 0
  • Enclosed Ideographic Supplement (U+1F200–U+1F2FF)
    • 帶方框?一、二、三
    • 帶六角括號?二、三

直接輸入,或者利用碼位,都能在?

\documentclass{article} \usepackage{fontspec} \setmainfont{Source Han Serif SC} \begin{document} ① ② ③ ④ ⑤ \symbol{"2776} \symbol{"2777} \symbol{"2778} \symbol{"2779} \symbol{"277A} \char"3248\ \char"3249\ \char"324A\ \char"324B\ \char"324C\ ^^^^3280 ^^^^3281 ^^^^3282 ^^^^3283 ^^^^3284 ^^^^^1f229 ^^^^^1f214 ^^^^^1f22a \end{document}

使用?


?

xunicode-addon?宏包? ??

在實際使用中,無論是依靠碼位,還是借由輸入法直接錄入這些特殊字符,都不是很方便。在?xunicode-addon?宏包(從屬于?xeCJK)中,\textcircled?等一系列命令被重新定義,從而能夠顯示 Unicode 所分配的帶圈數字(和字母等)。舉例如下:

\documentclass{article} \usepackage{fontspec,xunicode-addon} \setmainfont{Source Han Serif SC} \begin{document} \textcircled{1} \textcircled{25} \textcircled{a} \textcircled{Z} \end{document}

利用?

\ExplSyntaxOn \cs_set:Npn \TESTi{ \int_step_inline:nnn { 0 } { 25 } { \textcircled{##1} ~ } \par \int_step_inline:nnn { 26 } { 50 } { \textcircled{##1} ~ } \par } \cs_set:Npn \TESTii { \tl_map_inline:nn { abcdefghijklmnopqrstuvwxyz } { \textcircled{##1} ~ } \par } \cs_set:Npn \TESTiii { \tl_map_inline:nn { ABCDEFGHIJKLMNOPQRSTUVWXYZ } { \textcircled{##1} ~ } \par } \ExplSyntaxOff \TESTi \TESTii \TESTiii

當然,其他樣式的帶圈數字并沒有提供快捷的輸入方式。


?

在?ctex?宏集中使用

以上的案例都是在標準文檔類?article?中搭配?fontspec?宏包完成的。如果切換成?ctex?宏集,則需要額外做一些調整。

對于中文文檔,我們通常需要為中西文(「西文」主要指 Latin script)分別設置字體。上面已經提到過,帶圈數字分散在了幾個 Unicode 區塊中。xeCJK?將其中的 Enclosed CJK Letters and Months 和 Enclosed Ideographic Supplement 設置為了 CJK 字符類,使用中文字體;其余則為 Default 字符類,使用西文字體。

總而言之,在?ctex?宏集的默認配置下:

Unicode 區塊
Enclosed Alphanumerics西文西文
Dingbats西文西文
Enclosed CJK Letters and Months中文中文
Enclosed Alphanumeric Supplement西文西文
Enclosed Ideographic Supplement中文西文

在?

% 使用中文字體 \xeCJKDeclareCharClass{CJK}{% "24EA, % ? "2460->"2473, % ①–? "3251->"32BF, % ?–? "24FF, % ? "2776->"277F, % ?–? "24EB->"24F4 % ?–? } \setCJKmainfont{Source Han Serif SC} % 或使用西文字體 % \xeCJKDeclareCharClass{Default}{% % "24EA, "2460->"2473, "3251->"32BF, % "24FF, "2776->"277F, "24EB->"24F4} % \setmainfont{Garamond-Math.otf}

在?

% 使用中文字體 \ltjdefcharrange{6}{% "24EA, "2460-"2473, "3251-"32BF, "24FF, "2776-"277F, "24EB-"24F4} \setCJKmainfont{Source Han Serif SC} % 或使用西文字體 % \ltjdefcharrange{3}{% % "24EA, "2460-"2473, "3251-"32BF, % "24FF, "2776-"277F, "24EB-"24F4} % \setmainfont{Garamond-Math.otf}

這里的?6?和?3?原先分別對應日文字符和西文標點、符號。還需注意范圍的寫法與?xeCJK?中不同。

配合?xunicode-addon?宏包,在?ctex?宏集中也同樣可以使用?\textcircled?命令輸入預定義的帶圈數字。但需注意,\textcircled?會預先檢查字符是否存在,且僅在西文字體中進行。所以如需使用中文字體進行顯示,就要「指鹿為馬[2]

% XeLaTeX 下需要把全體帶圈數字都設置成 Default 類 % LuaLaTeX 下無須額外設置 \xeCJKDeclareCharClass{Default}{"24EA, "2460->"2473, "3251->"32BF} % 將中文字體聲明為(西文)字體族 \newfontfamily\EnclosedNumbers{Source Han Serif SC} % 放置鉤子,只讓帶圈字符才需更換字體 \AtBeginUTFCommand[\textcircled]{\begingroup\EnclosedNumbers} \AtEndUTFCommand[\textcircled]{\endgroup}

對于字體中沒有的帶圈數字,\textcircled?也能夠自動生成(由圓圈和相應的數字拼合)。選擇合適的字體之后,便可做一些比較暴力的嘗試:

即使是三位數,效果也尚能接受。

OpenType 的?nalt?特性

在 OpenType 中,有一項名為?nalt(Alternate Annotation Forms)的 GSUB 特性,它的作用是把特定的字符形替換成符號標注形式(notational forms)。不少日文字體都包含這一特性,我們可以利用?fontspec?宏包提供的相關選項調用。舉例如下:

\documentclass{article} \usepackage{fontspec} \setmainfont{ipaexm.ttf} % IPAex 明朝,TeX Live 自帶 \begin{document} {\addfontfeature{Annotation=0}123456789} {\addfontfeature{Annotation=1}123456789} {\addfontfeature{Annotation=2}123456789} \end{document}

需要注意的是,Annotation=X?中的某個?X?具體對應何種樣式,這是由字體設計者決定的。此外,在一些字體中,部分假名、漢字也有類似的標注形式,可以用相同方法使用:

\documentclass{ctexart} \setCJKmainfont{Hiragino Mincho Pro W3} \begin{document} {\addCJKfontfeature{Annotation=0}あア} {\addCJKfontfeature{Annotation=1}かカ} {\addCJKfontfeature{Annotation=2}さサ} {\addCJKfontfeature{Annotation=3}たタ} {\addCJKfontfeature{Annotation=4}なナ} {\addCJKfontfeature{Annotation=5}はハ} {\addCJKfontfeature{Annotation=6}まマ} \end{document}

這里我們用?\addCJKfontfeature?代替了?\addfontfeature。此處作為演示的字體是 macOS 自帶的ヒラギノ明朝,在 Windows/Linux 上可換用其他字體。

Adobe-Japan1-7

Adobe-Japan1-7 字符集定義了更多的帶圈數字,很多樣式都支持 0–100 的數字范圍。但由于 Unicode 沒有為它們分配碼位,我們必須用 CID(Character?IDentifier)來指定[3]

由于 CID 到具體字符的映照比較復雜,因而這里我們提供了一個宏包?textcircle-cid,用來通過 CID 調用帶圈數字。textcircle-cid?宏包提供了下面一組命令:

  • \CIDtextcircled
  • \CIDtextblackcircled
  • \CIDtextboxed
  • \CIDtextblackboxed
  • \CIDtextrboxed
  • \CIDtextblackrboxed

支持的數字范圍是 0–100 和 00–09。

  • % test-uptex.tex \documentclass{ujarticle} \usepackage{pxchfon,textcircle-cid} \setminchofont{KozMinPr6N-Regular.otf} \setgothicfont{KozGoPr6N-Regular.otf} \def\TEST{% \CIDtextcircled{0} \CIDtextblackcircled{1} \CIDtextboxed{00} \CIDtextblackboxed{10} \CIDtextrboxed{50} \CIDtextblackrboxed{100}} \begin{document} \textmc{\TEST} \par \textgt{\TEST} \end{document}

    注意?

    uplatex test-uptex && dvipdfmx test-uptex

    在上面的示例中,我們使用的字體是 Adobe 的小塚明朝和小塚ゴシック。事實上,只有遵從 Adobe-Japan1 的字體,才能利用 CID 正確地調用相應的字符。

字體的選擇

上文我們多次提及,帶圈數字的具體使用與字體密切相關。下面我們整理了?

字體帶圈反白無襯線無襯線反白
Baekmuk Batang/Dotum/Gulim/Headline1–15???
Carlito0–200–20??
DejaVuSans1–101–101–101–10
FreeMono, FreeSans1–10???
FreeSerif1–101–101–101–10
Garamond Math0–500–20??
IPAGothic, IPAMincho1–501–20??
Junicode0–200–20??
Lato0–200–20??
Libertinus Serif/Sans/Math, Linux Libertine, Linux Biolinum0–200–20??
Libertinus Keyboard, Linux Biolinum Keyboard?1–10??
STIX, STIX Math0–9?1–101–10
STIX Two Math0–200–201–101–10
UnBatang, UnDinaru, UnDotum, UnGraphic, UnGungseo, UnJamoBatang, UnJamoDotum, UnJamoNovel, UnJamoSora, UnPen, UnPenheulim, UnPilgi, UnPilgia, UnShinmun, UnVada, UnYetgul0–20???
XITS, XITS Math0–9?1–101–10
文鼎PL簡報宋、文鼎PL簡中楷1–10???

以下是其他一些常見中、日文字體,其中很多是操作系統自帶的:

字體帶圈反白無襯線無襯線反白
思源宋體、思源黑體0–500–200–100–10
微軟雅黑、微軟正黑1–10???
蘋方0–500–200–101–10
方正書宋、方正黑體、方正楷體、方正仿宋、等線1–10???
宋體、黑體、楷體、仿宋(中易)1–10???
更紗黑體 (Sarasa Gothic)0–500–200–100–10
小塚明朝?(Kozuka Mincho)、小塚ゴシック?(Kozuka Gothic)0–1000–100??
游明朝?(Yu Mincho)、游ゴシック?(Yu Gothic)0–1000–100??
メイリオ?(Meiryo)0–501–200–101–10

這里我們用了 Python 腳本?check-circled-number.py?來讀取字體信息,它還依賴?FontForge。注意由于字體版本不同,不保證表中所列結果與實際情況完全一致。

注釋

  • ^在本頁面的 CSS 中,帶圈數字將優先使用思源宋體(Source Han Serif)顯示,但具體結果仍然取決于字體的安裝情況以及瀏覽器的渲染方式。
  • ^感謝?@qinglee?的指導!見 CTeX-org/ctex-kit?#399。
  • ^感謝?@clerkma?的指導!見 CTeX-org/forum?#20。
  • 總結

    以上是生活随笔為你收集整理的latex 如何添加圆圈数字?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。