Giter VIP home page Giter VIP logo

key-value-tutorial-latex-workshop-2021's Introduction

The "key-value" structure in LaTeX

공주대학교 문서작성 워크숍 2021에서 The "key-value" structure in LaTeX을 주제로 발표한 자료입니다.

Key-value 입력이란?

LaTeX 문서를 작성하다보면, <key>=<value> 형태의 인자를 넘겨주는 명령어들을 자주 찾아볼 수 있습니다. 예를 들어, 이미지를 넣을 경우 사용하는 명령어는 다음과 같이 사용할 수 있습니다:

\includegraphics[width=0.9\textwidth]{image}

하지만 놀랍게도 LaTeX 2e에는 <key>=<value> 인자 형식을 처리하는 방식이 표준으로 정해져 있지 않습니다. 즉, 패키지 저자가 위와 같은 입력을 지원하기 위해서는 써드파티 패키지에 의존할 수 밖에 없습니다. 그럼에도 불구하고 이런 입력 방식이 사용자 입장에서는 굉장히 간편하고, 패키지 저자 입장에서는 패키지의 유연한 설정을 가능케하기 때문에 자주 사용됩니다. 따라서 이를 지원하는 패키지들도 서로 다른 사람들에 의해 꽤 많이 만들어졌습니다.

다행히 현시점에는 LaTeX 3 프로젝트의 '실험적인' 프로그래밍 언어이자 인터페이스인 expl3에 포함된 l3keys를 통해서 key-value 형식을 상당히 편리하게 다룰 수 있습니다. expl3가 거의 안정화된 것을 고려하면, 지금 이 방식을 쓰지 않을 이유가 없습니다. 나아가 l3prop 모듈의 (다른 언어에서 사전, 맵, 연관 배열 등으로 불리우는) property list를 통해 범용 자료 구조로써의 key-value 형식을 쓸 수 있습니다.

본 발표에서는 지금까지 key-value 형식을 처리하기 위해 어떤 노력들이 있었는지 살펴보고, 현시점에서 가장 권장할 만한 key-value 처리 모듈인 l3keys 사용법에 대해서 소개합니다. 나아가, expl3 언어를 사용하여 key-value 시스템이 실제로 활용되는 방법을 보여드리기 위해 간단한 패키지를 데모로 만들었습니다.

튜토리얼 자료에 관하여

materials 디렉터리 안에서 실습자료들을 확인할 수 있습니다. 발표자료의 각 슬라이드에 해당하는 실습자료 파일명이 나와 있습니다.

어느정도 최근 버전의 TeX 배포판을 사용하지 않으면 다른 결과가 나오거나 오류가 발생할 수 있습니다. 자료들을 제작한 당시에는 TeX Live 2021 배포판을 사용하였습니다.

조판

pdfLaTeX, XeLaTeX, LuaLaTeX 등의 엔진으로 조판합니다.

pdflatex keyval-tutorial.tex

발표자료에 관하여

폰트는 Fira Sans, Noto Sans CJK KR을 사용했으며, minted 패키지에 필요한 Python 3Pygments 패키지가 필요합니다. 아래 권장된 설치 방법을 따르지 않을 시 폰트 이름의 차이로 인해 발표자료의 [소스코드](keval-slides.tex]에서 폰트 설정 부분을 조정해야 할 수 있습니다.

폰트 설치

macOS의 경우 HomebrewHomebrew Cask를 사용해 설치를 권장합니다. homebrew-cask-fonts를 tap하여 사용합니다:

brew tap homebrew/cask-fonts
brew install font-fira-sans font-noto-sans-cjk-kr

나머지 운영체제의 경우 각 운영체제의 권장 폰트 설치 방법을 참고하기 바랍니다.

폰트를 직접 다운로드 받아 설치할 수 있습니다. Fira Sans는 여기, Noto Sans CJK KR은 여기를 눌러 받으세요.

조판

XeLaTeX으로 조판합니다.

xelatex keyval-slides.tex

key-value-tutorial-latex-workshop-2021's People

Contributors

imgbotapp avatar zeta611 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.