Hatena::ブログ(Diary)

マクロツイーター このページをアンテナに追加 RSSフィード Twitter

2017-02-13

bxpapersize パッケージのチョットアレな使い方

先日の記事で bxpapersize の“幸せな LaTeX ユーザ向け”の使い方は説明し終わったので、ここではチョットアレな人向けの高度な使い方を解説する。

文書の途中で出力用紙サイズを変える話

実は \papersizesetup 命令は文書本体中でも使うことができる。つまり、文書の途中で出力用紙サイズを変更できることになる。実際にそれを行った場合、「(非同期で)ページ出力が発生した際に、その時に有効であった size パラメタの設定値」が適用されることになる。また、size パラメタの変更は局所的代入の扱いになる。

\documentclass[a5paper]{article}
\usepackage{bxpapersize}% 'size=real'が既定で設定される
\begin{document}
First!
\newpage % ページ出力発生, 出力サイズはa5paper
{% グループ開始
  \papersizesetup{size=a4paper}
  Second!
  \newpage % ページ出力発生, 出力サイズはa4paper
}% グループ終了, sizeパラメタはrealに戻る
Last!
\end{document}% ページ出力発生, 出力サイズはa5paper

例によって、「bxpapersize は出力用紙サイズを変えるだけ」なので、この例の 2 ページ目は奇妙な出力になる。

ちなみに、size=real は「ページ出力発生時に、その時の \paperwidth/height の値を出力サイズに設定する」という意味なので、real が指定されている状態で文書中で \paperwidth/height の値が変わった場合にも、出力用紙サイズは変更される。

DVI ウェアの中には「出力サイズが異なるページが混在した DVI」を正常に処理できないものがあることに注意。

機能の一時的な無効化

active パラメタを true/false に設定するとパッケージの機能が有効/無効になる。無効化されている間に出力されたページには「(bxpapersize パッケージは)出力用紙サイズを設定しない」状態になる。その場合の実際の出力がどうなるかは DVI ウェアやエンジンに依存する。

TeX のボックスをそのまま出力してしまう話

size パラメタの値を box にすると、「出力(\shipout)しようとする TeX ボックスの寸法をそのまま出力用紙サイズに設定する」という動作になる。

\documentclass[a4paper]{article}
\usepackage{bxpapersize}
\begin{document}
{\LaTeX} is wonderful!

%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TeX code BEGIN
\begingroup
  \papersizesetup{size=box}
  % ボックスを直接shipoutするぞ
  \shipout\hbox{{\TeX} is chaotic!!}
\endgroup
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TeX code END
\end{document}% "LaTeXの"ページ出力発生, 出力サイズはa4paper

これをコンパイルすると、1 ページ目は「{\TeX} is chaotic!!」の組版結果のボックスがそのままの寸法で出力される。2 ページ目は通常の LaTeX の処理によるページが A4 判で出力される。




2017-02-12

LaTeX 文書の出力用紙サイズを指定する(だけ) ― bxpapersize パッケージ

この記事では拙作の「bxpapersize パッケージ」について解説する。

TeX Live および W32TeX に収録されている。

コレ is 何

bxpapersize は「出力の用紙サイズを指定する」ための“専用”のパッケージである。

この説明でピンとこない人は、次の記事を参照してほしい。

つまり、レイアウト用と出力用の用紙サイズは一致するのが“普通”なはずなのに、LaTeX ではそうなっておらず、また“普通”にするための「汎用的に使える方法」が

% geometryするけどgeometryしないよ!
\usepackage[pass]{geometry}

という“わけのわからない”ものしか存在しない、ということが問題なのである。

恐らく普通の LaTeX ユーザによって解りやすいのは「用紙サイズを設定するための専用のパッケージ」が用意されていることであろう。実際に、そういう“専用”のパッケージは幾つか公開されているようであるが、(bxpapersize を最初に公開した 2016 年 3 月の時点では※)CTAN や TeX Live に収録されているものは無かったので、結局それは“汎用的に使える”方法とはいえないものであった。これが bxpapersize を作製した動機である。

※現在では、iNOUE Koich! 氏原作の bounddvi パッケージが platex-tools バンドルに取り込まれて CTAN および TeX Live に収録されている。ただし bounddvi は(名前の通り)DVI 出力のみをサポートすることに注意。

あのサイズとこのサイズを一致させる話

