EDRSPIHCRSSRSS

LyX

last modified: 2020-04-12 18:04:15 Contributors

LyX is a document processor that encourages an approach to writing based on the structure of your documents (WYSIWYM) and not simply their appearance (WYSIWYG).


1. 설치 방법

  1. TeX System을 설치한다.
  2. pdf viewer의 상태를 점검한다.
    • Windows는 SumatraPDF 권장. 시스템 기본 PDF viewer를 SumatraPDF로 해두는 것이 좋다.
  3. lyx.org 사이트에서 다운로드받은 인스톨러로 설치한다.
    • Windows의 경우 "전체 설치"나 "사용자 설치"를 선택할 수 있다. 일반적으로 사용자 설치가 유지 관리에 쉽다.
      • MiKTeX을 설치해둔 상태에서 LyX를 설치하려고 시도하면 MiKTeX에 빠진 패키지와 유틸리티를 전부 가져와서 설치하는 과정을 자동으로 거친다. 따라서 시간이 꽤 걸릴 수 있다. 결국 TeXLive를 전체 설치하고 LyX를 까는 것이나 전체 설치 시간은 비슷하다.
      • TeXLive를 전체 설치하지 않았을 경우에 LyX가 자동으로 패키지를 다운받아 설치하는 서비스를 제공하지 않는다. 따라서 새로운 패키지를 TeXLive쪽에서 설치하였다면 그 때마다 LyX를 reconfigure해야 한다.
    • Linux/Ubuntu의 경우 launchpad를 이용하여 설치하는 쪽을 권장한다.
      sudo add-apt-repository ppa:lyx-devel/release
      sudo apt-get update
      


2. kotex 문서 작성시 주의사항

XeTeX 또는 LuaTeX을 사용하도록 설정하면 한글 문서를 잘 작성할 수 있다. Document -> Setting에서 다음 사항을 확인한다.

  1. Font 설정에서 Use Non-TeX Fonts를 선택한다. 이것은 \usepackage{fontspec}을 활성화하는 것이다. 참고로 이 설정 항목 중의 Roman, Sans Serif 등의 폰트를 선택하면 그 내용이 \setmainfont 등으로 넘어온다.
    • fontspecfont.png
      [PNG image (78.53 KB)]


  2. Language 설정에서 Language: 를 English로 하고 Language Package:Custom으로 한다. 패키지를 써넣는 필드는 비워둔다. 이렇게 하지 않으면 polyglossia(혹은 babel)를 자동으로 로드하기 때문에 이를 억제하려는 것이다.
    • suppresspolyglossia.png
      [PNG image (73.49 KB)]


  3. LaTeX Preamble 설정에서 kotex 관련 설정을 써넣는다. hangulfont, hanjafont를 여기서 설정해야 한다.
    • kotexpreamble.png
      [PNG image (84.94 KB)]


3. 한글 index 생성

LyX이 index 생성 프로그램으로 komkindex를 쓰게 하려면 좀 복잡한 과정을 거쳐야 한다. 현재 LyX의 기본 프로그램인 texindy (xindy)에 한국어 처리 옵션을 주는 것이 바람직하다.

  1. LyX -> Preferences에서 Output -> LaTeXIndex Generation을 찾는다. Processor를 texindy, Options에 -C utf8 -L korean을 써넣는다.
    • texindyoption.png
      [PNG image (80.37 KB)]


  2. 문서에서 Insert -> Index Entry를 넣는 것은 \index 명령을 주는 것과 같다. 문서 끝에 \printindex를 추가하는 것은 Insert -> List/TOC -> Index List를 삽입한다. 이렇게 해두면 index는 자동생성된다.

4. oblivoir 문서

  1. 첨부 파일을 다운로드한다. @oblivoir-article-layout1.zip (1.17 KB)
  2. oblivoir-article.layout 파일을 적당한 곳에 둔다.
  3. LyX 문서를 작성할 때, Document -> SettingDocument Class에서 Local Layout...을 선택하고 저장한 파일을 불러온다.
  4. 약간의 경고 메시지가 나오는데 이 레이아웃이 사적으로 작성된 것이므로 해당 파일이 없으면 곤란을 겪는다는 사실을 알려주는 것이다. Set Layout 버튼을 눌러서 사용을 시도한다.
  5. 한글 문서 설정에 관한 (위에 설명한) Font와 Language 설정을 행한다. 단 preamble에 kotex을 usepackage하는 부분은 불필요하고 (한글/한자) 폰트 설정은 preamble에서 oblivoir 방식을 쓰면 된다.
  6. oblivoir-article.layout을 사용한 샘플 문서 @sample-oblivoir.lyx.zip (4.41 KB)

