문법
이 페이지에서는 지금까지 개발된 윤익희 문법을 설명한다.
1 위키 문법
이 문법은 위키와 비위키 페이지 모두에 적용된다.
1.1 헤더
윤익희 코드= 페이지 제목 가장 상위레벨의 제목은 페이지 제목이다. == 섹션 1 두번째 레벨의 제목부터 목차에 추가된다. ==! 목차에 나타나지 않는 섹션 느낌표를 붙이면 목차에 추가되지 않는다.윤익희 출력
페이지 제목
가장 상위레벨의 제목은 페이지 제목이다.
2 섹션 1
두번째 레벨의 제목부터 목차에 추가된다.
목차에 나타나지 않는 섹션
느낌표를 붙이면 목차에 추가되지 않는다.
2.1 텍스트 스타일
윤익희 코드//기울어진// **굵은** ''코드'' --줄 그은-- __밑줄 그은__ !!형광펜!! //**''--__!!모두 적용!!__--''**//윤익희 출력
기울어진 굵은 코드
줄 그은 밑줄 그은 형광펜
모두 적용
2.2 페이지 링크
윤익희 코드[[페이지]], [[페이지|새 이름]]: 윤익희의 페이지로 링크를 생성한다. [[ 페이지 ]], [[ 페이지 | 새 이름 ]]: 페이지 이름과 새 이름 앞뒤의 공백은 무시한다. [[-페이지_+이름]]: 특수문자들(`~!@#$%^&*=+\;:'",/?()[]{}<>, 공백, 탭)은 공백으로 변환된 다음 $PAGE_NAME_STYLE 설정에 따라 하이픈이나 언더스코어로 변환된다. 여러개의 특수문자가 연속으로 입력되면 하나의 공백으로 변환된다.윤익희 출력
2.3 페이지 파일 링크
윤익희 코드{{.}}, {{./}}: 현재 페이지의 디렉토리로 링크를 생성한다. {{파일}}, {{./파일}}: 현재 페이지의 파일로 링크를 생성한다. {{페이지/}}: 페이지의 디렉토리로 링크를 생성한다. {{페이지/파일}}: 페이지에 있는 파일로 링크를 생성한다. {{페이지/이름에 //}}, {{페이지/이름에 //파일}}: 파일링크시 디렉토리와 파일을 구분짓는 슬래시(/)는 마지막 것으로 간주하고 그 앞의 슬래시들은 페이지이름으로 인코딩된다. 위와 같이 페이지 이름이 슬래시로 끝난다면 슬래시를 두 번 써서 디렉토리를 지정할 수 있다. 또는 /는 어차피 페이지 이름에서 제거되므로 {{페이지/이름에 /}}, {{페이지/이름에 /파일}}로 링크해도 결과는 비슷하다. 단, 출력되는 문자열에 차이가 난다.윤익희 출력
2.4 외부 링크
윤익희 코드<<http://uniqki.isnew.info|Uniqki>>: URL로 링크를 생성한다. [[http://uniqki.isnew.info]]: URL을 페이지 이름으로 입력한다.윤익희 출력
Uniqki: URL로 링크를 생성한다.
http://uniqki.isnew.info: URL을 페이지 이름으로 입력한다.
2.5 이미지 링크
윤익희 코드{{{페이지/이미지}}} {{{페이지/이미지}}}[width:100px; display:block; margin:0 auto;] <<<https://idea.isnew.info/logo.png>>> <<<https://idea.isnew.info/logo.png>>>[width:100px; display:block; margin:0 auto;] {{페이지/이미지}}와 <<https://idea.isnew.info/logo.png>>는 이미지 파일로 링크를 생성하지만 {와 <를 세 개 써서 이미지를 보여 줄 수 있다. 태그를 닫은 후 [] 안에 이미지의 CSS 스타일을 지정할 수도 있다.윤익희 출력
이미지와 https://idea.isnew.info/logo.png는 이미지 파일로 링크를 생성하지만 {와 <를 세 개 써서 이미지를 보여 줄 수 있다. 태그를 닫은 후 [] 안에 이미지의 CSS 스타일을 지정할 수도 있다.
2.6 인용
윤익희 코드인용을 시작해 보자. > 인용할 문장을 "> "로 시작한다. 여러 줄에 걸쳐서 인용이 가능하다. . 문단 나누기도 가능하다. > 인용문 안에 인용문을 넣어 보자. 다음과 같이 둥근 괄호로 시작하고 끝나는 줄은 모두 합쳐져서 인용문 닫기 바로 전에 하나의 출처로 footer 태그 안에 출력된다. (--) (이사람) (저사람) 바로 위의 인용문을 닫고 원래의 인용문으로 돌아왔다. (-- 저자) 연속된 인용문들은 중첩되고 출처가 해당 인용문을 닫기 바로 전에 출력되기 때문에 다음과 같이 토론을 하면 원치 않는 결과가 나온다. > (유저 1) (<http://example.com/user1>) 나는 이렇게 생각한다. > (유저 2) (<http://example.com/user2>) 나는 반대한다. 인라인 cite를 이용해서 다음과 같이 작성할 수 있다. > 토론을 위해서는 둥근 괄호에 둘러 싸인 인라인 cite로 끝내면 된다. (유저 1 <http://example.com/user1>) > 그러면 글 중에 ''''()가 있으면 어떻게 하나? (방문자) > 괄호 앞에 공백이 있어야 하므로 파싱 후 제거되는 빈 폰트명령인 "".''''.""를 괄호 앞에 더하면 된다. 긴 글이 인용문에 중첩되면 점점 좁아지는 단점이 있다. (유저 1 <http://example.com/user1>)윤익희 출력
인용을 시작해 보자.
인용할 문장을 “> ”로 시작한다. 여러 줄에 걸쳐서 인용이 가능하다.
문단 나누기도 가능하다.
인용문 안에 인용문을 넣어 보자. 다음과 같이 둥근 괄호로 시작하고 끝나는 줄은 모두 합쳐져서 인용문 닫기 바로 전에 하나의 출처로 footer 태그 안에 출력된다.
바로 위의 인용문을 닫고 원래의 인용문으로 돌아왔다.
연속된 인용문들은 중첩되고 출처가 해당 인용문을 닫기 바로 전에 출력되기 때문에 다음과 같이 토론을 하면 원치 않는 결과가 나온다.
나는 이렇게 생각한다.
나는 반대한다.
인라인 cite를 이용해서 다음과 같이 작성할 수 있다.
토론을 위해서는 둥근 괄호에 둘러 싸인 인라인 cite로 끝내면 된다. 유저 1 <http://example.com/user1>
그러면 글 중에 ()가 있으면 어떻게 하나? 방문자
괄호 앞에 공백이 있어야 하므로 파싱 후 제거되는 빈 폰트명령인 ''''를 괄호 앞에 더하면 된다. 긴 글이 인용문에 중첩되면 점점 좁아지는 단점이 있다. 유저 1 <http://example.com/user1>
2.7 리스트
윤익희 코드* 총알 리스트 1 * 총알 리스트 1-1 * 총알 리스트 1-1-1 * 총알 리스트 1-2 * 총알 리스트 2: 내용 계속 . 리스트 안에 문단 . 계속 + 숫자 리스트로 바꾸기 + 숫자 리스트 - 거꾸로 숫자 리스트 - 거꾸로 숫자 리스트 : 단어 1: 정의 1 : 단어 2: 정의 2 >를 이용해서 토론을 하다 보면 댓글이 중첩된 인용문으로 처리되어서 점점 좁아지는 문제점이 있다. 다음과 같이 리스트를 써서 해결할 수 있다. : : 토론을 위해서는 단어정의 리스트를 이용해서 공백의 단어를 정의하는 식으로 댓글을 이어 갈 수 있다. -- //유저 1 <http://example.com/user1>// : : 그러면 시작할 때마다 '': : ''를 입력하는 것이 귀찮지 않겠나? -- //방문자// : : 다음에 소개할 ''#regex'' 명령으로 입력을 쉽게 할 수 있다. 뿐만 아니라 긴 글이 리스트에 댓글로 달려도 인용문과는 달리 점점 좁아지는 단점이 없다. -- //유저 1 <http://example.com/user1>// : : 서명은 수동으로 할 수 밖에 없네? -- //방문자// : : 이 역시 ''#regex'' 명령으로 쉽게 처리할 수 있다. -- 방문자 #regex #^((?: )*)@ (.*?)(-- .*[^@])$#\1: : \<span style="color:red;"\>\&\#x21AA;\</span\> \2 \<i\>\3\</i\># @ 토론을 위해서는 단어정의 리스트를 이용해서 공백의 단어를 정의하는 식으로 댓글을 이어 갈 수 있다. -- 유저 1 <http://example.com/user1> @ 그러면 시작할 때마다 '': : ''를 입력하는 것이 귀찮지 않겠나? -- 방문자 @ 여기서 소개할 ''#regex'' 명령으로 입력을 쉽게 할 수 있다. 뿐만 아니라 긴 글이 리스트에 댓글로 달려도 인용문과는 달리 점점 좁아지는 단점이 없다. -- 유저 1 <http://example.com/user1> @ 서명은 수동으로 할 수 밖에 없네? -- 방문자 @ 이 역시 ''#regex'' 명령으로 쉽게 처리할 수 있다. -- 방문자윤익희 출력
- 총알 리스트 1
- 총알 리스트 1-1
- 총알 리스트 1-1-1
- 총알 리스트 1-2
- 총알 리스트 1-1
- 총알 리스트 2:
내용 계속
리스트 안에 문단
계속
- 숫자 리스트로 바꾸기
- 숫자 리스트
- 거꾸로 숫자 리스트
- 거꾸로 숫자 리스트
- 단어 1
- 정의 1
- 단어 2
- 정의 2
>를 이용해서 토론을 하다 보면 댓글이 중첩된 인용문으로 처리되어서 점점 좁아지는 문제점이 있다. 다음과 같이 리스트를 써서 해결할 수 있다.
- 토론을 위해서는 단어정의 리스트를 이용해서 공백의 단어를 정의하는 식으로 댓글을 이어 갈 수 있다. -- 유저 1 <http://example.com/user1>
- 그러면 시작할 때마다
: :
를 입력하는 것이 귀찮지 않겠나? -- 방문자- 다음에 소개할
#regex
명령으로 입력을 쉽게 할 수 있다. 뿐만 아니라 긴 글이 리스트에 댓글로 달려도 인용문과는 달리 점점 좁아지는 단점이 없다. -- 유저 1 <http://example.com/user1>- 서명은 수동으로 할 수 밖에 없네? -- 방문자
- 이 역시
#regex
명령으로 쉽게 처리할 수 있다. -- 방문자
- 이 역시
- 서명은 수동으로 할 수 밖에 없네? -- 방문자
- 다음에 소개할
- 그러면 시작할 때마다
- ↪ 토론을 위해서는 단어정의 리스트를 이용해서 공백의 단어를 정의하는 식으로 댓글을 이어 갈 수 있다. -- 유저 1 <http://example.com/user1>
- ↪ 그러면 시작할 때마다
: :
를 입력하는 것이 귀찮지 않겠나? -- 방문자- ↪ 여기서 소개할
#regex
명령으로 입력을 쉽게 할 수 있다. 뿐만 아니라 긴 글이 리스트에 댓글로 달려도 인용문과는 달리 점점 좁아지는 단점이 없다. -- 유저 1 <http://example.com/user1>- ↪ 서명은 수동으로 할 수 밖에 없네? -- 방문자
- ↪ 이 역시
#regex
명령으로 쉽게 처리할 수 있다. -- 방문자
- ↪ 이 역시
- ↪ 서명은 수동으로 할 수 밖에 없네? -- 방문자
- ↪ 여기서 소개할
- ↪ 그러면 시작할 때마다
2.8 테이블
테이블 문법은 도쿠위키를 참고했다. 기본적으로 구분자 앞뒤로 공백이 하나 이상 있어야 한다. 단, 시작하고 끝나는 구분자에는 각각 앞과 뒤에 공백이 있으면 안 된다.
- <caption>: !로 시작해서 !로 끝난다.
- <thead>: 각 열을 ^로 마친다.
- <tfoot>: 각 열을 !로 마친다. !는 셀을 시작하는 구분자가 아니고 열을 마칠 때 <tfoot> 태그임을 알려 주는 역할만 한다. 따라서 다른 곳에는 쓸 수 없다.
- <tbody>: 각 열을 |로 마친다. 여러 개의 <tbody>를 생성하기 위해서는 마지막 |뒤에 _를 입력해서 다음 <tbody>를 시작한다.
- <th>: 각 셀을 ^로 시작한다.
- <td>: 각 셀을 |로 시작한다.
- 열 병합: 닫는 구분자를 연속으로 쓴다.
- 행 병합: 병합될 셀에 .을 입력한다.
- 왼쪽 정렬: 시작하는 구분자와 내용 사이에 공백을 하나만 입력한다.
- 오른쪽 정렬: 닫는 구분자와 내용 사이에 공백을 하나만 입력한다. 단, 시작하는 구분자와 내용 사이에 공백이 하나만 있을 경우 왼쪽으로 정렬된다.
- 가운데 정렬: 시작하는 구분자와 닫는 구분자로부터 공백을 두 개 이상씩 입력한다.
! 테이블 캡션을 옵션으로 붙일 수 있다. ! ^ 요약 | <table> 안의 <caption>, <thead>, <tbody>, <tfoot>, <tr>, <th>, <td> 태그들을 지원한다. !! ^ 헤딩 1 ^ 헤딩 2 ^ 헤딩 3 ^ ^ 헤딩 4 | 열 병합 오른쪽 정렬 || ! 헤딩 4는 열 병합과 오른쪽 정렬을 보여준다. ! ^ 헤딩 5 | 행 병합 | 행 병합 가운데 정렬 | ^ 헤딩 6 | . | . | ^ 헤딩 7 | . | |가 셀을 시작하거나 닫지 못 하게 바로 뒤에 공백을 없애서 |로 입력 |_ ^ 헤딩 8 | 두 번째 <tbody>는 바로 윗행의 마지막에 _를 입력해서 시작한다. ||윤익희 출력
헤딩 1 | 헤딩 2 | 헤딩 3 |
---|---|---|
헤딩 4 | 열 병합 오른쪽 정렬 | |
헤딩 5 | 행 병합 | 행 병합 가운데 정렬 |
헤딩 6 | ||
헤딩 7 | |가 셀을 시작하거나 닫지 못 하게 바로 뒤에 공백을 없애서 |로 입력 | |
헤딩 8 | 두 번째 <tbody>는 바로 윗행의 마지막에 _를 입력해서 시작한다. | |
요약 | <table> 안의 <caption>, <thead>, <tbody>, <tfoot>, <tr>, <th>, <td> 태그들을 지원한다. |
2.9 그림
윤익희 코드@ <<<https://idea.isnew.info/logo.png>>> @ " Idea.IsNew.Info 로고 " " Idea.IsNew.Info 로고 " " 캡션을 계속 추가 " @ <<<https://idea.isnew.info/logo.png>>>[padding:0 100px] @ " Hello World C 코드 " @ ( ---[c] #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { printf("Hello World!\n"); exit(EXIT_SUCCESS); } --- ) @윤익희 출력
2.10 문법 네스팅
윤익희 코드* 리스트 안에( | 테이블 넣기 | (_ | 그 안에 | 또 | | 테이블 | (__ * 리스트 1 * 리스트 2 --- 그대로 입력 --- ___ )__ | )_ | | 이렇게 | 입력한다. | ) 리스트 계속 * 리스트 2 인용문에 표를 추가하기. > 다음 표를 보세요. ( | 인용문 | 안에 | | 테이블 | 넣기 | ) 아하! (출처)윤익희 출력
- 리스트 안에
테이블 넣기 그 안에 또 테이블 - 리스트 1
- 리스트 2
그대로 입력
이렇게 입력한다. - 리스트 2
인용문에 표를 추가하기.
다음 표를 보세요.
아하!
인용문 안에 테이블 넣기
2.11 입력한 그대로 출력
입력한 그대로 출력하는 방법에는 블록과 인라인 두 가지가 있다.
블록의 경우 하이픈(-)을 세 번 이상 한 줄에 입력해서 시작하고 같은 수의 하이픈을 이용해서 마친다. 블록 내용 중에 하이픈이 세 번 이상 있는 줄이 있으면 그 개수를 달리 해서 입력하면 된다.
윤익희 코드---- 블록의 경우 여러 줄에 걸쳐서 입력이 가능하다. --- -의 개수가 다르면 닫지 않는다. ----윤익희 출력
블록의 경우 여러 줄에 걸쳐서 입력이 가능하다. --- -의 개수가 다르면 닫지 않는다.
인라인의 경우 큰 따옴표(")를 두 번 입력하고 바로 다음 구분자로 쓸 문자를 입력한다. 원하는 내용을 입력한 다음 구분자와 큰 따옴표 두 번으로 마친다.
윤익희 코드""|인라인 방법은 여러 줄에 걸쳐서는 작동하지 않는다.|"" "".//입력한// **그대로** 출력.""하는 방법을 보여 준다. ""|cos(3.14)=``sprintf "%.2f", cos(3.14)``|"" //입력한// **그대로** 출력하는 방법과 비교해 보자. cos(3.14)=``sprintf "%.2f", cos(3.14)`` ''""|//이 문장//의 경우 구분자인 |이 중간에 들어가도 바로 뒤에 ""가 따라 오지 않기 때문에 //계속// 입력이 가능하다.|""''윤익희 출력
""|인라인 방법은 여러 줄에 걸쳐서는 작동하지 않는다.|""
//입력한// **그대로** 출력하는 방법을 보여 준다. cos(3.14)=``sprintf "%.2f", cos(3.14)``
입력한 그대로 출력하는 방법과 비교해 보자. cos(3.14)=-1.00
//이 문장//의 경우 구분자인 |이 중간에 들어가도 바로 뒤에 ""가 따라 오지 않기 때문에 //계속// 입력이 가능하다.
3 비위키 문법
이 문법은 비위키 페이지에만 적용된다.
3.1 펄 코드 임베딩
윤익희 코드비위키 페이지에서 백틱을 이용해서 펄 코드를 임베드할 수 있다. 코사인 3.14는 ``sprintf "%.2f", cos(3.14)``이다.윤익희 출력
비위키 페이지에서 백틱을 이용해서 펄 코드를 임베드할 수 있다. 코사인 3.14는 -1.00이다.
3.2 MathJax와 Math::Trig 펄 모듈
MathJax를 이용해서 TeX 수식을 입력하려면 header.tpl 파일의 <head> 태그 안에 다음 한 줄을 추가하면 된다.
<script async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_CHTML"></script>
다음과 같이 펄의 Math::Trig 모듈을 이용해서 삼각함수의 계산결과를 MathJax로 출력할 수 있다.
윤익희 코드##{use Math::Trig; use vars qw($conv); sub radians{$conv=1;} sub degrees{$conv=pi/180;} radians} #regex /:(sin|cos|tan)\((.*?)\)/``sprintf "%.3f", \1($conv*(\2))``/ $$\sin(\pi/2)=:sin(pi/2)$$ ##{degrees} $$\sin(90^\circ)=:sin(90)$$ $$\tan(45^\circ)=:tan(45)$$ ##{radians} $$\tan(\pi/4)=:tan(pi/4)$$윤익희 출력
$$\sin(\pi/2)=1.000$$ $$\sin(90^\circ)=1.000$$ $$\tan(45^\circ)=1.000$$ $$\tan(\pi/4)=1.000$$