まずは“普通”の場合、つまり「出力の用紙サイズをレイアウトの用紙サイズに一致させたい」場合を考える。要するに、\documentclassオプションa5paper と指定した(これが「レイアウトの用紙サイズ」)ときに「出力の用紙サイズ」を A5 判にしたい、というような話である。この場合は、単純に bxpapersize パッケージを読み込めば実現できる。

% レイアウトはA5判
\documentclass[a5paper]{article}
\usepackage{bxpapersize}% 読み込みだけでOK
\begin{document}
Hello\vfill {\TeX}!
\end{document}

この文書LaTeX(エンジンは何でもよい)で DVI または PDF 文書に変換すると、出力の文書の用紙サイズが A5 判(148mm×210mm)に設定される。*1

版面の拡大縮小のために「mag 設定」が行われている場合にも対応している。

% (pdf)LaTeX文書
% レイアウトはA4判を基準にする
\documentclass[a4paper]{article}
\usepackage{bxpapersize}% 読み込みだけでOK
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TeX code BEGIN
% そして版面を2倍に拡大をする
\mag=2000
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TeX code END
\begin{document}

この場合、出力の用紙サイズは“A4 判の 2 倍”(420mm×594mm)となる。

jsclasses バンドル文書クラス(jsarticle など)は「内部で mag 設定を利用している」が、この場合も大丈夫である。

% upLaTeX文書
% レイアウトは(実際に)A4判
\documentclass[uplatex,a4paper,12pt]{jsarticle}
\usepackage{bxpapersize}
\begin{document}
こんにちはこんにちは\vfill {\TeX}\end{document}

この場合、出力の用紙サイズは A4 判(210mm×297mm)となる。*2もちろん、jsclasses のクラスの場合は papersize オプションが使えるので、bxpapersize をわざわざ用いる必要性はないだろう。

あのサイズをこのサイズではない何かにする話

文書クラスやパッケージによっては、「出力の用紙サイズ」を表す \stockwidth\stockheight というパラメタを定義して*3設定するものがある。そういう場合は、bxpapersize は「レイアウト用の用紙サイズ」(\paperwidth\paperheight)ではなく「出力の用紙サイズ」(\stockwidth\stockheight)を採用する。身近な例では、jsclasses のクラスで tombow 等のオプションを指定してトンボ出力を有効にした場合が該当する。

% upLaTeX文書
% レイアウトはA5判
\documentclass[uplatex,a5paper,9pt,tombow]{jsarticle}
\usepackage{bxpapersize}
\begin{document}
こんにちはこんにちは\vfill {\TeX}\end{document}

この場合、トンボ出力のために各辺に 1in の余白が取られるので、本来の A5 判(148mm×210mm)に対して縦横に 2in(= 50.8mm)だけ増えたサイズ(198.8mm×260.8mm)が \stockwidth/height に設定されるため、出力用紙サイズはそれに一致することになる。

また、(u)pLaTeX の標準文書クラス(jarticle 等)でトンボ出力の有効にした場合は、\stockwidth/height パラメタは設定(定義)されないが、bxpapersize ではこのケースも特別に取り扱って、所望の出力用紙サイズを設定するようにしている。

% pLaTeX文書
% レイアウトはA5判
\documentclass[a5paper,tombow]{jsarticle}
\usepackage{bxpapersize}
\begin{document}
こんにちはこんにちは\vfill {\TeX}\end{document}

先の jsarticle の例と同じく、これの出力サイズは“A5 判の 2in 増し”(198.8mm×260.8mm)となる。

なお、bxpapersize の読込時にオプションとして「size=real*」を付けると、「\stockwidth/height パラメタが設定されている状況」や「トンボ出力が有効だと見なされる状況」においても常に「レイアウトの用紙サイズ」(\paperwidth/height)の方を採用して、そちらに出力用紙サイズを合わせるようになる。

あのサイズをコレコレにする話

bxpapersize の size パラメタの値として直接に用紙サイズを指定することで、出力の用紙サイズをレイアウトのものとは無関係な任意の値に設定することができる。

% レイアウトはB5判
\documentclass[b5paper,dvipdfmx]{article}
% だけど出力はA4判
\usepackage[size=a4paper]{bxpapersize}
\begin{document}
Hello\vfill {\TeX}!
\end{document}

ただし、bxpapersize は飽くまで「出力用紙サイズを設定する」だけであり、他の機能、例えば「実際の版面を用紙の中央に配置する」とか「トンボを出力する」については一切関与しない。だから上掲の例の場合、単に A4 の用紙の左上隅の B5 判の大きさの領域に版面があるという、あまり意味のない出力になる。

size の値として指定する用紙サイズの名前(b4j 等)は、geometry パッケージに従っている。*4横置きを指定するには、landscape オプションを追加する。(この他、geometry と同じ意味の truedimen オプションも存在する。)

% 出力サイズを"A5横"に指定する
\usepackage[size=a5paper,landscape]{bxpapersize}

size パラメタはパッケージ(\usepackage)のオプションと指定する他に、\papersizesetup という命令を用いて指定することもできる。

% 直前の例と同等
\usepackage{bxpapersize}
\papersizesetup{size=a5paper,landscape}

\papersizesetup を使う場合は、縦横の長さを任意に指定することもできる。*5

\usepackage{bxpapersize}
\papersizesetup{size={100mm,148mm}}
一体何がしたいのか

このような指定が有用である場面を紹介する。次のような出力データを構成する文書クラス hogearticle があったとする。

  • レイアウトは A4 判を基準にして行う。つまり、\paperwidth/height は A4 判相当の値になっている。
  • JIS B4 判の紙面の中央にその A4 判の版面を配置し、周りの余白にトンボを出力する。

このクラスを使った文書を dvipdfmx を使って PDF に変換する*6場合、当然、出力サイズは JIS B4 判でなければならない。昔はこういう場合に「dvipdfmx のオプションで用紙サイズを指定する」ワークフローが想定されていた。

dvipdfmx -p jisb4 myarticle.dvi

しかし今は「出力用紙サイズを設定する」作用をもつパッケージが増えている。特に最近は graphicx パッケージがそれに該当することに注意が必要である。そういうパッケージはここで想定するワークフローとは相性が悪い。

% \paperwidth/height はA4判, しかし想定の出力サイズはJIS B4判
\documentclass[dvipdfmx]{hogearticle}
\usepackage{graphicx}% 画像したいね

この場合、graphicx パッケージは出力 DVI の出力用紙サイズを「レイアウトの用紙サイズと同じ」、すなわち A4 判に設定する。DVI で出力用紙サイズの指定を既に持っている場合、その指定は dvipdfmx のオプションでの指定よりも優先されるため、先のコマンドラインのように「-p jisb4」を指定していても、出力の PDF の用紙サイズは A4 判となってしまう。つまり件のワークフローは破綻してしまうのである。

今の場合、graphicx に「出力用紙サイズの指定を抑止する」ためのオプション nosetpagesize を指定すれば問題を回避できる。

\documentclass[dvipdfmx]{hogearticle}
\usepackage[nosetpagesize]{graphicx}% 用紙サイズ設定イラネ

ただ、「どのパッケージが出力用紙サイズを指定するのか」「どうすれば指定を抑止できるのか」というのは普通の LaTeX ユーザには解りにくい話であるし、そもそも「最近は DVI で出力用紙サイズを指定するのが一般的になっている」のなら、より合理的な選択は「DVI で出力用紙サイズを JIS B4 に指定する」ことになるだろう。bxpapersize パッケージを使うとこれが実現できるわけである。

\documentclass[dvipdfmx]{hogearticle}
\usepackage[size=b4j]{bxpapersize}% 出力サイズはJIS B4判
\usepackage{graphicx}

なお、上の例では graphicx に nosetpagesize を付けていないので、「出力用紙サイズ指定の競合」が起こることになるので、後に述べる priority オプションを併用するといいかも知れない。

強い態度に出る話

先に述べたように、「出力の用紙サイズを指定する」作用をもつ文書クラスパッケージは幾つか存在する。従って、それらと bxpapersize を併用すると、出力用紙サイズの指定が“競合”することになる。単純な場合(レイアウトの用紙サイズに合わせればよいだけの場合、等)は“競合”が起こっても結局全て同じサイズを指定しているだけなので実際に問題は起こらない。しかし、少し複雑な場合、例えば「mag 設定がある」「\stockwidth/height が指定されている」「bxpapersize で出力サイズを直接指定した(size=a4paper)」という場合は、相矛盾する設定が各パッケージにより行われることになる。この場合にどれが“勝つ”(実際に適用される)か、というのは(少なくとも普通の LaTeX ユーザにとっては)非常に予測し難いものである。

この問題に対処するため、bxpapersize では「自分の設定を優先させる」ためのオプションpriority=high」を用意している。もし、bxpapersize で指定した出力用紙サイズが効いていないように見える場合は、このオプションを追加すると問題が解消するかも知れない。(なお、priority パラメタはパッケージオプションでのみ指定可能で、\papersizesetup では使えない。)

\documentclass[dvipdfmx]{hogearticle}
\usepackage[size=b4j,priority=high]{bxpapersize}% オレの設定を聞け!!
\usepackage{graphicx}

※priority パラメタは dvipdfmx 専用である(ということにしておく*7)。

*1:「DVI の用紙サイズが A5 判」ということは、その DVIdviout や xdvi で閲覧した場合は A5 判として表示されるし、また dvips で PostScript 文書に変換、および dvipdfmx で PDF 文書に変換した場合も出力の文書は A5 判に設定される。

*2:mag 設定は"内部で利用している"だけで、拡大縮小したいわけではない。

*3:つまり、標準の LaTeX にはそういうパラメタはない。

*4:A 判は a0papera6paperISO B 判は b0paperb6paperJIS B 判は b0jb6j と指定する。

*5:パッケージオプションには「{ } を含む文字列は使えない」という制約があるため、この指定をパッケージオプションで行うことはできない。

*6:dvips で PostScript に変換する場合も話は全く同じである。

*7PDF 出力の場合は無効である。どうしても dvips で使いたい、という場合は olddvips というパッケージオプションを付けると上手くいくかも知れない。なんで“old”かというと、TeX Live 2017 では dvips の仕様が変わる予定で、そうするとこのオプションが不要になるからである……ああヤヤコシイ。

2017-02-05

BXjscls の新しいやつ(v1.4)

…がリリースされた。

数式中の和文文字の出力のサポート

(以下の話は“標準設定”(standard 和文ドライバ)を前提にする。)

周知の通り、(u)pLaTeX では「数式の一部として和文文字を出力する」*1ことができる。jsclasses バンドル文書クラス(JS クラス)ではこの機能が普通に利用できる。

% upLaTeX 文書
\documentclass[uplatex,a4paper]{jsarticle}
\begin{document}
\[ % <の>を数式の一部として使っている
  e^{の} = \sum_{k=0}^{\infty} \frac{の^k}{k!}
    = 1 + の + \frac{の^2}{2!} + \frac{の^3}{3!} + \cdots
\]
\end{document}
f:id:zrbabbler:20170205031346p:image

これに対して、従来の BXjscls の文書クラス(BXJS クラス)では、数式中の和文文字をサポートしていないので、先の例のような数式は通らなかった。

% upLaTeX 文書
\documentclass[uplatex,dvipdfmx,ja=standard,
    a4paper]{bxjsarticle}
\begin{document}
\[
  e^{の} = \sum_{k=0}^{\infty} \frac{の^k}{k!}
    = 1 + の + \frac{の^2}{2!} + \frac{の^3}{3!} + \cdots
\]
\end{document}

この bxjsarticle クラスの文書を(uplatex で)コンパイルすると以下のエラーが出る。

! Not two-byte family.
l.6   e^{の
            } = \sum_{k=0}^{\infty} \frac{の^k}{k!}
?

数式の和文に対応してなかった理由は単純で「単にサボっていたから」である。

BXJS クラス + (u)pLaTeX で和文の数式ができるようになった話

新しい BXJS クラスでは、エンジンが (u)pLaTeX の場合に JS クラスと同等の「和文数式ファミリ」の設定が行われるため、前掲の文書が正常にコンパイルできるようになる。出力結果は最初に挙げた JS クラスの文書と同じである。

なお、JS クラスでは和文数式ファミリの設定を無効化する“disablejfam”というクラスオプションがあるが、この仕様は((u)pLaTeX では)BXJS クラスでもサポートされる。

だけど和文があまり数式でない話

ただし、飽くまでも「JS クラスと同等」であるため、数式としては組版があまり適切でない場合があることに注意。*2

\[ (の + x)^2 =^2 + 2のx + x^2 \]
[uplatex での出力]
f:id:zrbabbler:20170205035407p:image

次の BXJS + LuaLaTeX での組版の結果と比較してほしい。

f:id:zrbabbler:20170205035406p:image

