\chapter{\TeX} % 第十一章
■ このスレッドは過去ログ倉庫に格納されています
ありがとうございます。自宅に戻り次第、$ platex ./main.tex をやってみます。
フルパスで\input{/home/hoge/TEX-DOC/Math/math-200701.tex}は、
フルパスで\input{/home/hoge/TEX-DOC/Math/main.tex}の間違いでした。 読み込んでいる begin.tex などは PDF に表示させたいただの文字列の羅列(TeXコマンドを含む)でいいのかな?
\begin{document} の前に \input すればどんな OS だろうとエラーを吐くんじゃないのかな?begin.tex に仕掛けがあるのならそれを公にしないとなぁ
file_1.tex 等が \documentclass や \begin{document} 等を含みそれ単体でコンパイルできるものならばあるスタイルファイルを用いればできたんじゃないかと… 以外とjsarticleが見つからないんだったりして エラーメッセージの意訳じゃなくて原文そのまま貼り付けた方がいい >>480
/Dev/nullにリダイレクト
せっかく「美しく組めなかった」って教えてくれてるのに、気にしなくていいの? すっごく古いTeXのファイルって往々にして\byeコマンドが付与されてないんだけど
なにか理由あるのかな。
個人的な予想だと、「組版に失敗したときにメモリやハードディスクが勿体ないので
失敗したと分かったら即座に結果を破棄できるようにしている」というものなんだけど
なにせその時代に産まれてすらいないので なんとも……。 >>481
>そんはファイルがないからコンパイルできない
だから、最重要な情報である「どのファイル」をなぜ隠蔽するのか?
問題の切り分け
1. TexmakerやTexstudioなど(の設定)に問題がある
2. TeXLiveの状態に問題がある(インストールが不完全)
3. そもそもtexファイルが間違い
どれであるかをまずははっきりさせるために、
>>482
の結果をそのままペーストする(ユーザ名などは適当に匿名化して)。
エスパーすると、単に存在しないファイルをinputしようとしているだけと思うが。
ケアレスミスをOSのせいにしているだけと推測。 ひとつ思いついた。
Windowsとその他のOSの大きな違いとして、
Windowsはcase insensitiveなのに対して、他のOSはcase sensitive。
つまり、Windows以外では、a.texとA.texとa.TEXとA.TEXは全て異なるファイル。
A.TEXが存在するところで、\input{a.tex} としても当然エラーになる。
A.TEXは存在してもa.texは存在しないから。 halignとかで表を作るときに
行の高さを文字の3倍にする方法ってあるかな。
| AAA | BBBB |←こういう表組みを
| | |
| AAA | BBBB |←こういうのにしたい。(もちろん罫線は連続させたい)
| | | >>491
その case insensitive/sensitive の状況は、
(一般ユーザにとって、より全く意識する必要がないようになったけど、)
TeX Live 2018ではさらに複雑になっている。
大まかにいうと、
1. OSのファイルシステム側が大文字小文字を区別するかどうか、
2. kpathsearch libraryで大文字小文字を区別するかどうか、
で、TL18から libkpathseaがデフォルト設定だと大文字小文字を区別しないようになった。
なので、個人的にはファイルシステム側がどうであれ、
大文字小文字を区別すべきだと考えているので、
texmf_casefold_search = 0
を(どこかの段階の)texmf.cnfにわざわざ与えている。
詳細は、texmf-dist/web2c/texmf.cnfの該当箇所を読んでちょい。 >>492
multirow パッケージとかどう?
$ texdoc multirow
でマニュアルを見てみてちょ >>492
halignって素のTeXのコマンドじゃね?
LaTeXにはもうちょっと扱いやすい表組みコマンドがあるからそれを使え。
ところで
\vbox{\vss \hbox{AAA}\vss}
↑こういう風なボックスを作るのはどうだろう。 >>496
TeX Tricksではその方法だったな。 haignってプリミティブなのね。
かなり複雑な仕様だからマクロかと思ってた。 TeXで「-」ならハイフン,「--」ならen-スペース,「---」ならem-スペースみたいな挙動を
マクロとして実装できますかね。
具体的にはある環境の内部で「<=」という文字列を「≤」に(自動的に)変換したいんだけど
これをTeXと別のスクリプトではなくてTeX自身で処理できたら嬉しい。 なんか勝手に 5chan_nel っての付加されたんだけどw
そういう仕様なのか? >>494
それにします。
>>495さま、>>496さまありがとうございます。
いまだに非LaTeXの因習から抜け出せない古い人間なので
はやくLaTeX風の作法を身に付けたいです。 docmuteで長い文章を分割して部分ごとにコンパイルして書き進めてるんだけど, 個々のファイルで使ってたlabelをciteで引用してたのってinputで1つに纏めたコードをコンパイルして出来たpdfでは反映されないのな... マジかよ。
コンパイルに時間がかかるから、1ページ単位で作ってるから知らなんだ。 \include{<file>}じゃなくて\input{<file>}でもそうなるのか……。 \DeclareFontShapeのオプションで無理矢理に斜体にすることってできますか。
\DeclareFontShape{JT2}{hmc}{m}{it}{<-> XXX}{}
↑こういう指定のXXXの部分でfakeslantedなフォントを作成したいです。
LuaTeXやXeTeXではOpenTypeを無理矢理斜体にするオプションがあると思うのですが
同じようなことを(u)pLaTeXでもしたいです。 >>509
NFSSのfontの意味で、和文書体に対する slant を作る意味って、
実用上を考えてもあまり意味がないと思うけれども、
Tikz を使って、擬似的に斜体にすることは、できるよ。 >>510
TikZを使うという手がありましたか。
ちょっとやってみます。 >>511
本質的なコードは、xslant を使うだけだったと思う。
\node[xslant=0.167] (どっか) {擬似的にslantedにしちゃうよ!} >>512
あーそれってもしかして\textitを上書き定義するんですかね。
できれば\DeclareFontShapeにおいて定義して
LaTeXのフォント選択機能を活用していんですけど
やっぱ無理ですかね。 ちょっとTFMの弄りかた調べてみたら
自分には無理そうだったんで大人しくXeTeX使います。 ただの興味から訊くんですけど、LaTeXのパッケージやTeXのバンドルとかで「有償」のものってありますかね。
例えばLinuxは基本全てオープンソースかつ無償ですがRHのような特例もありますし
同じような状況もありえそうですけどね。 あー。なるほど。それこそmorisawaパッケージはモリサワフォントを購入しないと無意味ですもんね。 MacでTexshopを初めて使ったんですが、Beamerで日本語を使えません。対処法を教えてくださいませんか。 アドバイスありがとうございました、爆破せずとも解決できました。 UNIX版でMacのことを聞いてくる人って何なの?
MacをUNIX的に使っているならアリかもしれないけど。
# とMacから書き込んでみる >>516
scientific workplaceがそうなんじゃない? >>523
へえ。TeXWorksみたいなエディタでかつ有料なんだね。
OSSを(サポート面とかが理由で)使いたくない企業にとってはいい選択子かもね。
日本語使えないらしいがw LaTeXで使える欧文フォントで
・Computer Modernとほとんど同じ(字面が細くて幅がすこし広い)
・合成でない太字とイタリック体、機械変形でないスモールキャプスがある
で
・T1エンコーディング
・「@」がTimes系のように幅狭
なものを探しています。
このようなフォントをご存知でしたら、どうか教えてください。 >>525
基本的にLatin Modernフォントを使うようにして、
「@」だけ、newtx フォントを使うとかすればどうですか?
そのような挙動をする仮想フォントを作れば、いけますよ。 \ifxetexっていうコマンドを乗っ取って無条件で真になるようにできない?
pdfxっていうパッケージをupLaTeX&dvipdfmxで使いたいんですけど
pdfxパッケージはdvipdfmxを使うのはXeLaTeXだけと思っているようでコンパイルが成功しない。
(upLaTeXがpdfLaTeXと誤認識されて\pdfXXXコマンドが用いられる。
当然そんなものはupLaTeXにはないので刎ねられる)
そこでpdfxパッケージに(upLaTeXを)XeLaTeXを使っていると偽りたい。 >>528
Twitterで反応してくれた人がいるのか
だけどちょっとやりたいことと違う気がする
やっぱり直接出力したいな……。
まあ正直、いざとなれば\special{pdf:を使いまくって
自力でPDF/Aに適合したPDFにすりゃいいんだけどねw PDF/AはTeXで作るのは難しいんじゃないかな。
タグを付けたりメタデータをしっかりしなきゃいけないんでしょ。
規格を読んだわけじゃないからなんとも言えないけど
upLaTeX&dvipdfmxで一先ず出力してからPDFCreater(OSSだよ)で
後からPDF/Aにするほうがいいんじゃない? >>529
PDF/Aは upLATeX&dvipdfmx で素直にやるのは難しいだろうな。
開発段階の tagpdf パッケージなら、pdflatex, lualatex で試せるよ。 >>531
529じゃないけど)あれってhyper系列の延長?
hyper*パッケージって「行儀悪い」って聞くし,
実際セクションの定義とかを書き換えられてることに気が付かず苦労した
嫌な思い出がw \newtoksと\defってどういう場合に使い分ければいいんですかね STIX2パッケージの存在に最近気が付いた。
unicode-mathの「Unicodeで定められた全数式が利用できる」っていう部分だけが欲しいな
というかそれ以外要らないからupLaTeXで使いたい,と思っていたところにこれは嬉しかった。
Unicodeの数式を使いたくてかつupLaTeXを使ってる人はSTIX2パッケージがお勧め。 >>534
なんかフォントがlatin modern系と合わないな >>535
unicode-math版Latin Modernを作ればいいんじゃないか? 実はもうある
http://cm-unicode.sourceforge.net/
Computer Modernの字形をそのままにUnicodeに拡張したもの
もちろんUnicode数学表現も使える(と思う……試してないからなんとも) bxjsarticleで\sectionの後ろに「節」という文字を付けたいのですが
プリアンプルで
\renewcommand{\postsectionname}{節}
と定義しても反映されず なぜか
\begin{document}の後ろでやると反映されるんですけどこれおかしくないですか。 TeXで\somecs{XXX:AA}という入力に対して
\somecsX{XXX}\somecsA{AA}
↑こういう出力を返すマクロを作ろうと思ったら
\def\somecs#1:#2{\somecsX{#1}\somecsA{AA}}
という定義のマクロを用意すればいいですよね。
これをLaTeX2eの利用者定義命令で実現するにはどうすればいいですかね
できればLaTeX2eで\defは使いたくないのです。 >>539
> LaTeX2eの利用者定義命令
の定義は、何だと据えておられるのでしょうか? >>540
LaTeX2eのマニュアルusrguide,clsguideに従うと
\newcommandで定義された命令のことです。 もしかして,個人の勝手な定義だと思われたのでしょうか。
これは私個人ではなくLaTeX3プロジェクトチームが公に定義している用語です。
もちろん日本語にしたのは私ですが。 なんで\newcommandで定義できないかなー
って書かないんだろう…
オレオレ用語を使って逆ギレされてもな > これは私個人ではなくLaTeX3プロジェクトチームが公に定義している用語です。(ドヤ
> もちろん日本語にしたのは私ですが。(ズコッ >>541
該当定義を確認できました。
では、逆に質問します。
その該当定義の下で、 >>539 は実装可能だと思いますでしょうか? \newcommand に拘るのであれば最初の \somecs{XXX:AA} は \somecs{XXX}{AA} と定義すべきなんじゃない? 今のtexはなんで実装されているのですか?
Wikiによるとクヌース先生がWEBという言語で書いて、それをPascalやCに変換しているとありますが、
今現在もクヌース先生がWEBで書いたTexをCにコンバートしてそれをコンパイルしたのを使ってるのですか?
だれかがC++で書き直してそれが使われてるとかじゃないのですか? わからないことがあるので教えてください。
1: \makeletter
2: \def\kenten#1{%
3: \ifvmode \leavemode \else \hskip \kanjiskip\fi
4: \setbox1= \hbox to \z@{・\hss}%
5: \ht1= .63zw
6: \@kenten#1 \end}
7: \def \@kenten#1{%
8: \ifx#1 \end \let\next=\relax \else
9: \raise .63zw\copy1\nobreak #1 \hskip\kanjiskip\relax
10: \let\next= \@kenten
11: \fi \next}
12:\makeatother という奥村先生の本の圏点を入れるコードです。
\kenten{強調}で強調の上に点が現れます。
\kentenと\@kentenの二つのコードからなっています。
わからないところは
A: 3:の\hskip \kanjiskip
ですが、hskipにはデフォールとで数字が入っていてその分だけスキップ
するのでしょうか?
B: それから
4:のto \z@{・\hss}ですが、ボックスの幅を0ポイントとしてしまうと、・\hss
自体が幅がないので潰れてしまってなくなるんじゃないかなと思うんですが、
なくならないのはなぜでしょうか?
C:
9: \raise .63zw\copy1\nobreak #1 \hskip\kanjiskip\relax
のところですが、まず\raise .63zw\copy1\nobreakまでが「・」を上に
書く部分ですよね。#1はkenten{強調}とした場合の「強調」(kentenというコマンドの
引数)です、この9の部分は強調の上に点を描くということをしているのでしょうか?
(「・」の部分はraiseをし、そのあとはそうしてないことによって)
D:
最後の@kentenもわかりません。tail recursionというものだそうです。
幾らかでも教えていただけるかなと期待をして書き込ませていただきました。 奥村先生の本面白いですよね。
latex2e入門ですが、難しいコードも書いてある。(そしてそのコードに
ついての説明は十分ではない。(十分に書くと長くなりすぎるから))
独習latex2eで調べながら理解しようとしています。(まだ最初の方ですが) D: ですが、まずは動作の概要をつかむために次のような定義で \kenten{強調} とするとどうなるかを考えてみてはいかがでしょう?
\def\kenten#1{
\@kenten#1 \end}
\def\@kenten#1{
\ifx#1 \end \let\next=\relax \else
\let\next= \@kenten
\fi \next} >>552
を書き直しました。>>552はバグを含んでいます。
>>555さん 少し待ってください
\documentclass{jsarticle}
\begin{document}
\makeatletter
\def\kenten#1{%
\ifvmode\leavevmode\else\hskip\kanjiskip\fi
\setbox1=\hbox to \z@{・\hss}%
\ht1=.63zw
\@kenten#1\end}
\def\@kenten#1{%
\ifx#1\end \let\next=\relax\else
\raise.63zw\copy1\nobreak #1\hskip \kanjiskip\relax
\let\next=\@kenten
\fi\next}
\makeatother
\kenten{強調}
\end{document} >>555
\documentclass{jsarticle}
\begin{document}
\makeatletter
\def\kenten#1{%
\@kenten#1\end}
\def\@kenten#1{%
\ifx#1\end \let\next=\relax\else
\let\next=\@kenten
\fi\next}
\makeatother
\kenten{強調}
\end{document}
だとエラーが出て概要すらつかめません。 >>557
それをコンパイルすることに意味はありません(実行結果は何も表示しないです)
\kenten{強調} は \@kenten 強調\end に置き換えられ次に…と頭で考えてみてくださいということです >>552
D に関しては、for 文の例えば \@tfor を使っても実現できると思う。
要するに、1文字ずつ取ってきて、
頭の上にちょこんと「・」を乗せる
ことを繰り返せば良いだけなんだから。 pxrubyパッケージの圏点コマンドでは不満足なんすかね。 >>560
圏点を打ちたいから質問をしているのではなく奥村氏の \kenten コマンドの仕組みを知りたくて質問しているんだから pxruby がどうたらとか関係ないんじゃないのか? TIPAパッケージにおいて提供されているコマンドの内、
なんの環境でもなく使える\textbetaなどのコマンドを無効にするにはどうすればいいですかね。
safeオプションなどは少し違う用途のようですし。
ギリシア語と混在させると、βがTIPAフォントのベータ記号になってしまうのですが
これをギリシア語向けのフォントで表わしたいのです。
ギリシア語が出現する度に{\fontencoding{LGR}\selectfont β}などとはしたくないです。
英語と日本語の混合文書を処理するように、何ら特別な処理なくギリシア語を扱いたいのですが
TIPAパッケージと共存できません……。お力を貸していただけませんか。 >>558
すみません。
もう少し教えてください。
\@kenten 強調は
\nextに\@kentenを入れて、
それを繰り返していると、
強調が\endになるので、その時には
\nextに\relaxを入れて、\nextを持って
\@kenten強調とするということですか?
具体的にどういう感じになるんでしょう?
強調という二文字のうち一つずつ処理していく
形になるのはどうしてでしょう? >>563ですがあとは自分で考えるというか
そのうちできるようになる時には
できるようになると思います。
返信は入りません。 LaTeXで均等割をするとOverfull \hboxとかの警告が生じるのが気になります。
欧文では文字の間がその文字自身と同じくらい開くことは不恰好ではあるのでしょうが
和文の組版においては自然な配置であり警告を出してほしくないです。
いま「\均等割」という命令を\makebox[#1][s]{#2}などという定義をして使っているのですが
これに手を加えてOverfull関連の警告が「\均等割」マクロの処理中に発生しないようにできないですか? >>563
\kenten{強調} は \@kenten 強調\end と置き換えられ、\@kenten の定義(\def\@kenten#1{...})からとり得る引数の個数は「ただ一つ」である。
このことから \@kenten 強調\end は「 1 」は放置され、\@kenten#1{...} の引数 #1 には「 2 」が代入される。
みたいな感じかな?「 1 」「 2 」に入るものをそれぞれ考えてみてください。
ヒントって難しいね^^; >>566
ありがとうございます。
まだわかりません。僕にはまだこの
コードは早いと思いました。
奥村先生の本、結構難しいですね。
LaTeX2ε辞典 増補改訂版をさらに買いました。
こういうコードは我慢して、解読しようと
しないと上達しないのはわかっているので
もう少し粘ってみようかなと思います。 >>567
勉強するならこんなのもあるよ
「LaTeX2eまくろの八衢」オンライン版 http://xymtex.my.coocan.jp/fujitas2/yatimata2/index.html
これの書籍版のお世話になった人も多いんじゃないかな? >>563
引数の扱いについて勘違いしているんじゃないのかな?
例えば \def\tmpcs#1#2{#2#1} において
\tmpcs あいう いろは
の出力結果を想像したものと実際にコンパイルたものが一致しているか確認してみてはどうだろう? >>569
ありがとうございます。
\defの使い方については理解しているようです。
\def\tmpcs#1#2{#2#1}
\tmpcs あいう いろは
では、
いろは あいう
がでます。それは知っていました。
>>568
1.1を読みました。わかりやすいですね。
>>555さん
\nextというコマンドなのですが、>>555さんが
適当に書かれた文字列(というのか
要するに\nextという文字の並び)は
555さんが適当に作ったものなのでしょうか?
それとも最初から\nextはTeXコマンドと
して入っているものなのでしょうか?
申し訳ありません。教えてください >>570
少なくとも \next というのは、
「\その場でほかと干渉しない文字列名(csname)」でOKです。 闇だな
(La)TeXを使うのを止めて、SATySFi か Vivliostyle を使ったらいいとおもうよ >>570
\def\tmpcs#1#2{#2#1} において \tmpcs あいう いろは とするとその出力は「いあう いろは」だよ
「#1」に「あ」「#2」に「い」が代入されて「あ」と「い」の順序が逆になる
\tmpcs{あいう}{いろは} とすると「いろはあいう」だけどね
波括弧{}でグルーピングしていないもの(大雑把な言い方だけど)は一文字づつ処理される(ただし制御綴は制御綴のまま)
これを参考 >>557 の \@kenten 強調\end はどうなるかを考えてみると理解できるようになるんじゃないかな? >>573
Knuth先生自身が著書の冒頭でgameと呼んでたのを思い出して
knuth name of the game
でぐぐてみたら全文PDF(ライオンイラスト除去版)が出てきた
ttp://www.ctex.org/documents/shredder/src/texbook.pdf
>>5 のリンク集に加えてもいいのかな
(>>568 のurlも) LaTeXってフォントに関してはNFSSという構造化された体系があるのに
\sectionや\partなどの文書構造に関しては何ら体系的にアクセスする手段を持ってないよね
それこそ\DeclareHeaderみたいなコマンドが欲しい。
「どんなフォントを使うか」「見出しのあとに改行するのか」
っていう設定を\sectionコマンドを直接再\defしたりすることなく行えればいいのに。
LaTeX3では追加されることを期待している。 >>577
> 「どんなフォントを使うか」「見出しのあとに改行するのか」
各種見出しは、そんな単純に行かないよ。 >>578
そう?
カウンタと相互参照に関してはLaTeX側がアクセスする手段を提供してくれているし
\sectionや\chapterの定義だって多くのクラスファイルで10行そこらでしょ。
もちろんさらに細かい定義に分割できるので
それらを合わせれば複雑になってしまうけど。
でもそれを言うならフォント選択機構だって単純ではないし。 >>580
型に決まった体裁の見出しなら、単純。
一般的に、各種見出しの体裁は、なんでもありな自由です。 すいません。この春からLATEXを使うこととなったのですが、
TeX Liveの最新版はどこで入手できますか?
「TeX Live 2019」などという語句をWebで検索して探したのですが
その用語は見付かるもののISOのダウンロードリンクが見付かりません。。。
学校側から渡された教本には「TeX Live 2013(年の部分は適宜置き換えてください)」とあり
TeX Live 2019をダウンロードしようと思ったのですが
同書にあるhttps://www.tug.org/texlive/というリンクからTeX LiveのISOファイルをダウンロードすると
TeX Live 2018という去年のバージョンになってしまいます。
TeX Liveを導入しようとしているOSはUbuntuです。
多分LATEXのプロからすればすごく下らないことだと思うのですが
どうかご教示おねがいいたします。 ■ このスレッドは過去ログ倉庫に格納されています