5. 명령행 export

  1. 다음과 같이 하여 명령행에서 pdf로 출력할 수 있다.
    $ lyx --export pdf4 <filename>.lyx
    
  2. pdf4XeTeX, pdf5LuaTeX을 이용하는 출력이다. 이 옵션에 xetex이나 luatex을 주면 lyx을 tex으로 변환할 수 있다.
  3. 윈도우즈에서는 LyX이 설치된 폴더의 lyx.exe, Mac의 경우는 /Applications/LyX.app/Contents/MacOS/lyx을 실행하여야 한다.

6. Tips

6.1. 문단 모양 드롭다운 메뉴

  • 문단 모양 드롭다운 메뉴를 여는 단축키는 Alt-P <Space>이다. (맥에서는 Ctrl-P <Space>) 메뉴가 열린 상태에서 원하는 환경의 몇 글자를 치면 (예컨대 titl...) 해당 문단 레이아웃이 적용된다.

6.2. Index 입력

  • 메뉴의 Insert -> Index Entry를 마우스로 누르면 인덱스가 입력된다.
    • 커서가 단어의 처음, 끝, 중간에 있다면 현재 단어가 인덱스 엔트리로 들어간다.
    • 커서가 단어와 단어 사이에 있고 앞뒤로 스페이스가 있는 경우에 빈 인덱스 엔트리가 형성되므로 여기에 원하는 단어를 써넣을 수 있다.
    • 몇 단어가 선택된 상태라면 선택된 부분이 인덱스 엔트리로 들어간다.
  • 별도의 단축키가 없기 때문에, (Windows/Linux) Alt+i, d를 누르면 빠르게 인덱스 엔트리를 입력할 수 있다.
    • Mac 버전은 메뉴 단축키를 사용할 수 없다. 마우스를 써야 하는데, 긴 글을 쓸 때는 손이 키보드를 떠나 마우스로 이동하는 것이 무척 비효율적일 때가 있다. 굳이 키보드로 하려면 Cmd-Shift-/를 눌러서 index라고 써넣어 메뉴 검색을 이용하는 것이 가장 빠르다. 아니면 Cmd-Shift-/를 눌러 메뉴를 연 상태에서 방향키로 이동하는 방법도 있다.

6.3. 여러 줄 수식 (eqnarray)

  • 행중 수식은 Ctrl-M, 디스플레이 수식은 Shift-Ctrl-M으로 수식 편집 상태로 (간편하게) 들어갈 수 있다.
  • 이 상태에서 Ctrl-Enter를 누르면 필드가 생성된다.
    • amsmath가 로드된 상태에서는 align*(수식번호 없는 align), 그렇지 않으면 eqnarray 수식이 되는데, amsmath를 필수적으로 로드하도록 하는 것이 좋다.
    • Document -> Settings -> Math Options에서 amsmath를 Load Always로 바꾼다.
  • 더 많은 여러 줄 수식은 메뉴의 Insert -> Math에서 고를 수 있다.
  • 수식 편집 시 화면 아래쪽에 뜨는 math toolbar에서 align의 column과 row를 추가하거나 삭제할 수 있다.

6.4. 정의, 정리, 증명

  • Document -> Settings -> Modules -> Theorems (AMS)를 활성화하면 문단 메뉴에 관련 항목들이 생긴다.

