LaTeXを1発でコンパイルするコマンドを作った
LaTeXを1発でコンパイルしたい!!!!!
CSGAdventCalendarの24日目です!!もう4回目ですね,張り切っていきましょう.
明日でラストです!
はじめに
私はplatex環境でtexをコンパイルしているのですが,とにかくタイプセットしてコンパイルってコマンド三回するのがめんどくさい...
なら1発でコンパイルできるコマンド作るっきゃねえだろ????????
要件定義
・LaTeXのコンパイルを一つのコマンドで
・ログファイルは残さない
・ls等のコマンドのようにどこからでも使える
・カレントディレクトリに対して行う
環境
・MacOS High Shierra 10.13.6
.Python3.6.5
ながれ
1.まずは自作コマンドを格納するフォルダを作成します
mkdir ~/Tools
Toolsを作業ディレクトリとします
(作るコマンドを保管する場所をわかりやすくするための処理なので好きなディレクトリで作業してもらって構わないです)
2.command.pyの作成
実行される本体となるcommand.pyを作成していきます
#coding:utf-8
import subprocess
import sys
args = sys.argv
file = args[1]
cut_file = file.split('.')
platex = 'platex ' + cut_file[0] + '.tex'
dvipdfmx = 'dvipdfmx ' + cut_file[0] + '.dvi'
clean = 'rm '+ cut_file[0] +'.dvi '+ cut_file[0] +'.log '+ cut_file[0] +'.aux'
subprocess.call(platex.split())
subprocess.call(platex.split())
subprocess.call(dvipdfmx.split())
subprocess.call(clean.split())
コマンド実行時に入力したファイル名がcommand.pyの実行時の引数となるため最終的にplatex ファイル名
としていたように使える.
引数として与えられたものを変数fileに格納しcut_fileにsplitで拡張子の前後で二つに区切ります.
そして各コマンドを実行するときと同様になるように変数に連結し格納,そして実行しログファイルを最後に消します.
platex = 'platex' + cut_file[0]
としてもokです私は下との統一を図るために
platex = 'platex ' + cut_file[0] + '.tex'
としています
動かせるプログラムは完成したので70%くらいは完了です
5.コマンド化する
ここまできたらあとはどこからでも利用できるようにコマンドにしてあげるだけです
alias コマンド名='実行すること
とすることでalias(別名)を設定してあげることができ,コマンド名を入力することで実行すると定義したものを実行できます.
試しにここではalias ll='ls -l'としてみましょうするとllと入力するだけでls -lを実行できるでしょう.
しかしこのaliasには有効期限があり.ターミナルを終了するとaliasの設定した履歴も消えてしまいます.なのでこのaliasを.bash_profileに記述します
cd ~
ls -al
として.bash_profileがなければ
touch .bash_profile
として.bash_profileを作成してください
あることが確認できた,もしくは作成できたら
open .bash_profile
なりviを使えるならvi .bash_profile
などでファイルを開き
alias tex='python3 ~/Tools/command.py'
のようにalias コマンド名='実行する物'の形で記述してあげてください.
そうするとtex ファイル名.tex
と実行してあげることでtexをpdfに変換することができたのじゃないでしょうか?
*シェルスクリプト(.sh)を起動して何かをするというときはchmodで実行権限を与えるというステップが増えます
以上!!!!!
Author And Source
この問題について(LaTeXを1発でコンパイルするコマンドを作った), 我々は、より多くの情報をここで見つけました https://qiita.com/inatatsu_csg/items/4911f638c81cbb8004fd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .