ユーザ用ツール

サイト用ツール


メモ:latex

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン両方とも次のリビジョン
メモ:latex [2021/10/07 10:24] – [丸囲み数字等のフォント] Wiki Editorメモ:latex [2021/11/10 09:52] – [丸囲み数字等のフォント] Wiki Editor
行 193: 行 193:
  
   * [[https://tex.stackexchange.com/questions/381718/how-to-remove-the-space-after-midrule-in-a-table]]   * [[https://tex.stackexchange.com/questions/381718/how-to-remove-the-space-after-midrule-in-a-table]]
- 
- 
-===== 丸囲み数字等のフォント ===== 
-Rmarkdownからxelatexを経由してPDFを作成する際に、丸囲み数字など(①)がフォント抜けで豆腐になっていたのを解決。問題は単純なフォント設定だったが、フォント設定は基本的に変えたくなかったので、いろいろ調査してわかったこと。 
- 
-xelatexはTTFフォントを直接指定することができる便利なtexなので、Rmarkdownからの出力はこれを利用している。この時、日本語を利用するために以下の設定をしている。ドキュメントクラスの読み込みでfontspecやzxjatypeはusepackageをしなくてもよいかもしれない。 
- 
-RmakdownのYAMLヘッダ(該当箇所のみ) 
-  documentclass: bxjsarticle 
-  classoption: xelatex,ja=standard,base=10.5pt,jbase=10.5pt,a4paper 
-  header-includes: 
-    # 欧文フォントの指定 
-    - \usepackage{fontspec} 
-    - \setmainfont{Times New Roman} 
-    - \setsansfont{Times New Roman} 
-    # 和文フォントの指定 
-    - \usepackage{zxjatype} 
-    - \setCJKmainfont[BoldFont=IPAexGothic]{IPAexMincho} 
-    - \setCJKsansfont{IPAexGothic} 
- 
- 
-Texソースでは以下のように展開される。 
-  \documentclass[xelatex,ja=standard,base=10.5pt,jbase=10.5pt,a4paper]{bxjsarticle} 
-  \setmainfont{Century} 
-  \setsansfont{Century} 
-  \setCJKmainfont[BoldFont=IPAexGothic]{IPAexMincho} 
-  \setCJKsansfont{IPAexMincho} 
- 
-使っているフォントはともかくとして、以上の設定でだいたいスムーズにタイプセットしてPDFがうまく生成されていたのだが、丸囲み数字などがフォント抜けしてしまい、その都度丸囲み数字を生成するコードを挿入していた。文章を書いている場合には、自分で丸囲み数字を使う箇所を認識しているので問題はないが、アンケートの自由記述欄などテキストデータを読み込んで、一括して整形・出力するようなコードを書くと、どうしても入力された文字に混ざってしまう。逐一見つけて置換などをしても、気づかないフォント抜けなどが発生してしまうことがあり、いままで気づいた文字を置換リストに貯めていたが、非効率だしユニコードの世界では解決できるはずだと思い調査。 
- 
-原因は非常に単純な点にあった。問題は、丸囲み数字の箇所が「欧文」として扱われており、Times New Romanにコードポイントに対応するフォントが用意されておらず、フォントが抜けてしまう様だった。試しに欧文フォントをIPAフォントに変えてみると、ごく普通に丸囲み数字もPDFで表示できる。丸囲み数字を入力するのが日本語IMEで変換するため、てっきり日本語の全角文字扱いだと思っていたが、かつてと異なりユニコードでは①はU+2460というコードポイントが割り当てられており、このコードが入力されている。そして、このコードがある範囲がxelatexでは欧文として扱われるため、欧文フォントの設定が適用されていたためにフォント抜けが発生していた。 
- 
-単純な解決策は、欧文もすべて日本語フォントにすること。IPAex明朝などは、半角文字もきれいに出力できるので、これはこれでよい。しかし、どうしてお欧文には別フォントを利用したい場合、丸囲み数字の箇所だけフォント指定するとか、段落単位で逐一フォント指定するとか個別対応が必要となる。これでは、個別に置換するのと手間はあまり変わらない。そこで以下を参考に設定を追加。 
- 
- 
-  * [[http://zrbabbler.sp.land.to/zxjatype.html]] 
-  * [[https://texwiki.texjp.org/?xeCJK]] 
-  * [[https://ftp.kddilabs.jp/CTAN/macros/xetex/latex/xecjk/xeCJK.pdf]] 
-  * [[https://suzusime-log.hatenablog.jp/entry/2017/04/15/210327]] 
- 
-  \xeCJKDeclareSubCJKBlock{kigou}{"20A0 -> "2BFF} 
- 
-上記のように、xeCJKパッケージの\xeCJKDeclareSubCJKBlockで、和文として扱うコードの範囲を指定してやる。単純に和文として扱うだけなら、上記のように必要な個所のコードを指定すれば、全体で設定している和文フォントが利用される。「kana」は識別名なので何でもよい。範囲の指定は、コードポイントでも、コードポイントに対応する文字でも指定できるようだ。また、必要に応じてここで指定したブロックだけ別フォントを割り当てることも可能。<del>ここでは横着して、とりあえずASCII文字+α以上のコードポイントはすべて和文と指定して丸囲み数字等をすべて日本語フォントにしてしまうが、もう少し丁寧に設定する方が望ましいだろう。</del>範囲指定の際は、Unicodeのブロック表などを参照するとよい。 
- 
-\xeCJKDeclareSubCJKBlockでASCII以外のほぼすべてのコードポイントを指定していたが、やはり横着したのはよくなかった。詳細は調べていないが、ここで指定されたブロックは、文字送りや禁則処理のルールが別扱いになるようで、「。」が行頭に出てしまったりと、美しい組版にあらない。ということで、記号が入っているブロックに絞って指定する。とりあえず「"20A0 -> "2BFF」の範囲としたが、様子を見て微調整する。とりあえず丸囲み数字の範囲は抑えているので、当面は問題ないはず。 
- 
-  * [[https://ja.wikipedia.org/wiki/Unicode#%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%81%AE%E4%B8%80%E8%A6%A7]] 
- 
- 
- 
  
  
  
メモ/latex.txt · 最終更新: 2022/01/25 10:16 by Wiki Editor

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki