>기술 주변기기 >IT산업 >Pandoc 및 Latex를 사용하여 Markdown에서 PDF를 생성합니다

Pandoc 및 Latex를 사용하여 Markdown에서 PDF를 생성합니다

Joseph Gordon-Levitt
Joseph Gordon-Levitt원래의
2025-02-19 09:48:09133검색

Creating PDFs from Markdown with Pandoc and LaTeX

코어 포인트

이 기사 저자 Chris Ward는 오픈 소스 보드 게임 칩 상점을 위해 Pandoc 및 Latex를 사용하여 Markdown 파일을 PDF로 변환하는 방법을 설명합니다. 게임 구성 요소는 Markdown을 사용하여 작성되며 게임 웹 사이트는 이러한 파일에서도 생성됩니다. Pandoc (오픈 소스 마크 업 변환 도구) 및 라텍스 (문서 선언 및 레이아웃 시스템)는 Markdown 파일에서 PDF를 생성하는 데 사용됩니다. 강력한 기능에도 불구하고 여러 PDF를 단일 페이지에 결합 할 수 없으므로 Ward는 명령 줄 도구 PDFJAM을 사용 하여이 요구 사항을 충족합니다.

저자는 필요한 종속성 (Markdown, Jekyll, Pandoc, Latex, PDFJam)을 설치하는 방법에 대한 자세한 안내서를 제공하고 MarkDown에서 PDFS 생성, 라텍스 파일 생성 및 PDFJAM을 사용하여 카드를 전송하는 것을 포함하여 빌드 프로세스를 점차적으로 도입합니다. 한 페이지에 결합하십시오.

저자의 이상적인 워크 플로우는 방문자가 요청할 때가 아닌 웹 사이트를 생성하면서 PDF 파일을 생성하는 것입니다. 이 접근법을 사용하면 PDF 카드 버전이 복잡한 CSS 규칙을 사용하지 않고 HTML 페이지와 다르게 보일 수 있습니다.

itepoint 또는 다른 곳에서 내 게시물 중 일부를 읽었다면 아마도 내가 보드 게임을하고 있다는 것을 알고있을 것입니다. Chip Shop이라는이 게임을 사용하면 1980 년대 미국에서 컴퓨터 회사를 운영 할 수 있습니다.

프로젝트의 일환으로, 나는 전체 게임을 가능한 한 많이 오픈하려고했습니다. 몇 번의 시도 후, 나는 대부분의 게임 구성 요소 (특히 카드 및 지침)의 기본 프레임 워크로 Markdown을 사용하기로 결정했습니다.

게임 웹 사이트에서 Jekyll을 사용하기 때문에 게임 웹 사이트는 Markdown 파일에서 생성됩니다. 게임의 프리미엄 사전 박스 및 자체 인쇄 버전을 만들 것입니다.이 버전은 Markdown 파일에서 PDF를 생성해야합니다.

대상

내 이상적인 워크 플로우는 방문자가 요청할 때가 아니라 웹 사이트를 생성하면서 PDF 파일을 생성하는 것입니다. 이것은 생성 된 HTML로부터 PDF를 생성하기 때문에 PDF 생성에 일반적으로 사용하는 옵션 wkhtmltopdf 옵션을 제외합니다. 또 다른 이유는 PDF 카드 버전이 HTML 페이지와 다르게 보이기를 원하기 때문입니다. Jekyll에는 복잡한 CSS 규칙을 사용하지 않고도이를 달성 할 수있는 "보기 모드"기능이 없습니다.

Chip Shop Game의 카드 Markdown 템플릿 파일에는 게임 메커니즘에 대한 많은 Markdown 프리 정보 필드가 포함되어 있으며 모든 필드가 모든 카드에 사용되는 것은 아닙니다. 쉽게 인쇄하려면 카드를 A4 페이지에 최대한 여러 번,이 경우 3 × 3 그리드를 넣어야합니다. 궁극적으로 페이지는 양쪽에 인쇄되어야하지만 아직 구현하지는 않았습니다. Creating PDFs from Markdown with Pandoc and LaTeX

Pandoc and Latex

Markdown에서 PDF 솔루션을 생성하는 웹 검색은 Pandoc의 경로로 이어집니다. Pandoc은 다양한 입력 및 출력 마크 형식을 지원하는 오픈 소스 스위스 군용 나이프 마크 변환 도구입니다.

