-
- 1. LaTeX 플러그인
-
-
- 1.1. 사용법
-
- 1.2. plugin/latex.pl 추가
-
- 1.3. wiki.css 추가
-
- 1.4. wiki.pl 수정
-
- 1.5. 추가 업데이트 내역
-
- 1.6. 사용자 의견
-
1. LaTeX 플러그인
기존에서도 /LaTeX 지원 기능이 있긴 했는데, 이건 서버에 LaTeX이 설치되어 있어야 했다.
서버에 설치할 수 없는 경우를 위해서, [Online LaTeX Equation Editor] 사이트를 이용하는 플러그인을 추가로 만들었음.
(다만, 온라인 편집기 사이트에서는 추가로 스타일이나 환경을 설치할 수 없으므로, 사용할 수 있는 수식이 제한적인 것 같다)
- 선택 요구 사항: LWP::Simple 모듈이 있어야 이미지를 캐시로 가져올 수 있다. 모듈이 없으면 매번 저 사이트에서 변환해서 가져온다.
/LaTeX과 동일한 문법을 쓸 수 있다.
inline 수식
$$ 수식 $$
블록 형태 수식:
\[ 수식 \]
또는
{{{#!latex
수식
}}}
$UseLatex
값이 1이면 서버에 설치된 LaTeX을 이용한다. (차후에 이 패치는 아예 제거할까 생각중) 이 값이 0이면 이 패치에 있는 플러그인을 사용한다.
예:
문장 중간에서는 $$ \sum_{n=1}^\infty a_n = \int_0^1 f $$로 쓰여지고,
독립된 수식에서는 \[ \sum_{n=1}^\infty a_n = \int_0^1 f \]로 쓰여진다.
문장 중간에서는 로 쓰여지고, 독립된 수식에서는 로 쓰여진다.
일단 만들어진 그림 파일은 $UploadDir/latex
디렉토리에 캐시로 저장된다.
1.2. plugin/latex.pl 추가
use strict;
use warnings;
sub plugin_latex {
my ($content, @opt) = @_;
my $img;
my $class;
require Digest::MD5;
my $hash = Digest::MD5::md5_hex($content.join('',@opt));
my $imgfile = "$hash.png";
my $dir = "$UploadDir/latex";
my $url = "$UploadUrl/latex";
if ( $opt[0] eq 'inline' ) {
$content = '\inline '.$content;
$class = 'latexinline';
}
else {
$class = 'latexdisplay';
}
my $alt = "latex equation";
my $img_cached = qq(<img src="$url/$imgfile" class="$class" alt="$alt">);
if ( -f "$dir/$imgfile" ) {
return $img_cached;
}
$content =~ s/\r?\n/ /g;
my $src = "http://latex.codecogs.com/gif.latex?$content";
my $img_latex = qq(<img src="$src" class="$class" alt="$alt">);
if ( not eval { require LWP::Simple } ) {
return $img_latex;
}
eval {
CreateDir($UploadDir);
CreateDir($dir);
};
return $img_latex if $@;
my $res = LWP::Simple::getstore($src, "$dir/$imgfile");
if ( $res eq "200" ) {
return $img_cached;
}
else {
return $img_latex;
}
}
1;
1.3. wiki.css 추가
img.latexinline {
vertical-align: middle;
display: inline;
}
img.latexdisplay {
display: block;
margin: 1em auto 1em 10%;
}
1.4. wiki.pl 수정
sub CommonMarkup {
...
if ($UseLatex) {
s/\\\[((.|\n)*?)\\\]/&StoreRaw(&MakeLaTeX("\$"."$1"."\$", "display"))/ige;
s/\$\$((.|\n)*?)\$\$/&StoreRaw(&MakeLaTeX("\$"."$1"."\$", "inline"))/ige;
}
else {
s/\$\$(.*?)\$\$/StorePlugin('latex inline', $1)/ges;
s/\\\[(.*?)\\\]/StorePlugin('latex', $1)/ges;
}
...
}
1.5. 추가 업데이트 내역
안녕하세요. 모니위키에 LaTeX 설치하는 방법 찾다가 여기까지 왔습니다.
Ubuntu 20.04 LTS 에 모니위키 설치 중인데요,
LaTeX 가 동작하게 할 방법이 있을까요?
아니면 지금 사용하시는 위키를 저도 써 볼 방법이 있는지도 궁금합니다. 감사합니다. -- 하얀백곰 2022-2-12 1:27 pm
위키위키분류