Help us understand the problem. What is going on with this article?

スタイルファイルの導入~LyXでのレイアウト設定まで[Win10+texlive+LyX]

はじめに

概要

必要ができたので外部からLaTeXのスタイルファイルを導入しました。
私はLyXユーザーなのでそれに伴ったレイアウト設定も必要になります。

そういったわけで、一連の作業を備忘録的にここに公開します。
なんとなくクラス名はfoobarに差し替えてあります。

環境

記事執筆時点で

  • Windows 10
  • TeXLive 2019
  • LyX 2.3.3

別途テキストエディタを使用(VSC)

記録

TeXLiveへの導入

然るべき場所からダウンロードしたzipファイルを展開、ファイルを適当な場所に設置します。
参考:TeX のディレクトリ構成 - TeX Wiki

zipの内容物は↓のような感じでした:

  • クラスファイル本体(.cls)・付属.styファイル
  • BibTeXスタイルファイル(.bst)
  • サンプルファイル (.tex,.bib)

サンプルファイルはpdf出力ができてから移動させることにして、残りをtexmf-local/以下のしかるべき場所に移動。

特段ls-Rの設定も弄ってないのでmktexlsrを動かして(texlive的には)導入完了。

> mktexlsr

LyXレイアウトファイルの作成

ここからはLyXのヘルプファイルとにらめっこしながらレイアウトファイルを作ります。

まず、.clsファイルの中身から\LoadClass文を発掘します。

\LoadClass[letterpaper,11pt,twoside]{article}

つまりこのクラスはarticleクラスの設定を援用しているということです。
なのでarticle用のレイアウトファイルarticle.layoutをコピーして別の名前で保存します。

ユーザーディレクトリ(ヘルプ>LyXについてに記載されている場所、私の場合は~\AppData\Roaming\LyX2.3\。)に放り込んだlayoutファイルは、環境構成時にLyXがクラス一覧のリストに追加してくれるので、編集したレイアウトファイルを置いてツール>環境構成を走らせ、ログに以下の行が表示されれば第一段階は達成です。

+checking for document class foobar [foobar]... yes

最低限の変更箇所

文書クラス宣言

article.layout
#% Do not delete the line below; configure depends on this
#  \DeclareLaTeXClass{Article (Standard Class)}
#  \DeclareCategory{Articles}

LyXの文書設定画面で表示される文字列および選択メニュー内のカテゴリ配置を決定する大事な行。変えておかないと元のarticleと区別できなくなるので確実に設定しておきます。
4行目以降のコメントアウト行はたぶんコンソール実行時に出力されるテキストなので、適当に差し替え。

hyperrefの設定

クラスファイル中に\RequirePackage{hyperref}の記述があったので、LyXにhyperrefの定義が既にされていることを教える必要が発生します。
これをサボるとハイパーリンク使用時の出力でOption clashエラーが発生します。
今回の場合だとサンプルファイルのpdf出力ができなくなりました。

そういったわけで、以下の一行を.layoutファイルのどこかに追加します:

Provides hyperref 1

これでサンプルファイルのpdf出力が通るようになりました。ハイパーリンク中のコマンドがエスケープ済みのテキストに変換されてしまっていますが誤差でしょう。

追加の設定

クラスオプション

クラスオプションのデフォルトを適当に設定しておきます。

ClassOptions
    Other "<default-options>"
End

プリアンブル設定

レイアウトファイルでプリアンブルを設定すると後々いじるのが面倒なので、プリアンブルだけ専用のものに差し替えた白紙のLyXファイルを作成し、テンプレートとして使うことにしました。

追加コマンド

所属機関の表示を行うコマンド\instituteが新規に定義されているのでLyXでの表示に反映させます。差し当たって設定したパラメータは以下のようになります。

InsetLayout Flex:Institute
    LyXType     custom
    MultiPar    0
    LatexName   institute
    LatexType   Command
    LabelString "Institute"
End
  • InsetLayout ……Beamerなんかでは段落(Style)として設定されていますが、今回は差込枠として設定します。
  • LyxType ……ヘルプによるとcharstylecustomelementendの4つの値が取れるらしいです。charstyleelementを選択すると、右クリックメニューの文字様式内にコマンドが出現します。customの場合は挿入>拡張差込枠に登録されます。
  • MultiPar ……枠内での複数段落の可否を選択します。LyxTypecharstyleにすると連動して0に設定されます。また、この項目の設定に対してCustomPars(段落設定ダイアログの使用可否)とForcePlain(様式を「標準」に固定)が連動して設定されます。
  • LatexName ……LaTeXに変換したときのコマンド名 or 環境名です。
  • LatexType ……LaTeXに変換するときの挙動を指定します。Commandの場合は\LatexNameコマンドに変換されます。オプションは必要な場合別途指定します。
  • LabelString ……LyXで差込枠を挿入したときのラベル表示です。URL挿入時の「URL」表示部分です。

論文のテキストを流し込む

ちゃんとLyXに認識されているか等のチェックも終わったらひとまず作業は完了です。
あとは手元の論文をスタイルに合わせて流し込むだけですね!(ここからも長い(湧き出るLaTeXエラー(突然の定義競合

merliborn
プログラミングというよりは計算理論の畑にいます。圏論・抽象機械・esolangの話なら少しできます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした