メモ:latex
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
メモ:latex [2021/10/06 11:15] – [丸囲み数字等のフォント] Wiki Editor | メモ:latex [2022/01/25 10:16] (現在) – [段落頭の字下げ設定] Wiki Editor | ||
---|---|---|---|
行 195: | 行 195: | ||
- | ===== 丸囲み数字等のフォント | + | ===== 段落頭の字下げ設定 |
- | Rmarkdownからxelatexを経由してPDFを作成する際に、丸囲み数字など(①)がフォント抜けで豆腐になっていたのを解決。問題は単純なフォント設定だったが、フォント設定は基本的に変えたくなかったので、いろいろ調査してわかったこと。 | + | 段落頭の字下げ量をコントロールするとき\parindentを利用するが、和文ではプリアンブルに書いても1文字分しか設定できない。したがって、実質的には0か1しか設定できない。常識なのかもしれないが、和文の場合段落頭の字下げは1文字と相場が決まっているため、いくらプリアンブルで設定しても、リセットされるようだ。\begin{document}で文字サイズが初期化されるためのようだ。以下のページのFAQに記載されていた。 |
- | xelatexはTTFフォントを直接指定することができる便利なtexなので、Rmarkdownからの出力はこれを利用している。この時、日本語を利用するために以下の設定をしている。ドキュメントクラスの読み込みでfontspecやzxjatypeはusepackageをしなくてもよいかもしれない。 | + | * [[https:// |
- | RmakdownのYAMLヘッダ(該当箇所のみ) | + | ここにも記載されているように、字下げ量を任意に設定したい場合は\begin{document}以降に設定する必要がある。 |
- | 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, | + | sectionなどの見出しのフォーマットを変更するパッケージにtitlesecがある。色々できるが、ポイントをメモ。 |
- | \setmainfont{Century} | + | |
- | \setsansfont{Century} | + | |
- | \setCJKmainfont[BoldFont=IPAexGothic]{IPAexMincho} | + | |
- | | + | |
- | 使っているフォントはともかくとして、以上の設定でだいたいスムーズにタイプセットしてPDFがうまく生成されていたのだが、丸囲み数字などがフォント抜けしてしまい、その都度丸囲み数字を生成するコードを挿入していた。文章を書いている場合には、自分で丸囲み数字を使う箇所を認識しているので問題はないが、アンケートの自由記述欄などテキストデータを読み込んで、一括して整形・出力するようなコードを書くと、どうしても入力された文字に混ざってしまう。逐一見つけて置換などをしても、気づかないフォント抜けなどが発生してしまうことがあり、いままで気づいた文字を置換リストに貯めていたが、非効率だしユニコードの世界では解決できるはずだと思い調査。 | + | フォーマットの変更は、\titleformatを利用する。設定項目が多いためちょっとややこしい。 |
+ | \usepackage{titlesec} | ||
+ | \titleformat | ||
+ | {\section} <- 対象の見出し | ||
+ | [hang] <- 見出しの形:段落との関係などを変える | ||
+ | {\LARGE\color{white}} <- 見出し文字列のフォーマット | ||
+ | {\thesection. } <- ラベル(連番部分)のフォーマット | ||
+ | {0em} <- ラベルと見出し文字列の間隔 | ||
+ | {} <- 見出し文字列の直前のコマンド | ||
+ | [] <- 見出し文字列の直後のコマンド | ||
+ | |||
+ | 見出し直前のコマンドは、見出し全体に適用されるものとして記述しなければならないが、見出し文字列の前後に文字を入れたりしたい場合、コマンドを適用する範囲を限定したい場合がある。その場合は、titlesecパッケージを読み込む際に以下のオプションをつける必要がある。この場合、見出し文字列を出力する位置を「# | ||
- | 原因は非常に単純な点にあった。問題は、丸囲み数字の箇所が「欧文」として扱われており、Times New Romanにコードポイントに対応するフォントが用意されておらず、フォントが抜けてしまう様だった。試しに欧文フォントをIPAフォントに変えてみると、ごく普通に丸囲み数字もPDFで表示できる。丸囲み数字を入力するのが日本語IMEで変換するため、てっきり日本語の全角文字扱いだと思っていたが、かつてと異なりユニコードでは①はU+2460というコードポイントが割り当てられており、このコードが入力されている。そして、このコードがある範囲がxelatexでは欧文として扱われるため、欧文フォントの設定が適用されていたためにフォント抜けが発生していた。 | + | \usepackage[explicit]{titlesec} |
+ | \titleformat | ||
+ | {\section} <- 対象の見出し | ||
+ | [hang] <- 見出しの形:段落との関係などを変える | ||
+ | {\LARGE\color{white}} <- 見出し文字列のフォーマット | ||
+ | {\thesection. } <- ラベル(連番部分)のフォーマット | ||
+ | {0em} <- ラベルと見出し文字列の間隔 | ||
+ | {#1} <- 見出し文字列の直前のコマンド | ||
+ | [] <- 見出し文字列の直後のコマンド:見出し内に影響を限定するため内部を{}でグループ化する必要がある場合がある | ||
+ | |||
+ | ==== 設定例:黒帯に白文字の見出し ==== | ||
- | 単純な解決策は、欧文もすべて日本語フォントにすること。IPAex明朝などは、半角文字もきれいに出力できるので、これはこれでよい。しかし、どうしてお欧文には別フォントを利用したい場合、丸囲み数字の箇所だけフォント指定するとか、段落単位で逐一フォント指定するとか個別対応が必要となる。これでは、個別に置換するのと手間はあまり変わらない。そこで以下を参考に設定を追加。 | + | 見出しを黒帯に白抜き文字にする設定。ラベル設定部分でラベルは出力せず、見出し文字列前のコマンドで、見出しとラベルを両方設定する。 |
+ | まず、\colorbox{black}で背景を黒にし、\parbox{\textwidth}で行幅と同じ幅の段落を生成する。これで、黒背景の見出し段落ができる。その中に、\thesectionと# | ||
- | | + | |
- | | + | |
- | * [[https:// | + | {\section} |
- | * [[https:// | + | |
+ | | ||
+ | {} | ||
+ | {0em} | ||
+ | {\colorbox{black}{\parbox{\textwidth}{\raisebox{-1mm}{\thesection.\strut\hspace{0.2em}} \raisebox{-1.3mm}{#1}}}} | ||
- | \xeCJKDeclareSubCJKBlock{kana}{ "0600 -> " | + | ==== 設定例:見出しに下線 ==== |
- | 上記のように、xeCJKパッケージの\xeCJKDeclareSubCJKBlockで、和文として扱うコードの範囲を指定してやる。単純に和文として扱うだけなら、上記のように必要な個所のコードを指定すれば、全体で設定している和文フォントが利用される。範囲の指定は、コードポイントでも、コードポイントに対応する文字でも指定できるようだ。また、必要に応じてここで指定したブロックだけ別フォントを割り当てることも可能。ここでは横着して、とりあえずASCII文字+α以上のコードポイントはすべて和文と指定して丸囲み数字等をすべて日本語フォントにしてしまうが、もう少し丁寧に設定する方が望ましいだろう。範囲指定の際は、Unicodeのブロック表を参照する。 | + | 見出しの下に下線を引く。 |
- | + | ||
- | * [[https:// | + | |
+ | 見出しに下線を引く。もっと簡単な方法もあるかもしれないが、最後のコマンドまではほぼ標準設定をなぞって設定。その上で、見出し出力後のコマンドに\vspace{0mm}\titlerule[1pt]を指定して、1pt幅の水平線を出力。ここで、全体を{}でくくっておかないと、影響範囲の問題でエラーになるようだ。 | ||
+ | \usepackage[explicit]{titlesec} | ||
+ | \titleformat | ||
+ | {\section} | ||
+ | [hang] | ||
+ | {\normalfont\Large\headfont} | ||
+ | {\thesection.} | ||
+ | {0.3em} | ||
+ | {#1} | ||
+ | [{\vspace{0mm}\titlerule[1pt]}] | ||
メモ/latex.txt · 最終更新: 2022/01/25 10:16 by Wiki Editor