なお、LuaTeX-ja パッケージはそれ自身が和文数式ファミリの設定を行うので、LuaTeX-ja が使われている限りは数式中の和文文字は常に使える状態にある。従って、旧版の BXJS クラスでももちろん使える。無効化はできないので、disablejfam オプションはサポートされない(指定すると警告が出て無視される)。

BXJS クラス + XeLaTeX で和文の数式ができるようになった話

エンジンが XeLaTeX の場合は、既定では数式中の和文文字はサポートされないが、オプションに“enablejfam=true”を指定するとサポートされるようになる。

% XeLaTeX 文書, UTF-8
\documentclass[xelatex,ja=standard,enablejfam=true,
    a4paper]{bxjsarticle}
\begin{document}
\[ (の + x)^3 =^3 + 3の^2x + 3のx^2 + x^3 \]
\end{document}
f:id:zrbabbler:20170205044547p:image

この機能は xeCJK の \xeCJKsetup{CJKmath=true} を実行することで実現されている。これ自体の仕様について自分があまり理解しておらず、思わぬ副作用が出るおそれがあるため、既定で有効化することを見送っている。

\mathmc とか \mathgt とかの話

和文数式フォント命令の \mathmc\mathgt は、エンジンが (u)pLaTeX(disablejfam でない場合)か LuaLaTeX の場合は“本物の”数式フォント命令として働く。それ以外の場合は、「内部で一時的にテキストに切り替えて出力する」というフォールバック的な動作を行う。従って、これらの“和文数式フォント命令”の引数の中では常に(pdfLaTeX であっても)和文文字が使えることになる。

なお、この「テキストに切り替える」のには既定では \mbox が使われるが、これは添字の中では適切な出力にならない。amstext(または amsmath)パッケージが読み込まれている場合は \text 命令が使われるので、そちらの方が望ましい。

enablejfam オプション、disablejfam オプション
  • enablejfam=true : 数式中の和文文字をサポートする。
  • enablejfam=false : 数式中の和文文字をサポートしない。
  • disablejfam : “enablejfam=false”と同値。(JS クラスとの互換のため。)
  • enablejfam=default : 当該エンジンでの既定の状態に戻す。

既定の値はエンジンごとに異なり、(standard 和文ドライバでは)以下のようになっている。

  • (u)pLaTeX では既定で true だが false に変更できる。
  • XeLaTeX では既定で false だが true に変更できる。
  • LuaLaTeX では常に true である(enablejfam=false を指定すると警告が出る)。
  • pdfLaTeX では常に false である(enablejfam=true を指定すると警告が出る)。

※minimal 和文ドライバでは enablejfam/disablejfam は無視される。

その他諸々

  • 全角幅*3の水平空きを出力する命令 \zwspace を新設した。
  • アレに対する修正を行った。

*1:念のため言っておくが、「数式の一部として和文文字を出力する」と「数式の中に日本語を含める(そしてその中で和文文字を出力する)」は全く違う話であり、後者はよく行われるが、前者が行われることは非常に稀である。例えば、「p: 奇素数」のような表記の中の“奇素数”は日本語であって数式ではない(一般に、この用法の“:”の右側には自然言語が書かれる)。よってこれを LaTeX の数式中に含める場合は“p\colon\text{奇素数}”と書くことになる。

*2:「数式としての和文文字」は“日本語ではない”ので日本語用の組版規則が適用されるのは不適切である。

*3:「全角幅」とは \zw のこと。もっと厳密にいうと \jsZw のこと。

2017-02-03

PXchfon の新しいやつ(v0.8)

W32TeXTeX Live では既に更新されている。

“仕様的ナニカ”変更のお知らせ(←重要)

今回の版においては、次のような重要な動作の変更がある。

以前の記事を見れば判るように、この辺りの動作については、新版の動作の方が“本来の仕様”であり、旧版の動作は「japanese-otf パッケージの upTeX 対応パッチjis2004 オプションへの対応」が未了であったことに対する“暫定的な仕様”であった。現在は当該の「対応」が実施済のため、“本来の仕様”に戻ったということである。

※チョットややこしい話なので、後日改めて解説したい。

ファイルプリセットの単純なやつ

従来の(単純でない)「ファイルプリセット機能」というのは、次のような機能であった。

  • パッケージオプションに「+ipaex」のように“+”で始まる名前を与えると、「TeX Live の kanji-config-updmap」用に用意された「ptex-ipaex.map」「otf-ipaex.map」というマップファイル*1の読込が指示される。

