18/03/18 16:31:35.45 .net
けっきょく、ls-Rというファイルを探して全部消したんです。
理由は、別のものをインストールしたときに、ls-Rを更新しなければ
古いものを読み込み続けるからという理由でした。
ところがそれをすると、
$ texdoc
/usr/local/texlive/2017/bin/x86_64-darwin/texdoc:7: module 'texdoc.main' not found:
no field package.preload['texdoc.main']
[kpse lua searcher] file not found: 'texdoc.main'
[kpse C searcher] file not found: 'texdoc.main'
no file '/usr/local/lib/lua/5.2/texdoc.so'
no file '/usr/local/lib/lua/5.2/loadall.so'
no file './texdoc.so'
と出てしまって、ファイルを見つけられなくなった。pathを通せばいいけど
めんどうなので、結局ホームディレクトリでmktexlsrをしました。
その結果
find /usr/ -name "ls-R"
で
/usr//local/texlive/texmf-local/ls-R
/usr//local/texlive/2017/texmf-var/ls-R
/usr//local/texlive/2017/texmf-dist/ls-R
/usr//local/texlive/2017/texmf-config/ls-R
となりました。 結局消す前と同じものが作られたというわけです。
1002:名無しさん@お腹いっぱい。
18/03/18 22:33:31.94 .net
TEXMF を /usr/local/texlive としたい動機が分からんのだが…
1003:名無しさん@お腹いっぱい。
18/03/18 22:48:25.55 .net
mktexlsrをホームディレクトリでせずに、setenvで
setenv TEXMF /usr/local/lib/texmf
ls -R $TEXMF > $TEXMF/ls-R
のようにやるとして(このままやってもエラーがでる)
どのようにすればよろしいのでしょう?
>>974の4箇所にls-Rがあり、しかもそれをエディターで開いてみたら
ことなった記述が中にされていました。
もうsetenvを使った設定というのはできないのでしょうか?
1004:名無しさん@お腹いっぱい。
18/03/18 22:58:57.01 .net
>>975
kpsewhich --var-value="TEXMF"
で出てくる値を基本、すべていれれば
いいだろうということですね。
それだとそのとおりです。
/use/local/texliveをTEXMFにする理由は
ないです。
それでは
setenv TEXMF /usr/local/lib/texmf
についても同様に考えよということに
なるのでしょうね。
1005:名無しさん@お腹いっぱい。
18/03/19 01:42:27.34 .net
演算能力の高いいまの PC ではどうかわからないけど ls-R ファイルは
昔の PC では TeX のシステムが必要なファイルを直接探すのは非常に時間がかかってそれをどうにか短縮させようということで
TEXMF ディレクトリを決めてその直下に ls-R ファイルを記述することにより検索効率を高めようという狙いの元作成されるファイルです
それを TEXMF の上位ディレクトリである /usr/local/texlive に ls-R ファイルを作成するということは検索効率の低下を意味するんだけど
そういうことわかって setenv TEXMF /usr/local/texlive にしたいわけなのかな?
1006:名無しさん@お腹いっぱい。
18/03/19 08:51:14.92 .net
>>978
考えていたことはtexliveに作れば漏れがなくなるからいいだろう、ということだと思います。
さらに、ls-Rでつくられるものはディレクトリとその子、孫etcのディレクトリ、に
入っているファイル名なので、そのファイル名が大きくなろうと、
ls-Rを作らずに直接ファイルを探しに行く場合よりは早いだろう
と思っています。
他方でsetenv TEXMF /usr/local/texliveだとファイルの読み込みに失敗
しました。
TEXMFが入ってくるところで/usr/local/texliveに置き換わると不都合な設定が
あるのだと思います。
1007:名無しさん@お腹いっぱい。
18/03/19 10:07:06.19 .net
Local Guide to LaTeX for the McKludge PC(ランポートの本に出てくる)
で検索して、
URLリンク(tex.stackexchange.com)
のページが出てきた
1008:名無しさん@お腹いっぱい。
18/03/19 19:19:26.00 .net
>>971
面白そうだから、やってみた
$ diff <(kpsewhich --expand-path='$TEXMF'| sed 's/:/\n/g') <(kpsewhich --var-value TEXMF| sed -e 's/[!{}]//g' -e 's/,/\n/g')
$
両者、全く同じようだな。
1009:名無しさん@お腹いっぱい。
18/03/19 19:53:28.51 .net
クレクレ君は、カンベンしてくれ!
1010:名無しさん@お腹いっぱい。
18/03/19 19:59:07.56 .net
>>979
そうですね texmf.cnf の TEXINPUTS などをみれば TEXMF に依存しているので TEXMF をいじれば TEXIPUTS もいじる必要があると思います。
例えば
TEXMF を /usr/loca/texlive とすると
TEXINPUTS.latex = .;$TEXMF/tex/{latex,generic,}//
を
TEXINPUTS.latex = .;$TEXMF/2017/texmf-dist/tex/{latex,generic,}//
のように変更する必要があるでしょうし、これでは $TEXMF/2017/texmf-local 以下のディレクトリは参照されません。
もし、TEXMF を /usr/local/texlive にすることが可能だとしてもちゃんと TeX が使えるようにする作業は面倒に思えます。
1011:クレクレ
18/03/19 23:05:41.73 .net
zsh 下で texdoc を使うときの zsh の completion 関数ポチ
1012:名無しさん@お腹いっぱい。
18/03/20 01:43:26.64 .net
>>983
そうすると結局mktexlsr以外のものはつかわないでね。
せいぜいそれを実行して出てくるものの部分修正にとどめてね
できるls-Rも普通にls -rをしたときにできるディレクトリのリストとは
ちがうよ。だからls -rをしても無駄だよ。やめてね、
という風にlatexはなっているということですよね。
1013:名無しさん@お腹いっぱい。
18/03/20 01:47:50.89 .net
>>981
自分の場合はそのコードでちがったものが
出た。あとディレクトリの順序がちがってる
1014:名無しさん@お腹いっぱい。
18/03/20 02:29:33.93 .net
>>985
ls-R ファイルの内容は普通に TEXMF ディレクトリで行った ls -R した内容でしょ?
まあ「想定外の使い方は止めてよ」っていうのは TeX に限らず大抵のソフトウェアで当然のことだよね
1015:名無しさん@お腹いっぱい。
18/03/20 06:55:28.49 .net
>>985
ls -r って本当に -r オプション? -R オプションのタイポなのかな?
-r なら -R と異なるのは当たり前かな?
実際 /usr/local/texlive/2017/texmf-dist で ls -R を行った結果を diff してみたけど ls-R ファイルと細かい部分を除き(ls-R ファイルの先頭に「% ls-R -- filename database for kpathsea; do not change this line.」があるとか)同じだったよ
もし本当に ls-R ファイルと ls -R の実行結果が大きく異なるのであれば >>985 さんの TeX のシステムに異常があるんじゃないのかな?
1016:名無しさん@お腹いっぱい。
18/03/20 13:57:26.73 .net
>>988
ありがとう
/usr/local//texlive/texmf-local/ls-R
/usr/local//texlive/2017/texmf-var/ls-R
/usr/local//texlive/2017/texmf-dist/ls-R
/usr/local//texlive/2017/texmf-config/ls-R
の4つのうちの最初の2つについて、
たとえば2つ目については
$cd /usr/local//texlive/2017/texmf-var/
$ls -R >/Users/名前/Desktop/ls-Rの結果
と
mltexlsrをホームディレクトリでした結果の
/usr/local//texlive/2017/texmf-var/ls-R
をエディタで開いて、それをデスクトップにls-R4
の名前で保存して、比較しました。
同じものですね。その結果 ./:が mktexlsrで作ったものには入っているだけでした。
ホームディレクトリでmktexlsrをするということは、
/usr/local//texlive/texmf-local/
/usr/local//texlive/2017/texmf-var/
/usr/local//texlive/2017/texmf-dist/
/usr/local//texlive/2017/texmf-config/
のそれぞれに移ってls -Rをするのと同じことだと
いうことですね。
ちなみに、diffはこういう比較の場合どうちがうんですか?教えていただければ
助かります。上の例のところでkpsewhichの入ったところを変更し
1017:ても エラーが出た。たとえば diff <"ls-R"| sed 's/:/\n/g' <"/Users/名前/Desktop/ls-R2"| sed -e 's/[!{}]//g' -e 's/,/\n/g'
1018:名無しさん@お腹いっぱい。
18/03/20 13:58:41.06 .net
Xどうちがうんですか?
Oどう使うんですか?
の訂正です
1019:名無しさん@お腹いっぱい。
18/03/20 15:39:32.62 .net
>>989
まず
$ diff <(command line A) <(command line B)
というのはプロセス置換というBash代表に一部のシェルにしか備わってない機能だ。
貴兄がどんなOSを使ってるか知らんが、ATXとかなら使えない。
ていうかディレクトリ構造を見るに OS X High Sierra っぽいな。なら bash が規定で使える筈なので、エラーになるのはおかしいな。
1020:名無しさん@お腹いっぱい。
18/03/20 15:40:19.35 .net
s/規定/既定/
1021:名無しさん@お腹いっぱい。
18/03/20 18:17:50.14 .net
ん?
/usr/local/texlive/2017/texmf-dist/ls-R と /Users/name/Desktop/ls-R2 を比較したいなら素直に
$ diff /usr/local/texlive/2017/texmf-dist/ls-R /Users/name/Desktop/ls-R2
じゃダメなん?
1022:名無しさん@お腹いっぱい。
18/03/20 19:08:34.82 .net
>>993
diff "/usr/local/texlive/2017/texmf-dist/ls-R" "/Users/なまえ/Desktop/ls-R2" > /Users/なまえ/Desktop/hikaku2で出てきた/hikaku2には
1,2d0
< % ls-R -- filename database for kpathsea; do not change this line.
< ./:
43423a43422
> man
47495d47493
< .dict.pws
143681d143678
<
183156d183152
< .tex
と書かれてありました。これは比較に思えないけど、比較なんですか?
1023:名無しさん@お腹いっぱい。
18/03/20 19:48:20.33 .net
>>994
>これは比較に思えないけど、比較なんですか?
そうです。しかし、
unified形式がいいなら、diffの代わりに diff -u にする。
context形式がいいなら、diffの代わりに diff -cにする。
1024:名無しさん@お腹いっぱい。
18/03/20 20:33:32.91 .net
もう(LaTeX関係)ないじゃん
1025:名無しさん@お腹いっぱい。
18/03/20 22:49:58.90 .net
>>996
ここはUNIX版だから、
UNIXコマンドでTeXをごにょごにょするのはアリ
1026:名無しさん@お腹いっぱい。
18/03/21 10:56:05.46 .net
TeXのコンパイルにMakefileを活用し始めたけどかなり良いね。
latexmkとかよりも柔軟だし、なによりmakeが一般のプログラム言語にも使われているから情報が多い。
1027:名無しさん@お腹いっぱい。
18/03/21 12:49:53.00 .net
latexmkならlatexmk -pvc directorynamae.tex
でタイプセットすればあとはそのdirectoryname.texをエディターで開いて、
かってに修正して保存するたびに、pdf(Skim使ってる)の画面が新しく
なってどう修正されたかわかるんですか、そういう便利なことを
Makefileを使ってもできますか?
それから
なにとぞ、なにかのページのURLかやりかたを、書いていただけないでしょうか?
1028:名無しさん@お腹いっぱい。
18/03/21 16:53:08.35 .net
>>999
>>998 じゃないけど、
latexmk は便利で、make は自由だから、自由さが欲しければ、make を選んでも不思議ではない。
たとえば、発表用スライド、著作権を加味したインターネット公開用スライド、
配布用articleと3種類のコンパイルを使い分けたい場合、
make pres
make publ
make hand
と自由に分けて、同じソースから異なるものがコンパイルできたら便利じゃないか。
makefileには、sedやawkはもちろん、latexmkすら書くことができるから、
自由に何でもできる。
なお、Makefileの中に、
latexmk -pvc directorynamae.tex
と書けば、ご要望のことはできるよ。
1029:984
18/03/21 20:02:21.58 .net
>>1000
984だが、
同じソースから異なるものをコンパイルするってどうやるんだ?
異なるコンパイルをしようと思ったらファイルに直接その旨を指定しないと
いけないと思うんだが。
それとも何かトリックがあるのかな。
1030:名無しさん@お腹いっぱい。
18/03/21 20:10:17.89 .net
documentclass 書き換えた中間ファイル作れば?
1031:名無しさん@お腹いっぱい。
18/03/21 20:16:43.25 .net
昔から思ってることだけどtexが標準入出力できたら便利
1032:名無しさん@お腹いっぱい。
18/03/21 20:17:41.54 .net
cat hoge.tex | latex - -o - > hage.dvi
1033:986
18/03/21 20:53:09.60 .net
>>1001
> 異なるコンパイルをしようと思ったらファイルに直接その旨を指定しないと
Makefileの中で、platexの前に、sedでソースを書き換えてる行を1行入れれば良いだけ。
例えば、
\documentsclass{beamer}
を
\documentclass[handout]{beamer}
に書き換えるとかなら、
hoge: $(src)
sed -e ’s/\documentsclass{beamer}/\documentclass[handout]{beamer}/‘ $(src) > $(hoge_src)
platex $(hoge_src)
dvipdfmx -V 4 $(basename $(hoge_src))
-rm $(hoge_src)
で、
make hoge
とする。
1034:名無しさん@お腹いっぱい。
18/03/21 20:53:53.54 .net
$ cat ./file.ltx | lualatex --jobname=file
↑こんなことして意味あんのか知らんが。
結局「file」という名前を指定する必要があるし、出力はファイル。
1035:名無しさん@お腹いっぱい。
18/03/21 21:11:10.55 .net
991でsed通す所中間ファイル作らずにすむとか
cat head. list1.tex foot.tex | latex > list1.dvi
cat head. list2.tex foot.tex | latex > list2.dvi
…
とか
1036:名無しさん@お腹いっぱい。
18/03/21 21:13:53.34 .net
>>1006
それだとそうだけど、
fileをテンポラリファイルにして、
全体として標準入出力するラッパーを書けば良いのでは。
T=$(mktemp)
cat > $T
lualatex --jobname=$T
cat $T.pdf
rm $T $T.aux $T.toc $T.log $T.pdf
こんな感じに
1037:名無しさん@お腹いっぱい。
18/03/21 21:17:16.50 .net
昔texが直接pdfを吐けなかった頃、
latex | dvipdfm
みたいにパイプで繋げたら便利かなって思ってた
1038:名無しさん@お腹いっぱい。
18/03/21 21:20:05.13 .net
パイプラインで中間ファイルが必要だなんて、DOSのなんちゃってパイプラインみたいでダサい
1039:名無しさん@お腹いっぱい。
18/03/21 21:23:12.39 .net
unix流だとパイプラインの一部として使えるように実装しそうなのに、なんでそうしなかったのか不思議です
1040:987
18/03/21 21:30:59.11 .net
>>1005
>>1006
これ見て思い付いたが
FNAME=hoge
SRC=$(FNAME).tex
とでもしておいて
other: $(SRC)
cat $(SRC) | sed -e 's/AAA/BBB/g' | platex --jobname=$(FNAME)
とやると一次ファイルを作らずにすむな
$ make other
↑これ、TeX系列だとなんかありもしないファイルを読みこもうとして失敗する。
LaTeX系列だと行ける。TeXとLaTeXでjobnameオプションの処理が違うのかな?
ちょっとその辺分からんが、とりあえずLaTeXしか使わんし、満足だ。
1041:名無しさん@お腹いっぱい。
18/03/21 22:06:58.23 .net
>>1011
派生的なファイルをいくつも作るし、\inputとかもあるし、パイプラインとは親和性低い。
そもそもUNIXとは関係ないOSで開発されたし。
1042:名無しさん@お腹いっぱい。
18/03/21 22:19:00.16 .net
>>1013
\inputこそcatにつないでもらうって言う設計ポリシーもありえたんじゃ
auxとかは、標準入力のときはベースネームをstdに決め打ちにするとか手はある
1043:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1190日 20時間 28分 47秒
1044:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています