メモ:latex
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン最新のリビジョン両方とも次のリビジョン | ||
メモ:latex [2021/10/07 10:24] – [丸囲み数字等のフォント] Wiki Editor | メモ:latex [2022/01/25 09:53] – [表の行間の余白] Wiki Editor | ||
---|---|---|---|
行 195: | 行 195: | ||
- | ===== 丸囲み数字等のフォント | + | ===== 段落頭の字下げ設定 |
- | Rmarkdownからxelatexを経由してPDFを作成する際に、丸囲み数字など(①)がフォント抜けで豆腐になっていたのを解決。問題は単純なフォント設定だったが、フォント設定は基本的に変えたくなかったので、いろいろ調査してわかったこと。 | + | 段落頭の字下げ量をコントロールするとき\parindentを利用するが、和文ではプリアンブルに書いても1文字分しか設定できない。したがって、実質的には0か1しか設定できない。常識なのかもしれないが、和文の場合段落頭の字下げは1文字と相場が決まっているため、いくらプリアンブルで設定しても、リセットされるようだ。\begin{document}で文字サイズが初期化されるためのようだ。以下のページのFAQに記載されていた。 |
- | + | ||
- | xelatexはTTFフォントを直接指定することができる便利なtexなので、Rmarkdownからの出力はこれを利用している。この時、日本語を利用するために以下の設定をしている。ドキュメントクラスの読み込みでfontspecやzxjatypeはusepackageをしなくてもよいかもしれない。 | + | |
- | + | ||
- | RmakdownのYAMLヘッダ(該当箇所のみ) | + | |
- | documentclass: | + | |
- | classoption: | + | |
- | header-includes: | + | |
- | # 欧文フォントの指定 | + | |
- | - \usepackage{fontspec} | + | |
- | - \setmainfont{Times New Roman} | + | |
- | - \setsansfont{Times New Roman} | + | |
- | # 和文フォントの指定 | + | |
- | - \usepackage{zxjatype} | + | |
- | - \setCJKmainfont[BoldFont=IPAexGothic]{IPAexMincho} | + | |
- | - \setCJKsansfont{IPAexGothic} | + | |
- | + | ||
- | + | ||
- | Texソースでは以下のように展開される。 | + | |
- | \documentclass[xelatex, | + | |
- | \setmainfont{Century} | + | |
- | \setsansfont{Century} | + | |
- | \setCJKmainfont[BoldFont=IPAexGothic]{IPAexMincho} | + | |
- | \setCJKsansfont{IPAexMincho} | + | |
- | + | ||
- | 使っているフォントはともかくとして、以上の設定でだいたいスムーズにタイプセットしてPDFがうまく生成されていたのだが、丸囲み数字などがフォント抜けしてしまい、その都度丸囲み数字を生成するコードを挿入していた。文章を書いている場合には、自分で丸囲み数字を使う箇所を認識しているので問題はないが、アンケートの自由記述欄などテキストデータを読み込んで、一括して整形・出力するようなコードを書くと、どうしても入力された文字に混ざってしまう。逐一見つけて置換などをしても、気づかないフォント抜けなどが発生してしまうことがあり、いままで気づいた文字を置換リストに貯めていたが、非効率だしユニコードの世界では解決できるはずだと思い調査。 | + | |
- | + | ||
- | 原因は非常に単純な点にあった。問題は、丸囲み数字の箇所が「欧文」として扱われており、Times New Romanにコードポイントに対応するフォントが用意されておらず、フォントが抜けてしまう様だった。試しに欧文フォントをIPAフォントに変えてみると、ごく普通に丸囲み数字もPDFで表示できる。丸囲み数字を入力するのが日本語IMEで変換するため、てっきり日本語の全角文字扱いだと思っていたが、かつてと異なりユニコードでは①はU+2460というコードポイントが割り当てられており、このコードが入力されている。そして、このコードがある範囲がxelatexでは欧文として扱われるため、欧文フォントの設定が適用されていたためにフォント抜けが発生していた。 | + | |
- | + | ||
- | 単純な解決策は、欧文もすべて日本語フォントにすること。IPAex明朝などは、半角文字もきれいに出力できるので、これはこれでよい。しかし、どうしてお欧文には別フォントを利用したい場合、丸囲み数字の箇所だけフォント指定するとか、段落単位で逐一フォント指定するとか個別対応が必要となる。これでは、個別に置換するのと手間はあまり変わらない。そこで以下を参考に設定を追加。 | + | |
- | + | ||
- | + | ||
- | * [[http:// | + | |
- | * [[https:// | + | |
- | * [[https:// | + | |
- | * [[https:// | + | |
- | + | ||
- | | + | |
- | + | ||
- | 上記のように、xeCJKパッケージの\xeCJKDeclareSubCJKBlockで、和文として扱うコードの範囲を指定してやる。単純に和文として扱うだけなら、上記のように必要な個所のコードを指定すれば、全体で設定している和文フォントが利用される。「kana」は識別名なので何でもよい。範囲の指定は、コードポイントでも、コードポイントに対応する文字でも指定できるようだ。また、必要に応じてここで指定したブロックだけ別フォントを割り当てることも可能。< | + | |
- | + | ||
- | \xeCJKDeclareSubCJKBlockでASCII以外のほぼすべてのコードポイントを指定していたが、やはり横着したのはよくなかった。詳細は調べていないが、ここで指定されたブロックは、文字送りや禁則処理のルールが別扱いになるようで、「。」が行頭に出てしまったりと、美しい組版にあらない。ということで、記号が入っているブロックに絞って指定する。とりあえず「" | + | |
- | + | ||
- | * [[https:// | + | |
- | + | ||
- | + | ||
- | + | ||
+ | * [[https:// | ||
+ | ここにも記載されているように、字下げ量を任意に設定したい場合は\begin{document}以降に設定する必要がある。 |
メモ/latex.txt · 最終更新: 2022/01/25 10:16 by Wiki Editor