LaTeX2010. 3. 20. 15:38
역시 대부분 학부 때 정리한 것을 다시 정리하면서 옮긴 것이다.
새롭게 추가한 내용은 많지 않다.

소스 코드 넣는 법이다.
컬러풀하게 넣으려면 highlight 등을 쓰는 것도 괜찮지만, 그정도는 필요 없고 적당히 넣으려면 다음처럼 하면 된다.
물론 ktug.or.kr에서 도움을 받았다.

\url{http://faq.ktug.or.kr/faq/SourceCodeListing}\\
\url{http://faq.ktug.or.kr/faq/PDFHyperLink} % url 넣는 법
fancyvrb 사용..

\begin{Verbatim}[frame=lines,label=helloworld.c,numbers=left]

#include <stdio.h>

int main(void)

{

printf("Hello, world!");

return 0;

}

\end{Verbatim}

moreverb, listings 등도 있음.


그림과 표 넣기
이것도 방법이 많다.
\begin{figure}[ht]
    \begin{minipage}{.30\textwidth}
        \includegraphics[width=\textwidth]{pic/12.png}
    \end{minipage}
    \hfill
    \begin{minipage}{.65\textwidth}
        \begin{center}
        \begin{tabular}{ccc|cccccccc}
            \multicolumn{3}{c|}{Input}&\multicolumn{8}{|c}{Output}\\
            $\mathrm{I_2}$&$\mathrm{I_1}$&$\mathrm{I_0}$&%
            $\mathrm{F_0}$&$\mathrm{F_1}$&$\mathrm{F_2}$&%
            $\mathrm{F_3}$&$\mathrm{F_4}$&$\mathrm{F_5}$&%
            $\mathrm{F_6}$&$\mathrm{F_7}$\\\hline
            0&0&0&1&0&0&0&0&0&0&0\\
            0&0&1&0&1&0&0&0&0&0&0\\
            0&1&0&0&0&1&0&0&0&0&0\\
            0&1&1&0&0&0&1&0&0&0&0\\
            1&0&0&0&0&0&0&1&0&0&0\\
            1&0&1&0&0&0&0&0&1&0&0\\
            1&1&0&0&0&0&0&0&0&1&0\\
            1&1&1&0&0&0&0&0&0&0&1\\
        \end{tabular}
    \end{center}
    \end{minipage}
\caption{이게뭘까?}\label{fig126}
\end{figure}
그림 두 개 넣기도 이런 식으로 하면 되고, 그림의 폭이 크면 \begin{adjustwidth}{-2.5cm}{-2.5cm} \end{adjustwidth}를 쓰면 된다. 또는 landscape 패키지를 써써 옆으로 넣기도 한다.

graphviz
\url{http://www.graphviz.org/}

테두리 박스
\url{http://faq.ktug.or.kr/faq/LaTeXBoxes}

SI 단위

SIunits라는 패키지가 있다. 그냥 수식 안에서 \textrm을 쓰는 방법도 있다.


수학 기호
http://www.ktug.or.kr/jsboard/read.php?table=operate&no=14440
라플라스 기호, 푸리에 트랜스폼 기호는 $\mathcal{L}$, $\mathcal{F}$를 사용한다. \usepackage{calrsfs}또는 \usepackage{mathrsfs}를 이용하면 폰트를 바꿀 수 있다. 하지만 폰트를 바꾸지 않고도 많이 쓴다.
\mathcal{F}[x(t)] = X(j\omega) = \int_{-\infty}^{\infty} x(t)e^{-j\omega t}dt

\mathcal{L}[f(t)] = \int_{0^-}^{\infty} f(t)e^{-st}dt


e 같은 것은 roman으로 식자하기도 하고, italic으로 식자하기도 한다. 미분 기호도 그렇다. 다음 글을 참고하자.

http://www.ktug.or.kr/jsboard/read.php?table=operate&no=4830

http://www.electriceditors.net/edline/vol3/3-4.txt

아무튼 미분 기호를 roman으로 쓰려면

\newcommand{\diff}{\mathrm{d}}

처럼 하면 된다.

Rank 등은 확실히 roman으로 하는 것이 맞다. log등은 \log라고 하면 되지만, \rank는 없으므로 다음과 같이 만들어주면 된다.

\DeclareMathOperator{\rank}{Rank}

몇 가지 테스트:

\Re, \mathfrak{R}, \mathrm{R}\\

\Im, \mathfrak{I}, \mathrm{I}\\

\mathbb{N}, \mathbb{Z}, \mathbb{Q},

\mathbb{R}, \mathbb{C}\\

\ell\\

\frac{dy}{dx} \qquad

\frac{\mathrm{d}y}{\mathrm{d}x}

\qquad \frac{\diff y}{\diff x}\\

Rank(A) \qquad \rank(A)\\

a_{min}, a_{\textrm{min}}

a_{\mbox{min}}, a_{\min}


아무튼 링크된 글과 그 답글들을 요약해보겠다.
단, 요약 과정에서 원문의 뜻이 달라졌을 수도 있다.

먼저 yhchoe님의 글:
대부분 dx의 d는 이탤릭으로 쓰는 경우가 많고, 델타 x의 \Delta는 세워쓴다고 한다.

복소수의 실수, 허수 부분을 나타내는 operator의 경우
유럽에서는 $\Re$(=$\mathfrak{R}$), $\Im$(=$\mathfrak{I}$를 쓰지만
미국에서는 그냥 Re, Im을 세워서 쓴다.

라플라스, 푸리에는 \mathscr을 쓴다고 한다.
(아까 적은 예제의 \mathcal과 \mathscr의 차이는 잘 모르겠다.
아무튼 이 분은 \mathscr을 언급하셨다.)

공집합 기호는 \emptyset으로 알고 있지만, amssymb 스타일에서 \varnothing을 쓰는 것이 맞다.
(이 부분은 왜 그런지 잘 모르겠다. 대부분 \emptyset을 많이 쓰는 것으로 알고 있다.)

자연수, 정수, 등등의 집합은 \mathbb{N}, \mathbb{Z}, \mathbb{Q}, \mathbb{R},\mathbb{C}로 쓰는 것이 좋다.

소문자 l은 보통 수식 속에서 $\ell$로 쓴다.

=====================================================================================
공집합 기호는 조금 애매하다.
그리스 문자 phi처럼 보이기도 하지만 확실한 것은 공집합 기호와 그리스 문자 phi는 다른 기호이다.
모양도 확실히 다르고 뜻도 다르니까.

그리스 문자 phi는 모양이 여러 가지가 있는데, 유니코드에는 4 개 이상이 있고, LaTeX에는 \Phi, \phi, \varphi가 있다.
http://en.wikipedia.org/wiki/Phi_%28letter%29

0이 빗금친 모양으로 생긴 여러가지 기호들:
http://en.wikipedia.org/wiki/%C3%98_%28disambiguation%29

모양이 비슷해도 의미가 다르면 다른 기호로 처리해서 유니코드에서도 따로 들어간다.


\phi가 아닌 것은 확실하나 \emptyset인지 \varnothing인지는 모르겠다.

=====================================================================================


아까 위에서 \DeclareMathOperator{\rank}{Rank}를 언급했다.

이것은 ams


하지만 다음 글에서 나오는 것처럼 하는 방법도 있다.

http://faq.ktug.or.kr/wiki/pds/UsefulDocuments/tex_ywk_xe.pdf


$\mathop{\mathrm{span}}\nolimits} \{v_1,v_2,\ldots,v_n\}$
$\operatorname{span} \{v_1,v_2,\ldots,v_n\}$
윽, 여기서 \nolimits는 뭐지?

\limits를 쓰면 아래 첨자를 쓸 때, 마치 lim아래 들어가듯이 아래로 들어가고, \nolimits는 옆으로 미는 것이고, \diplaylimits라는 것도 있고, intlimits, nosumlimits라는 옵션도 있다. 직접 써보기 전에는 뭐가 다른지 알기 힘들듯.


그 외에도 몇가지 내용이 있으니 링크된 그을 읽어보자.







Posted by asdfzxcv
LaTeX2010. 3. 20. 14:50
무려 학부 2학년 2학기에 작성한 코드. ㄷㄷㄷ
Pascal T. Wolkotte와 Jochem Rutgers가 만든 timing 패키지를 사용했다.
같은 이름의 패키지가 있었던 걸로 기억한다.
http://www.texample.net/tikz/examples/timing-diagram/

코드들:


사실 복잡해지면 시뮬레이션 창에서 캡쳐해서 그림으로 붙여 넣는 것이 훨씬 쉽다. 설정을 잘 바꿔주면 색상 등은 변경이 가능할 것이다. 그 외에 timing diagram을 마우스로 쓱쓱 그릴 수 있는 프로그램도 있던 것 같다. 뭐였는지 기억은 안 난다.

카르노 맵은 kvmacros를 이용하는 방법이 있다. 다음처럼 간단한 명령으로 가능하다.
\karnaughmap{4}{$f:$}{{$a$}{$b$}{$c$}{$d$}}{0110011001100110}{}
http://www.ctan.org/tex-archive/macros/latex/contrib/karnaugh/

아니면 Dia로 그려서 mp로 저장하고 pdf로 바꾸는 방법도 사용해 본 것 같다.

State diagram 역시 Dia로 그릴 수 있고, dot2tex을 써도 된다. 직접 tikz 노가다해도 된다.
당시에는 dot2tex을 쓴 듯하다.


Posted by asdfzxcv
LaTeX2010. 3. 17. 17:21
사전 데이터를 받아서 %homepath%\TeXworks\dictionaries에 넣어주면 된다.
http://wiki.services.openoffice.org/wiki/Dictionaries

Posted by asdfzxcv
LaTeX2010. 3. 6. 15:26
개요
TeX Live 2009를 설치하는 방법은 여러가지가 있다.
첫번째는 TeX Live 2009 DVD를 물리적 디스크로 구하거나 iso로 다운 받아서 설치하는 방법이다. 일단 받아두면 설치시에는 인터넷에 연결할 필요가 없므로 인터넷 환경에 관계없이 빠르게 설치할 수 있다는 장점이 있다. 그러나 설치 후에 패키지 업데이트가 필요하고, 보통 업데이트 양이 엄청나기 때문에 업데이트까지 하려면 결과적으로는 오래 걸린다.
두번째는 install-tl을 다운받아서 인터넷으로 설치하는 방법이다. 인터넷 환경만 괜찮다면 이 방법은 괜찮은 방법이다.
세번째는 TeX Live repository를 다운받은 후 설치하는 방법이다. TeX Live를 자주 재설치하거나 여러 대의 컴퓨터에 설치할 필요가 있는 경우 유용한 방법이다. 여기서는 세번째 방법을 사용하였다.
(참고: http://www.tug.org/texlive/acquire.html)

TeX Live repository 다운
TeX Live repository를 다운 받으려면 rsync를 이용하면 된다.
rsync -a --delete rsync://somectan/somepath/systems/texlive/tlnet/ /your/local/dir
추가적으로 -v, --progress 등의 옵션을 사용할 수도 있다.
몇 가지 옵션 설명, 자세한 것은 메뉴얼 참고:
-v, --verbose               increase verbosity
-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
-r, --recursive             recurse into directories
-l, --links                 copy symlinks as symlinks
-H, --hard-links            preserve hard links
-p, --perms                 preserve permissions
-A, --acls                  preserve ACLs (implies --perms)
-X, --xattrs                preserve extended attributes
-o, --owner                 preserve owner (super-user only)
-g, --group                 preserve group
-t, --times                 preserve modification times
    --progress              show progress during transfer

rsync에 문제가 있으면 wget을 사용하는 방법도 있다.
(참고: http://www.tug.org/texlive/acquire-mirror.html)

미러 사이트의 목록은 다음 링크에서 확인할 수 있다.
http://www.ctan.org/tex-archive/CTAN.sites

예를 들어 카이스트 미러를 사용한다면,
rsync -a --delete rsync://ftp.kaist.ac.kr/ctan/systems/texlive/tlnet/ /local/somepath/tlnet
를 입력하면 된다.
mirror.ctan.org/systems/texlive/tlnet
ftp.ktug.or.kr/tex-archive/systems/texlive/tlnet/

설치
이제 texlive를 설치할 때
install-tl --location /local/somepath/tlnet
등의 방법으로 설치하면 빠르게 설치할 수 있다.
(참고: http://www.tug.org/texlive/quickinstall.html)

ko.TeX 설치하기
tlmgr --location=http://ftp.ktug.or.kr/KTUG/texlive/2009 install collection-kotex
(참고: http://faq.ktug.or.kr/faq/%B8%AE%B4%AA%BD%BA%BF%A1%BC%AD%BC%B3%C4%A1%C7%CF%B1%E2)

문제 해결(윈도우)
texworks, psv가 \texlive\2009\bin\에도 있고, \texlive\2009\tlpkg\{texworks,tlpsv}에도 있다.
사실 전자가 후자와 특이하게 연결되어 있으므로, 후자를 삭제해서는 안 된다.

그런데 psv를 17306으로 업데이트했을 때 문제가 발생했다.
psv를 후자의 파일로 실행하면 실행되지 않고, 전자의 파일로 실행한 경우에만 실행된다.
바탕화면에 자동으로 생성되는 링크는 후자의 파일로 연결되는데, 이것을 고쳐주어야 한다.

최종적인 스크립트
: cygwin 버그 때문에 cygwin에서 실행하면 이상한 폴더가 생김
C:\cygwin\bin\rsync -a --delete --progress rsync://ftp.kaist.ac.kr/ctan/systems/texlive/tlnet/ texlive_tlnet
pause
tlmgr --repository=texlive_tlnet update --self --all
tlmgr --repository=http://ftp.ktug.or.kr/KTUG/texlive/2009 update collection-kotex
pause
위 코드가 수정되었다. http://noexists.tistory.com/182
Posted by asdfzxcv
LaTeX2010. 3. 6. 09:24
그림이나 수식을 페이지 번호나 여백 없이 딱 맞는 크기로 출력하고 싶은 경우가 있다.

preview package를 이용하는 법.
\documentclass[notitlepage,11pt]{scrartcl}

\usepackage[active,tightpage]{preview}

\begin{document}

\begin{preview}

$x^2 + x + 1 = 0$

\end{preview}

\end{document}


dvips를 이용하는 법
.
Posted by asdfzxcv
LaTeX2010. 3. 5. 20:17
Heap은 특별한 형태의 tree 구조이다.

많은 예제를 찾아볼 수 있는 texample.net에서는 tikz를 이용하여 tree 구조를 그리는 법도 소개하고 있다.
http://www.texample.net/tikz/examples/merge-sort-recursion-tree/

거의 비슷한 예제로 다음과 같은 것도 있다.
http://forcecore.tistory.com/1019

Heap을 그릴 때마다 이렇게 일일이 입력하는 것은 귀찮으므로 프로그램을 만들었다. 이 프로그램을 LaTeX이나 TeX 명령으로 구현하는 것은 본인의 능력을 벗어나고, perl 등의 스크립트 언어에도 별로 익숙하지 않기 때문에 그냥 C로 만들었다. 컴파일하는 것이 귀찮긴 하지만 할 수 없다.

#include <stdio.h>G
#include <string.h>
#define MAX_NODE 100
#define MAX_NAME 5

char buffer[MAX_NODE][MAX_NAME];

void print_child(char buffer[][MAX_NAME], int number, int pos)
{
    if (pos >= number)
        return;
    printf("node ");
    printf("(%d) {%s}\n", pos+1, buffer[pos]);
    if (pos*2 + 1 < number) {
        printf("child {");
        print_child(buffer, number, pos*2 + 1);
        printf("}\n");
        if (pos*2 + 2 < number) {
            printf("child {");
            print_child(buffer, number, pos*2 + 2);
            printf("}\n");
        } else {
            printf("child [missing]");
        }
    }
}

int main(int argc, char* argv[])
{
    int i;
    for (i=0; i<MAX_NODE; ++i) {
        char *c = fgets(buffer[i], MAX_NAME, stdin);
        if (!c)
            break;
        int len = strlen(buffer[i]);
        if (buffer[i][len-1] == '\n')
            buffer[i][len-1] = '\0';
    }
   
    if (i < 1)
        return 1;

    printf("\\begin{tikzpicture}[\n"
            "level distance=12mm,\n"
            "level/.style={sibling distance=32mm/#1},\n"
            "level 3/.style={sibling distance=32mm/4},\n"
            "every node/.style={circle,draw,"
            "font=\\fontsize{9}{9}\\selectfont,minimum size=21pt}]\n"
            "\\");
    print_child(buffer, i, 0);
    printf(";\n\\end{tikzpicture}");

    return 0;
}

입력은 heap을 array로 구현했을 때의 순서대로 한 줄에 하나씩 넣어주면 되고, 조금씩 수정해서 쓰면 된다.

다음은 노가다의 산물. 위에서 만든 c 코드는 기본적인 것만 되고, 노드를 지우거나 오른쪽에 더 쓰는 건 노가다로 한 것이다.

Posted by asdfzxcv