6.5. SumatraPDF를 위한 Forward/Inverse Search 설정

  1. LyX이 설치된 폴더의 bin\ 디렉토리 아래에 다음 내용으로 된 lyxeditor.cmd 파일을 생성한다.
    @echo off
    SETLOCAL enabledelayedexpansion
    set file=%1
    set row=%2
    REM remove quotes from variables 
    set file=!file:"=!
    set row=!row:"=!
    %comspec% /q /c (@echo LYXCMD:revdvi:server-goto-file-row:%file% %row%)> \\.\pipe\lyxpipe.in&&type \\.\pipe\lyxpipe.out
    endlocal
    
  2. SumatraPDFSettings -> Advanced Options를 눌러 설정 파일이 notepad로 열리면, 다음 내용을 적어넣고 저장한다. 기존 설정 중에 ReuseInstance가 false로 되어 있을 수 있으므로 이를 아래를 참고하여 true로 수정해야 한다.
    ReuseInstance = true
    ReloadModifiedDocuments = true
    InverseSearchCmdLine = lyxeditor.cmd "%f" %l
    EnableTeXEnhancements = true
    UseTabs = true
    
  3. LyX을 열고 다음 설정을 행한다.
    • Tools -> Preferences -> PathPath prefix에서 SumatraPDF.exe가 있는 PATH를 지정해준다. SumatraPDF를 사용자 설정으로 설치했다면 C:\Users\<User>\AppData\Local\SumatraPDF이고 전체 사용자 설정으로 설치했다면 C:\Program Files\SumatraPDF 또는 (32비트일 경우) C:\Program Files (X86)\SumatraPDF일 수 있으므로 확인하여야 한다. 이 경로를 기존에 이미 있는 prefix의 뒤에 세미콜론을 붙인 다음에 이어 적는다.
    • LyXServer pipe\\.\pipe\lyxpipe라고 직접 써넣는다.
    • Tools -> Preferences -> File Handling -> Converters에서 LaTeX (pdflatex)을 선택하여 Converter를 다음과 같이 적어넣는다.
      pdflatex -interaction=nonstopmode -synctex=1 $$i
      
    • LaTeX (XeTeX)LaTeX (LuaTeX)에 대해서도 위와 같은 방법으로 (컴파일러 이름을 바꾸어서) 똑같이 설정한다.
    • Modify 단추를 누른다.
  4. 계속해서 다음 설정을 행한다.
    • LyXTools -> Preferences -> Output -> Generalforward search 섹션에서 다음과 같이 적어넣는다.
      SumatraPDF -forward-search "$$t" $$n "$$o"
      
    • 다시 Tools -> Preferences -> File Handling -> File Formats로 가서 PDF (pdflatex)PDF (xetex), PDF (luatex)에 대하여 Viewer를 Custom으로 하고 필드에 SumatraPDF라고 써넣는다.
  5. SumatraPDFLyX를 다시 실행한다.
  6. LyX에서 문서를 열었을 때 `Forward/Reverse 버튼이 활성화되었는지 확인하라.
  7. 이 설정은 잘 되면 다행이고, 잘 안 되더라도 어쩔 수 없다.

7. pdflatex을 위한 kotex 문서 작성

위의 항목에서 설명한 kotex 문서 작성은 xelatex/lualatex을 위한 것이다. kotex-utf를 사용하도록 하는 방법을 소개한다.

  1. Document -> Settings -> Language에서 Korean을 고르면 무조건 CJK 패키지를 이용하고 모든 한글 문자가 \begin{CJK} 안에 들어간다. 이것은 우리가 원하는 방법이 아니다. 즉, 주언어는 English로 그대로 두어야 한다.
  2. CJK 패키지가 자동으로 로드되지 않도록 하는 것이 매우 중요하다. 이를 위해서 Document -> Settings -> Language -> EncodingsOther: Unicode (XeTeX) (utf8)로 선택하는 트릭이 있다. 비록 XeTeX을 사용할 것은 아니지만 일단 이렇게 하면 한글에 대하여 CJK 패키지가 로드되지 않는다.
  3. 이 상태에서 한글 문서를 작성해도 그럭저럭 되기는 한다.

단, 이 방법으로 할 적에는 inputenc 패키지가 로드되는 것은 막을 수 없다.[1] 이 문제까지 해결하려면 다음과 같이 하면 된다.
  1. 사용자의 custom class layout을 하나 만든다. 이름은 kotex-article.layout이라고 하기로 하자. 내용은 다음과 같다.
    # \DeclareLaTeXClass[article]{My Ko.TeX Article}
    # \DeclareCategory{Articles}
    Input article.layout
    Provides inputenc 1
    Provides CJK 1
    
  2. 이 레이아웃 파일을 저장하고 Document -> Settings -> Document Class에서 불러온다. Set Layout을 선택한다.
  3. Document -> Settings -> Language에서 언어는 English로, Encoding은 앞서와 같이 Unicode (XeTeX) (utf8)을 선택한다.
  4. Document -> Settings -> Language -> Language Package:를 Custom으로 하고 \usepackage{kotex}을 필드에 써넣는다.

이렇게 하면 귀찮은 babel, inputenc, CJK 등이 자동으로 로드되는 것을 억제할 수 있어서 깔끔한 kotex 문서의 작성이 가능하다. 이 상태에서 작성한 문서가 pdflatex으로 export된다. Ctrl-R 또는 Shift-Ctrl-R로 실행되는 preview 역시 pdflatex으로부터 얻어진다. (Fontspec을 활성화하지 않아야 한다).

그러나, 전체적으로 보아서 XeTeX이나 LuaTeX을 이용하는 앞서 소개한 방법이 더 바람직하다고 본다.

8. LyX-hangulize

  • 지금은 중단된 KoreanUCS를 이어받은 개인 프로젝트.
  • LyX의 기본 설정을 조금 수정하여 한글 문서 작성을 지원하려는 것임.
  • 개인적 용도로만 사용하세요
  • 설치하여 사용할지 여부는 다음 문서를 검토한 후에 결정하시기 바람.
  • 다운로드 LyX hangulize


----
  • [1] inputenc는 kotex-utf의 경우에는 미리 로드되어도(옵션이 utf8이기만 하면) 아무 문제 없지만 이렇게 생성된 파일을 바로 xelatex으로 컴파일할 수 없다. kotex 문서에서는 inputenc를 별도로 로드하는 것을 억제하는 것이 좋다.