- (投稿一覧)LaTeX の数式を mimeTeX で使う
- LaTeX – *数式が得意な組み版システム LaTeX –> mimeTeX プラグイン(CGI)
- mimeTexをWordPressのプラグインなしで使う方法
- mimeTeX を wp-latexrender プラグインで使う (1)
- mimeTeX を wp-latexrender プラグインで使う (2)
- mimeTeX を anlak の dahnielson_mimetex プラグインで使う
(2010.11.07)
本文にハイパーリンクを書くのに、URL(パーマリンク)から自動的にタイトルを補完できないものかと思うのですが、少なくとも、すごく簡単ということはなさそうです。
Google 「wordpress パーマリンクからタイトルを得る とずばり検索してみました。
URLから記事タイトルを取得する方法 « 吟遊詩人の戯言 は「WordpressのブログURL(パーマリンク)からその投稿IDを取得する方法」ということで、5行の php。しかし、WordPress の本文にそのまま埋め込むことはできませんよね。
$tmpPostID = url_to_postid(‘http://www.hogehoge.com/2008/05/1576’); //WPのURLを突っ込むと投稿IDが得られる
if ($tmpPostID> 0) //0の場合がある.0の場合は,記事タイトル無し
{
$tmptitleStr = get_the_title($tmpPostID); //投稿IDから記事タイトルを取得
}
Google 「URLからタイトルを取得 wordpress」 と検索してみます。
記事IDからタイトルを取得したい場合 « for WEB屋 は WordPress の変数を使って3行ですが、同じく。
$post_ID = 10; //記事ID
$post = get_post($post_ID);
$title = get_the_title($post);
記事保存時にリンク先のタイトルを取得するWordPressプラグイン – Rewish というのもありました。同じようなことを考える人はいるものですね。
URLからタイトルを取得してリンクコードを出力する[PHP] オニオンソード!! は HTML ページのフォームに入力して取り出すというもの。
Google 「wordpress 本文にコードを埋め込む」 のはどうにかならないのかと思いましたが、ショートコード API – WordPress Codex 日本語版 という「マクロコード」のようなものがあるようです。しかし、WordPress Codex 日本語版の記述は、初めての人間には直感的に意味がわかりません。
Google 「ショートコード wordpress」 で検索します。
WordPressのショートコードを自作してみる | webOpixel によると、ホントにちょっとしたコードを書きやすいようです。
まとめ:WordPress に標準登録されている 4 つのショートコード – attosoft.info Blog、はじめから組込で入っているものがあるのですね。
ASCII.jp:面倒な処理を1行に!WordPressのショートコードAPI の 2ページ目 にプログラムの解説が簡単に載っています。なるほど、なんとなく様子がつかめてきました。その関連で、ASCII.jp:便利!WordPressショートコードプラグイン3選 に3つ紹介されています。
意外と便利なショートコード | WordPressでサイトを構築するためのTips や WordPressのショートコードをマスターするチュートリアル | コリス など、ショートコードの実例はいろいろあるようです。
ということは、
なんとかできなくはなさそうです。 (^_^)
(2010.11.07)
複数の投稿を関連付けるにはどうすればいいのか、投稿へのリンクを張るのはどうすればいいのか、などを考えていくうちに、パーマリンクの構造をきちんと考えて決定しなければいけないことがわかってきました。
2010.11.07 現在、パーマリンクは
https://www.makisima.org/v3/ 年 / 月 / 日 / スラッグ
という形式にしてあります。v3 は第3巻、Vol. 3 のつもりです。
以下、参考にしたところのブックマーク。
(2010.11.07)
LaTeX プラグインによっては、空白が + に化けることがあるので注意。そういうときは {} を使ってみましょう。
(上の式は現在稼働中のプラグインによって見え方が異なります)
さて、mimeTeX を wp-latexrender プラグインで使う (2) では、mimeTeX の本家 mimeTeX quickstart からリンクが張られている anlak の dahnielson_mimetex.php は本家の公開サーバを使うと書いてきましたが、接続先を自前の mimeTeX に設定すればちゃんと動いてくれます。
本家の公開サーバで動かすには、こちらのやり方の通りです。
要は、cache ディレクトリを作ってパーミッションを 777 にするのと、CGI の URL 設定を現状のものに書き換えるということになります。
変更するのは60行目。
$snoopy->fetch(‘http://www.forkosh.dreamhost.com/cgi-bin/
mimetexpublic.cgi?formdata=’.urlencode($formula_text));
の部分を
$snoopy->fetch(‘http://www.forkosh.dreamhost.com/mimetex.cgi?’
.urlencode($formula_text));
に変更します。
上記は公開サーバの URL になっていますが、この公開サーバは混んでいることが多いので不安定です。自前の mimeTeX があるなら、その CGI の URL に書き換えればよいわけです。たとえば、こんな感じです。
$snoopy->fetch(‘http://www.example.com/mimetex/mimetex.cgi?’
.urlencode($formula_text));
//www.example.com/mimetex/ あたりのパスは自分の環境に合わせて書き換えます。
プラグインの管理画面で表示される説明書きには <tex>~</text> で囲めと書いてありますが、text という誤植が残っていて、さらに <> から [] に仕様変更されているので、実際には[ tex ]~[ /tex ] (空白不要)です。
このプラグインは LaTeX の式をもとに MD5 でキャッシュ ファイル名を生成しています。何らかの原因で一度でも数式キャッシュ画像の生成に失敗すると、壊れた画像を表示できないので、ページ(数式)の表示がおかしくなります。その場合はキャッシュ ファイルを消去して何度かページの再表示を繰り返すと正常な数式が表示されるようになります。
ただし、サーバの設定状況によるのかもしれませんが、当方の環境では、生成された数式画像キャッシュ ファイル (“tex_xxx….xxx.gif”) の所有者が apache、パーミッションが 640 になるのでユーザが削除できません。キャッシュ ディレクトリをユーザが作っていれば、キャッシュ ディレクトリごと削除すればファイルごと削除することは可能です。個別のキャッシュ ファイルを消したい場合、php などで chmod するためのスクリプトを書けばパーミッションを変更できます。
たとえば、 tex_12345abcde67890fghij.gif というファイル名で、パーミッションを 646 に変えるなら、
<?php
chmod (‘tex_12345abcde67890fghij.gif’, 0646);
?>
という内容の、例えば chmod_file.php というファイル名をつけて、このスクリプトをキャッシュ ディレクトリにアップロードして、ブラウザから実行させればパーミッションが変更できます。パーミッションは 8進数表現にするため、646 なら、その頭に 0 をつけて 0646 と書く必要があります。0646 でなくてもよいので、削除したりコピーしたりできるようなパーミッションにすれば O.K. です。
このプラグインは ‘Snoopy.php’ を使っていますが、オリジナルのスクリプトのとおりの Curl にすることもできます。Snoopy になっているところをコメントアウトし、コメントアウトになっている Curl のところを有効にすれば Curl で動きます。もちろん、Curl が動かない環境があるから Snoopy がいるので、動くかどうかは環境しだいです。私のところでは動きました。
(2010.11.06)
(mimeTeX を wp-latexrender プラグインで使う (1) に引き続き)
自前のサーバで mimeTeX を WordPress のプラグインで動かすには、 Using LaTeX in WordPress にある wp-latexrender をダウンロード して mimetex.php と mimetex-plugin.php の2つを使います。ちょっとはまったのでメモしておきます。
デフォルトでは $system_disabled=0;
になっていて、php や設定もそれを前提に書かれています。ところが、私の利用しているサーバでは $system_disabled=1;
でなければ動きません。 $system_disabled=0;
では、サーバには式の画像ファイルが生成されているのですが、エラー表示などはなく、サイトに表示される式は LaTeX のソースコードのままです。しかも画像ファイルの所有者が apache でパーミッションが 640 なので、何も操作ができません(画像ディレクトリごと削除はできたのですが)。
$system_disabled=1;
で動いたのはいいのですが、画像ディレクトリにファイルが生成されなくなったようです。一体全体どうなっているのだろうかと疑問だったので、少々調べてみました。
まず $system_disabled
ですが、これは system() を使うかどうかという設定です。じつはこの system()、mimeTeX の本家 mimeTeX quickstart で、使ってくれるな、と言っているものなんですね。OS のシェルのコマンドを実行させる関数で、セキュリティがらみでトラブルの元になります。その(ちょっと敬遠したい)システム関数を使うのが wp-latexrender の mimetex プラグインのデフォルトです。
mimetex.php のコードを眺めると、そのシステム関数を使うのを前提でスクリプトを書き、システム関数が使えない環境が出てきたので対策を施したという雰囲気です。そのための条件分岐が複雑で、私には処理内容がよくわかりません。ならば、$system_disabled=1;
に固定して、システム関数を呼び出さないように単純化してしまえばよいのではないかと考えました。
条件固定で書き直したら、異様に単純になりました。ちなみに、どちらでもプラグインとして動作可能です。
ユーザが設定すべき項目を比較すると、オリジナル mimetex.php 冒頭の
// adjust this to match your system configuration
$mimetex_path = "/home/domain_name/public_html/cgi-bin/mimetex.cgi";
$mimetex_path_http = "http://domain_name/mimetex";
$mimetex_cgi_path_http="http://domain_name/cgi-bin/mimetex.cgi";
$pictures_path = "/home/domain_name/public_html/mimetex/pictures";
のうちで、$system_disabled=1;
のときに使っているのは、$mimetex_cgi_path_http
だけです。つまり、http: で指定する CGI の URL だけ指定すればいいことになります。あとの3つの設定は無意味です。pictures ディレクトリ(フォルダ)は使われていないのでした。毎回 mimeTeX CGI が LaTeX の数式を解釈して画像を生成する動作になります。
プラグインのもう一つのスクリプト、 mimetex-plugin.php については特に問題ありません。あえて言うなら、書き換えるべき設定の
include_once('/home/path_to/wordpress/latexrender/mimetex.php');
は
include_once('mimetex.php');
としてしまうのが簡単です。どうせ2つの .php ファイルは同じディレクトリに置きますよね。
mimeTeX を anlak の dahnielson_mimetex プラグインで使う では別のプラグインで mimeTeX を使ってみます。おそらく、そのほうが mimeTeX 推奨です。
(2010.11.06)