[첫화면으로]UseModWiki소스수정/LaTeX플러그인

마지막으로 [b]

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] 사이트를 이용하는 플러그인을 추가로 만들었음.

(다만, 온라인 편집기 사이트에서는 추가로 스타일이나 환경을 설치할 수 없으므로, 사용할 수 있는 수식이 제한적인 것 같다)

1.1. 사용법

/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 \]로 쓰여진다.
문장 중간에서는 latex equation로 쓰여지고, 독립된 수식에서는 latex equation로 쓰여진다.

일단 만들어진 그림 파일은 $UploadDir/latex 디렉토리에 캐시로 저장된다.

1.2. plugin/latex.pl 추가

# latex plugin
# http://www.codecogs.com/latex/eqneditor.php 이용
#
# usage :
#  1) inline:
#    $$ equation $$ - inline
#      or
#    {{{#!latex inline
#     equation
#    }}}
#
#  2) display:
#    \[ equation \]
#      or
#    {{{#!latex
#     equation       - display
#    }}}

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";

    # 옵션 inline 처리
    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">);

    # LWP::Simple이 없으면 온라인 사이트의 변환 결과 주소를 바로 반환 - 느리다
    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 추가

/* latex plugin */
img.latexinline {
    vertical-align: middle;
    display: inline;
}

img.latexdisplay {
    display: block;
    margin: 1em auto 1em 10%;
}

1.4. wiki.pl 수정

sub CommonMarkup {
    ...
### LaTeX 지원
        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. 추가 업데이트 내역

1.6. 사용자 의견

안녕하세요. 모니위키에 LaTeX 설치하는 방법 찾다가 여기까지 왔습니다.
Ubuntu 20.04 LTS 에 모니위키 설치 중인데요,
LaTeX 가 동작하게 할 방법이 있을까요?
아니면 지금 사용하시는 위키를 저도 써 볼 방법이 있는지도 궁금합니다. 감사합니다.
-- 하얀백곰 2022-2-12 1:27 pm
이름:  
Homepage:
내용:
 

위키위키분류

마지막 편집일: 2022-2-12 1:27 pm (변경사항 [d])
941 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기