Contents |
Skins
- 본인이 제작했던 모니위키 스킨 CalmGray, QuickSilver는 다음 github 계정에서 다운로드 받으실 수 있습니다. 자유로운 유지 보수 환영합니다.
- https://github.com/seongjaelee/CalmGray
- https://github.com/seongjaelee/QuickSilver
모니위키를 사용하는 위키 리스트
- KLDP위키
- 노스모크
- 엔하위키
- MemoRecycle
- ParkPD
- Pyrasis.com
- YY
- FreeFeel.org
- JOINC
- Linu.Sarang.Net
- Hyacinth
- PuzzletWiki
- Coffee Club R
Latex Plugin
기존의 모니위키 LaTeX 프로세서는 몇몇 리눅스 패키지가 설치되어 있어야 합니다. 하지만 리눅스 계정이 아니거나, 혹은 패키지를 설치하는 것을 금하는 계정에서는 이 기능을 사용할 수 없다는 단점이 있습니다. 이를 보완하고자 codecogs에서 제공하는 Online LaTeX Equation Editor를 사용하는 플러그 인을 만들었습니다. 이 기능은 codecogs 사이트에서 직접 LaTeX를 컴파일 하여 그림파일로 만들어서 자신의 사이트의 링크를 넘겨주는 방식으로 동작합니다.
인터넷에 연결 되어 있지 않은 상황에서나, codecogs 사이트가 폐쇄되는 경우에는 그림이 깨져서 나오게 될 수 있습니다. 하지만 위키에는 라텍스 기존 수식이 그대로 남아 있기 때문에 이러한 경우 플러그인 코드만 조금 바꿔주면 다시 원활하게 사용할 수 있을 것입니다. codecogs와 동일한 기능을 제공하는 사이트도 여러 군데 있고요. (그러한 경우에는 그냥 라텍스 원 식을 보여주는 방법으로 코드를 수정하는 것은 어떨까?)
plugin 디렉토리에 다음 파일을 생성하고 latex.php 이름으로 저장합니다. 옵션에 따라 해상도, 크기, 글꼴을 원하는 대로 바꿀 수 있으니 원 사이트를 참고하여 입맛에 맞게 수정하기 바랍니다. (이러한 옵션을 메크로에다가 집어넣는 방법도 생각해 볼 수 있지 않을까?)
<?php
function macro_latex($formatter, $value) {
return "<img src=\"http://www.codecogs.com/png.latex?\dpi{80} ".$value."\">";
}
?>
다음과 같이 사용하시면 됩니다.
[[latex((1 + x)^n = 1 + \frac{nx}{1!} + \frac{n(n-1)x^2}{2!} + ...)]]
한 가지 불편한 점은 아랫첨자가 있는 수식과 같이 기준선 아래에 무언가 있는 수식을 넣었을 때에 그림 파일의 기준선과 글과 정렬이 되지 않습니다. 이는 LaTex를 그림 파일로 변환하는 과정에서 그림을 자르는 범위를 무조건 최소화 하려고 하기에 생기는 문제이며, 기존의 LaTex 플러그 인이나 codecogs 플러그 인 모두에서 나타납니다. 외부 서비스를 가져다 쓰는 이상 이 부분은 어떻게 할 수가 없군요.
Syntax Highlighter Plugin
최신 코드 다운로드
여기에서 3.0.83 버젼 코드를 다운받아 local 디렉토리에 압축을 풀고, 폴더명을 SyntaxHighlighter로 수정합니다. 여기서 대소문자 구분을 제대로 하지 않으면 문제가 생기는 경우도 있으니 대소문자를 정확히 지켜 주세요. 제대로 압축을 풀면 모니위키가 설치된 디렉토리에서 다음 파일이 보이게 됩니다.
- local/SyntaxHighlighter/MIT-LICENSE
한 가지 제 실력이 미숙해서 원 소스 코드를 고쳐주셔야 할 부분이 있습니다.
// SyntaxHilighter/src/shAutoloader.js의 38번째 라인 sh.autoloader = function() sh.autoloader = function(arguments)
이 부분은 함수의 인자로 배열을 넘겨주어야 하는데 여기서는 인자 묶음 (arg0, arg1, arg2...)을 받아들이기에 생기는 문제입니다. 배열을 풀어서 인자 묶음으로 한꺼번에 넘길 수 있는 방법이 존재할까요?
sh.js 파일 수정
local/js/sh.js 파일 수정
if ( typeof _ == 'undefined') {
_ = function(msgid) {
return msgid;
};
}
function shOnload() {
var head = document.getElementsByTagName("head")[0];
var syntax = {
'cpp' : 'Cpp',
'c' : 'Cpp',
'diff' : 'Diff',
'c#' : 'CSharp',
'c-sharp' : 'CSharp',
'csharp' : 'CSharp',
'css' : 'Css',
'jscript' : 'JScript',
'js' : 'JScript',
'javascript' : 'JScript',
'java' : 'Java',
'php' : 'Php',
'python' : 'Python',
'ruby' : 'Ruby',
'xml' : 'Xml',
'xhtml' : 'Xml',
'html' : 'Xml',
'plain' : 'Plain',
'text' : 'Plain',
'txt' : 'Plain'
};
var syntaxToLoad = [];
var tags = document.getElementsByTagName('pre');
for (var i = 0; i < tags.length; i++) {
// c는 가장 마지막에 검사해야 한다. 그렇지 않으면 csharp도 c로 넘어가 버릴 테니까.
var m = tags[i].className.match(/wiki\s+(cpp|diff|c#|csharp|c-sharp|css|java|jscript|js|javascript|php|python|ruby|xml|xhtml|html|plain|text|txt|c)/);
if ( m ) {
var brush = syntax[m[1]];
tags[i].setAttribute('name','code');
tags[i].className = 'brush: ' + brush.toLowerCase();
syntaxToLoad[brush] = 1;
}
}
var jsToLoad = [];
for (var s in syntaxToLoad) {
jsToLoad.push(s.toString().toLowerCase() + ' ' + _url_prefix + '/local/SyntaxHighlighter/scripts/shBrush' + s + '.js');
}
if (jsToLoad.length == 0) {
return;
}
var css = document.createElement('link');
css.type = 'text/css';
css.rel = 'stylesheet';
css.href = _url_prefix + '/local/SyntaxHighlighter/styles/shCoreDefault.css';
css.media = 'screen';
head.appendChild(css);
SyntaxHighlighter.autoloader(jsToLoad);
SyntaxHighlighter.defaults['toolbar'] = false;
SyntaxHighlighter.all();
// 이 부분이 제대로 동작한다면 shCore.js와 shAutoloader.js도 동적으로 로딩할 수
// 있을 것입니다만, IE에서는 제대로 동작하지 않는군요.
/*
var js = document.createElement('script');
js.type = 'text/javascript';
js.src = _url_prefix + '/local/SyntaxHighlighter/scripts/shCore.js';
head.appendChild(js);
js = document.createElement('script');
js.type = 'text/javascript';
js.src = _url_prefix + '/local/SyntaxHighlighter/src/shAutoloader.js';
js.onload = function() {
SyntaxHighlighter.autoloader(jsToLoad);
SyntaxHighlighter.defaults['toolbar'] = false;
SyntaxHighlighter.all();
};
head.appendChild(js);
*/
}
(function () {
// onload
var oldOnload = window.onload;
if (typeof window.onload != 'function') {
window.onload = shOnload;
} else {
window.onload = function() {
oldOnload();
shOnload();
}
}
})();
Config.php 수정
$javascripts에 다음을 추가시켜 주시면 됩니다. 대소문자에도 영향을 받기도 하니 주의하시기 바랍니다.
- 'js/sh.js'
- 'SyntaxHighlighter/scripts/shCore.js'
- 'SyntaxHighlighter/src/shAutoloader.js'
Theme 바꾸기
위의 sh.js 파일에서 다음 줄만 바꿔 주시면 됩니다.
css.href = _url_prefix + '/local/SyntaxHighlighter/Styles/shCoreDefault.css';
가능한 옵션으로는 다음 사이트를 참조하여 주시기 바랍니다.
사용법
다음과 같이 쓰면 됩니다.
{{{#!plain cpp
int main() {
return 0;
}
}}}