Pandoc을 사용하여 PDF를 생성하려면 라텍스가 필요합니다. 라텍스는 과학 연구 커뮤니티에서 시작되었으며 문서 선언 및 레이아웃 시스템입니다. Pandoc 및 Latex와 결합하여 변수를 사용하여 일련의 Markdown 파일에서 PDF를 생성하고 Markdown 프리 정보를 지원할 수 있습니다.

강력한 Pandoc과 Latex에도 불구하고, 특히 Markdown 파일에서 변수를 사용할 때 여러 PDF (카드)를 단일 페이지에 결합하는 방법을 찾을 수 없습니다. 많은 연구를 마친 후, 나는이 요구에 대한 간단한 명령 줄 도구 인 PDFJAM을 선택했습니다.

의존성 설치

마크 다운 편집자가 필요한 것 외에 추가 마크 다운 소프트웨어가 필요하지 않습니다. 편집자가 많이 있으며, 선택할 수 있도록 itepoint 기사를 읽는 것이 좋습니다.

jekyll 나는 내 게임에서 가져온 예제의 빌드 프로세스를 설명하기 위해 Jekyll을 계속 사용하지만 웹 사이트가 필요하지 않은 경우 PDF 생성의 필수 부분은 아닙니다. pandoc 내 Mac에서는 홈 브루를 사용하여 Pandoc을 설치했지만 모든 운영 체제에는 해당 옵션이 있습니다.

라텍스

요구 사항에 따라 라텍스를 설치하는 가장 좋은 방법에 대한 단어가 많이 있습니다. 공통 도구 및 라이브러리의 전체 설치는 2GB에 가깝지만 대부분의 목적을 위해 최소한의 설치로 충분합니다. 프로젝트의 다운로드 페이지를 읽고 가장 적합한 옵션을 찾으십시오.

이 튜토리얼에서는 사용자 정의 글꼴을 사용하므로 Xelatex 엔진을 사용합니다. 그러나 필요한 특정 기능을 제공하는 엔진을 선택할 수 있습니다.

pdfjam

라텍스 설치 방법에 따라 pdfjam을 설치했을 수 있습니다. (확인하려면 터미널의 pdfjam을 입력하십시오.) 설치되지 않은 경우 여기에서 설치 세부 정보를 찾으십시오.

빌딩 프로세스

약간의 고려 후, 나는 로컬로 실행되는 bash 스크립트를 실행하는 것이 현재 최선의 선택 인 것 같습니다. 더 나은 방법이 있지만 작동하며 나중에 프로세스를 개선하여 연속 통합 시스템 또는 GIT 후크로 전송할 수 있습니다.

github에서 bash 스크립트를 봅니다.

지금이 스크립트를 단계별로 소개하겠습니다.

설정

이 명령은 Jekyll이 웹 사이트를 구축하는 데 필요한 루비 의존성이 최신 상태이며 기존 웹 사이트 및 인쇄 폴더를 삭제했습니다.

웹 사이트를 구축하십시오 다음, 우리는 웹 사이트를 만들고 인쇄 된 버전의 카드에 대한 폴더를 만듭니다.

마크 다운 에서 pdf를 생성합니다 각 Markdown 파일 PDF 버전이 포함 된 폴더를 작성하겠습니다 :

이 스크립트는 _cards 디렉토리의 각 Markdown 파일을 처리하여 Markdown Pre-Information 필드를 관찰해야합니다. cards.latex 템플릿을 사용하여 (나중에 다룰 것) 올바른 라텍스 엔진은 적절한 이름으로 PDF를 출력합니다.

라텍스 파일 Pandoc에서 카드 파일을 생성하는 대부분의 마법은 라텍스 템플릿에서 발생합니다.

github에서 라텍스 템플릿을 봅니다.

라텍스는 나에게 새롭지 만 너무 복잡하지는 않습니다. 기본 Latex 파일 (pandoc_install_dir/data/templates/default.latex에있는)에서 변경 한 내용을 설명하여 카드를 올바르게 작동하도록합니다. 라텍스 파일을 편집 할 때 미리보기를 위해 sharelatex.com을 추천합니다.

우리는 특정 페이지 크기가 필요하며 열을 사용하여 나중에 카드의 비용과 점수를 표시합니다. 우리는 그래픽과 사용자 정의 글꼴을 사용하고 있으므로 이러한 패키지가 필요합니다.
<code class="language-bash">bundle install
bundle update