しかしこの機能は「TeX Live の kanji-config-updmap」を採用していない TeX システムでは役に立たない。例えば、W32TeX では「IPAex フォント用のマップファイル」は単に ipaex.map という名前で用意されている。*2

このような場合に対処できるように、新たに「単純ファイルプリセット機能」を追加した。

  • パッケージオプションに「*ipaex」のように“*”で始まる名前を与えると、「ipaex.map」の読込が指示される。

例えば次のように用いられる。

% upLaTeX 文書
\documentclass[uplatex,a4paper]{jsarticle}
\usepackage[*msmingoth]{pxchfon}

これは次のものと等価になる。*3

% upLaTeX 文書
\documentclass[uplatex,a4paper]{jsarticle}
\usepackage[noalphabet]{pxchfon}
\usefontmapfile{msmingoth.map}

単独ではあまり有難みがないようにも見えるが、実は重要な使い道がある。pxchfon のプリセット指定は「BXJS クラスの jafont オプション」として指定することができるので、ここで単純ファイルプリセットを使うことで、任意のマップファイルを簡単に適用させることができるわけである。

% upLaTeX 文書
\documentclass[uplatex,dvipdfmx,ja=standard,jafont=*msmingoth,
    a4paper]{bxjsarticle}% これで msmingoth.map が使われる

*1:エンジンが upTeX の場合はさらに「uptex-ipaex.map」「up-otf-ipaex.map」が追加される。

*2:このファイルの中に、pTeX と upTeX の両方のエンジンの、標準と japanese-otf 用の和文フォントの定義が全て含まれている。

*3:「単純ファイルプリセット」もプリセット一種なので、これが指定されると、alphabet でなく noalphabet の方が既定に変わる。ただし、プリセット設定も \set〜font も使わずに \usefontmap〜 だけ使っている状況では、alphabet/noalphabet オプションは何の意味も持たない。

2017-01-29

e-TeX 拡張に依存するパッケージ

……の一部を恣意的に選んで列挙したもの。

判断基準

以下の条件を全て満たすパッケージを列挙した。

  • TeX Live 2015 最終版および 2016 最新版の両方に収録されている。
  • 他のクラスやパッケージの内部で読み込まれている実績がある。すなわち:
    • TL 2016 に含まれる拡張子が .cls または .sty の全てのファイルの中を見て、(一行で完結した)\RequirePackage を検索してパッケージ名を抽出する。
    • 出現回数が 2 以上のものを採用する。
  • e-TeX 拡張を持たないエンジンでは読み込むことすらできない。すなわち:
    • TL 2015 上で、元祖 TeX エンジンを用いた LaTeX フォーマットを作成し、次のような LaTeX 文書コンパイルする。
      \documentclass{article}
      \usepackage{(パッケージ名)}[]
      
      この時に、パッケージの読込(\usepackage)の途中でエラーが発生する。
    • エラーの原因が、「e-TeX 拡張(または pdfTeX 拡張)をもたない」ことであると判断される。
  • 自分(ZR氏)が(少なくとも名前を)聞いたことがあるもの。
  • 明らかに XeTeX または LuaTeX 専用であるもの(fontspec、xeCJK、luacode、等)は除外する。

「他のパッケージやクラスから読み込まれる(開発者向けの)パッケージ」に焦点を当てていて、どちらかというと TeX on LaTeX 者向けの情報である。

ソレ

  • CJKfntef
  • acronym
  • atenddvi
  • auto-pst-pdf
  • autonum
  • biblatex
  • biditools
  • bmpsize
  • catchfile
  • catoptions
  • chemgreek
  • csquotes
  • datatool
  • datetime2
  • environ
  • etex
  • etextools
  • etoolbox
  • expl3
  • filemod
  • flushend
  • fmtcount
  • glossaries
  • ifplatform
  • imakeidx
  • linegoal
  • ltxkeys
  • ltxtools
  • marginnote
  • mdframed
  • mhchem
  • minted
  • newfloat
  • newtxtext
  • noindentafter
  • ocgbase
  • options
  • shellesc
  • siunitx
  • standalone
  • tabu
  • tcolorbox
  • thmtools
  • tikz-timing
  • translations
  • typearea
  • xparse
  • xstring
  • zhnumber
  • zref