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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

latex 如何添加圆圈数字?

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

?

?

眾所周知,

實(shí)際上,加圈并不是一個(gè)平凡的變換,它會(huì)涉及到圈內(nèi)字符形狀的微調(diào),而這是幾乎無法在?


?

傳統(tǒng)方案

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

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

在主流的?


?

Unicode

數(shù)字 0–50 的帶圈版本都分配了對(duì)應(yīng)的 Unicode 碼位,因而在現(xiàn)代?

?
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
  • 帶圓括號(hào)(parenthesized digits)

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

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

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

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

這些符號(hào)分散在以下幾個(gè) Unicode 區(qū)塊(block)中:

  • Enclosed Alphanumerics (U+2460–U+24FF)
    • 帶圈 0–20(以及 a–z、A–Z)
    • 反白 0、11–20
    • 雙線 1–10
    • 帶圓括號(hào) 1–20
    • 帶點(diǎn) 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(僅限整十)
    • 帶圈?一~十
    • 帶圓括號(hào)?一~十
  • Enclosed Alphanumeric Supplement (U+1F100–U+1F1FF)
    • 帶逗號(hào) 0–9
    • 無襯線、無襯線反白以及帶點(diǎn)的 0
  • Enclosed Ideographic Supplement (U+1F200–U+1F2FF)
    • 帶方框?一、二、三
    • 帶六角括號(hào)?二、三

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

\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?宏包? ??

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

\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

當(dāng)然,其他樣式的帶圈數(shù)字并沒有提供快捷的輸入方式。


?

在?ctex?宏集中使用

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

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

總而言之,在?ctex?宏集的默認(rèn)配置下:

Unicode 區(qū)塊
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?原先分別對(duì)應(yīng)日文字符和西文標(biāo)點(diǎn)、符號(hào)。還需注意范圍的寫法與?xeCJK?中不同。

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

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

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

即使是三位數(shù),效果也尚能接受。

OpenType 的?nalt?特性

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

\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?中的某個(gè)?X?具體對(duì)應(yīng)何種樣式,這是由字體設(shè)計(jì)者決定的。此外,在一些字體中,部分假名、漢字也有類似的標(biāo)注形式,可以用相同方法使用:

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

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

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

支持的數(shù)字范圍是 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 的小塚明朝和小塚ゴシック。事實(shí)上,只有遵從 Adobe-Japan1 的字體,才能利用 CID 正確地調(diào)用相應(yīng)的字符。

字體的選擇

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

字體帶圈反白無襯線無襯線反白
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簡(jiǎn)報(bào)宋、文鼎PL簡(jiǎn)中楷1–10???

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

字體帶圈反白無襯線無襯線反白
思源宋體、思源黑體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。注意由于字體版本不同,不保證表中所列結(jié)果與實(shí)際情況完全一致。

注釋

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

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。