rm -dfr _site
rm -dfr pod</code>
우리는 명확하고 간결한 간단한 레이아웃을 만들려고 노력하고 있습니다. 우리가 그것을 구현하는 방법은 다음과 같습니다.

나는 위의 많은 부분이 코딩이나 태깅에 익숙한 사람에게는 이해하기 쉽다고 생각합니다. 카드 요소를 만들고, 정렬하고, 글꼴 크기를 설정하고 값이 있는지 확인한 다음 카드에 빈 필드로 끝나지 않도록 출력합니다.

우리는 이미지를 특정 크기로 크기를 조정하고 그것을 중앙으로 조정합니다. 비용 및 점수 값은 시작 {tabular} 명령을 사용하여 설정하고 L의 수를 사용하여 열 수를 설정합니다.

<code class="language-bash">jekyll build
mkdir -p pod/pdf/cards</code>

한 페이지에 카드를 결합합니다 우리는 pdfjam을 사용하여 각 개별 pdf 카드와 함께 큰 pdf 파일을 만듭니다 :

이 명령을 사용하십시오. 다음을 지정합니다

페이지 방향은 항상 수직

여야합니다 각 개별 PDF는 프레임

이어야합니다 그리드 크기 Creating PDFs from Markdown with Pandoc and LaTeX 파일 이름 접미사 파일 이름

PDFJAM은 작업 디렉토리에 출력하지 않으면 오류가 발생할 수 있으므로 파일을 실제로 원하는 위치로 이동합니다 (미래에 해결되기를 바랍니다). 여기에서 PDF 파일이 필요하지 않으면 단일 PDF 파일을 삭제할 수도 있습니다.

그게 다야 - 우리는 인쇄 가능한 웹 사이트와 게임 카드가 있습니다.

실행 스크립트
<code class="language-bash">for filename in _cards/*.md; do
  echo $filename
  pandoc --from=markdown+yaml_metadata_block --template _layouts/cards.latex -o pod/pdf/cards/"$(basename "$filename" .md)".pdf --latex-engine=xelatex $filename
done</code>
나는 빌드 스크립트를 실행하기 위해

를 사용합니다. 이미지와 PDF 처리가 많기 때문에 약 5-10 분이 소요됩니다. 그런 다음이 폴더를 웹 서버에 배포하는 별도의 스크립트가 있습니다.

다음 단계
  • 이 프로세스는 제대로 얻는 데 시간이 걸렸지 만 게임 테스트 후 프로세스와 레이아웃을 계속 개선하기에 충분합니다.
  • 나는 당신이 나의 연구와 실험이 당신의 프로젝트에 유용하다는 것을 알기를 바랍니다. 의견이나 제안이 있으면 알려주십시오.
  • Pandoc 및 Latex를 사용하여 Markdown에서 PDFS를 생성하는 것에 대한 FAQ (FAQS) FAQS (FAQS)

    내 시스템에 Pandoc 및 Latex를 설치하는 방법은 무엇입니까?

  • Pandoc을 설치하려면 공식 웹 사이트에서 사용할 수 있습니다 ( https://www.php.cn/link/8f1dddd6e7a88b9cf615c146330c591ba9 . Pandoc 및 Latex를 사용하여 생성 된 PDF의 모양을 사용자 정의 할 수 있습니까?

    예, 라텍스 템플릿을 사용하여 PDF의 모양을 사용자 정의 할 수 있습니다. Pandoc은 기본 템플릿을 사용하여 PDF를 생성하지만 Pandoc 및 Latex를 사용하여 Markdown 파일을 PDF로 변환하는 방법은 무엇입니까?

    마크 다운 파일을 PDF로 변환하려면 터미널 또는 명령 프롬프트에서 다음 명령을 사용할 수 있습니다. 마크 다운 파일의 이름으로 --template를 교체하고 PDF 파일의 원하는 이름으로

    를 교체하십시오. 이 명령은 Pandoc에게 기본 라텍스 템플릿을 사용하여 Markdown 파일을 PDF로 변환하도록 지시합니다.

    (나머지 FAQ 내용은 원본 텍스트와 동일하며, 중복을 피하기 위해 여기서 생략)

위 내용은 Pandoc 및 Latex를 사용하여 Markdown에서 PDF를 생성합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.