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

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

Feb 19, 2025 am 09:48 AM

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을 추천합니다.

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

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

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

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

jekyll build
mkdir -p pod/pdf/cards
로그인 후 복사
<<>

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

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

페이지 방향은 항상 수직

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

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

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

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

<<>

<<> 실행 스크립트 <🎜 🎜>
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
로그인 후 복사
나는 빌드 스크립트를 실행하기 위해

를 사용합니다. 이미지와 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으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

CNCF ARM64 파일럿 : 충격 및 통찰력 CNCF ARM64 파일럿 : 충격 및 통찰력 Apr 15, 2025 am 08:27 AM

CNCF (Cloud Native Computing Foundation), Ampere Computing, Equinix Metal 및 Actuated 간의 공동 작업 인이 파일럿 프로그램은 CNCF Github 프로젝트를위한 ARM64 CI/CD를 간소화합니다. 이 이니셔티브는 보안 문제 및 성과를 다룹니다

AWS ECS 및 LAMBDA가있는 서버리스 이미지 처리 파이프 라인 AWS ECS 및 LAMBDA가있는 서버리스 이미지 처리 파이프 라인 Apr 18, 2025 am 08:28 AM

이 튜토리얼은 AWS 서비스를 사용하여 서버리스 이미지 처리 파이프 라인을 구축함으로써 안내합니다. ECS Fargate 클러스터에 배포 된 Next.js Frontend를 만들어 API 게이트웨이, Lambda 기능, S3 버킷 및 DynamoDB와 상호 작용합니다. th

2025 년에 가입 할 Top 21 개발자 뉴스 레터 2025 년에 가입 할 Top 21 개발자 뉴스 레터 Apr 24, 2025 am 08:28 AM

이 최고의 개발자 뉴스 레터와 함께 최신 기술 트렌드에 대해 정보를 얻으십시오! 이 선별 된 목록은 AI 애호가부터 노련한 백엔드 및 프론트 엔드 개발자에 이르기까지 모든 사람에게 무언가를 제공합니다. 즐겨 찾기를 선택하고 Rel을 검색하는 데 시간을 절약하십시오

See all articles