質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Markdown

Markdownは、文書の構造、修飾情報を記述するための軽量マークアップ言語です。

LaTeX

LaTeXは、レスリー・ランポートが開発したテキストベースの文書整形システムです。 電子製版ソフトウェアである「TeX」にマクロパッケージを組み込む形で構成されており、 通常のTeXより扱いやすくなっているのが特徴です。

Q&A

解決済

2回答

1632閲覧

PandocでMarkdownをLaTeXにしたいのですが。。

namnium1125

総合スコア2043

Markdown

Markdownは、文書の構造、修飾情報を記述するための軽量マークアップ言語です。

LaTeX

LaTeXは、レスリー・ランポートが開発したテキストベースの文書整形システムです。 電子製版ソフトウェアである「TeX」にマクロパッケージを組み込む形で構成されており、 通常のTeXより扱いやすくなっているのが特徴です。

0グッド

0クリップ

投稿2018/06/09 11:25

編集2018/06/14 14:25

お世話になっています。

部分的にLaTeXを使いつつ、Markdownでレポートを書きたいと思い、いくつかのサイト(例えばMarkdownで爆速LaTeXレポート | ロボット・IT雑食日記など)を参考にPandocを使用してみたのですが、コードブロックが入ると、Highlighting環境やShaded環境、NormalTok{}など、未定義のものが入ってきて、dviに変換するときに、pLaTeX、LuaLaTeXともにエラーになってしまいます。

おそらくLaTeXとして出力させず、内部的にLaTeXを使用させてpdfまで自動で変換させる場合は定義されているのでしょうけど、いったいどこに定義があるのかが皆目見当が付きません。

Pandoc ユーザーズガイド 日本語版 - Japanese Pandoc User's Association pdfを作成するにあるパッケージはエラーが出なかったものに関してはすべて有効化しましたが、この中にも定義はなかったようです。

最後にPandoc Markdown -> latex with syntax highlightingというページにたどり着き、この中のコードをコピペして実行してみました。しかし、pLaTeX、LuaLaTeXの両方で試しましたがどちらでも\fiの箇所でエラーとなってしまい、うまくいきませんでした。

コピペと言っている時点でお分かりかと思いますが、LaTeXの仕組みについてはほとんど知識がありません。(TeXとLaTeXが違うことを今回の問題で初めて知ったレベルです。)

もし、似たような問題に遭遇した方がおりましたら、回答していただけるとありがたいです。

回答よろしくお願いします。m(_ _)m

あまり参考にならない&いろいろと間違っていると考えられる現在用意しているプリアンブル部です。一部は先ほど載せたURLの完全なコピペです。

\documentclass[autodetect-engine,dvipdfmx-if-dvi,ja=standard]{bxjsarticle} % [11pt,a4paper] % \usepackage{geometry} \geometry{top=30truemm,bottom=30truemm,left=25truemm,right=25truemm} \usepackage{here} \usepackage{amssymb} \usepackage{amsmath} \usepackage{ifxetex} \usepackage{ifluatex} \usepackage{longtable} \usepackage{booktabs} \usepackage{url} \usepackage{graphicx} \usepackage{hyperref} \usepackage{ulem} \ifxetex \usepackage{fontspec,xltxtra,xunicode} \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase} \newcommand{\euro}{€} \else \ifluatex \usepackage{fontspec} \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase} \newcommand{\euro}{€} \else \usepackage[utf8]{inputenc} \usepackage{eurosym} \fi \fi \usepackage{color} \usepackage{fancyvrb} \DefineShortVerb[commandchars=\\{\}]{\|} \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\{\}} % Add ',fontsize=\small' for more characters per line \newenvironment{Shaded}{}{} \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}} \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} \newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} \newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}} \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}} \newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}} \newcommand{\RegionMarkerTok}[1]{{#1}} \newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} \newcommand{\NormalTok}[1]{{#1}} \ifxetex \usepackage[setpagesize=false, % page size defined by xetex unicode=false, % unicode breaks when used with xetex xetex, colorlinks=true, linkcolor=blue]{hyperref} \else \usepackage[unicode=true, colorlinks=true, linkcolor=blue]{hyperref} \fi \hypersetup{breaklinks=true, pdfborder={0 0 0}} \setlength{\parindent}{0pt} \setlength{\parskip}{6pt plus 2pt minus 1pt} \setlength{\emergencystretch}{3em} % prevent overfull lines \setcounter{secnumdepth}{0} \EndDefineVerbatimEnvironment{Highlighting} \begin{document} \input{main.tex} \end{document}

main.mdの例です。(\は表現上入れましたが実際はありません。)

md

1# main.texの中身 2 3\```python 4print("Shaded & Highlighting環境") 5\``` 6 7\``` 8verbatim環境 9\``` 10 11`文中コード`

Pandocを通した後のmain.texの中身です。

\hypertarget{main.texux306eux4e2dux8eab}{% \section{main.texの中身}\label{main.texux306eux4e2dux8eab}} \begin{Shaded} \begin{Highlighting}[] \BuiltInTok{print}\NormalTok{(}\StringTok{"Shaded & Highlighting環境"}\NormalTok{)} \end{Highlighting} \end{Shaded} \begin{verbatim} verbatim環境 \end{verbatim} \texttt{文中コード}

バージョンなど :

  • 実行環境 : Windows 10 MINGW64
  • pandoc : pandoc.exe 2.2.1
  • TeX関連 : TeX Live 2018

他に確認が必要な項目があれば修正欄にお願いします。

補足事項 :
LaTeXの使用はマストなのでAtomやVSCodeの拡張機能を使ってMarkdown -> pdfという方法はおそらく使えないと思います。

追記

エラー内容です。オプションのクラッシュとのことですが、hyperrefのどこを修正すればいいかがいまいちわかりませんでした。

! LaTeX Error: Option clash for package hyperref. See the LaTeX manual or LaTeX Companion for explanation. Type H <return> for immediate help. ... l.63 \fi

dviへ変換するコマンドはlualatex master.texを使用しています。

最後の\EndDefineVerbatimEnvironment{Highlighting}は確かに不要らしいですね。。gistでもコメントされているみたいですし。これは取り除きました。

引き続きよろしくお願いします。m(_ _)m

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fiwa

2018/06/10 06:41

https://gist.github.com/cormacrelf/3760427 のコードを実行したら`\fi`の部分でエラーになってしまうということですが、エラーメッセージはどのようなものだったか追記しておくと良いかも知れません。ちなみに上記 gist のコード、私の環境では`\EndDefineVerbatimEnvironment{Highlighting}`のところでエラーが起きて Highlighting という文字が出力されてしまいますが、この行をコメントアウトしておくとハイライトされた状態で出力されました。
namnium1125

2018/06/10 06:45

修正のコメントありがとうございます。追記いたします。m(_ _)m
fiwa

2018/06/10 07:28 編集

hyperref が二度呼ばれているようなので、最初の`\usepackage{hyperref}`(16行目)を削除してみて下さい。
namnium1125

2018/06/10 07:36

ありがとうございます! 無事にエラーが消えました! ifの中身はhyperrefの定義だったんですね。。今少し、別なエラーがみられるので現在対処しています。改めてありがとうございます。m(_ _)m
namnium1125

2018/06/10 08:17

最後までうまくいきました! ありがとうございます! m(_ _)m
guest

回答2

0

自己解決

過去の自分はドキュメントをちゃんと読むということをしていなかったみたいです。

Pandoc ユーザーズガイド 日本語版 - Japanese Pandoc User's Association

-sオプションをつけて実行することで独立したLaTeXファイルを出力することが可能です。

投稿2019/08/24 10:48

namnium1125

総合スコア2043

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

現段階で最終的にこうなりました。md2pdfというコマンドです。僭越ながら、報告として一応載せておきます。

bash

1#!/usr/bin/bash 2 3filename=`echo $1 | cut -d'.' -f1` 4d=`pwd` 5mkdir .md2pdf 6cd .md2pdf 7eval "/Pandoc/pandoc $d/$1 -o main.tex" # Pandocのパスは適切なものを設定してください。 8sed -i -e 's/\tightlist/\n/g' main.tex # 謎のtightlistの消去 9 10cat << EOS > master.tex 11\documentclass[autodetect-engine,dvipdfmx-if-dvi,ja=standard]{bxjsarticle} 12% [11pt,a4paper] 13% 14\usepackage{geometry} 15\geometry{top=30truemm,bottom=30truemm,left=25truemm,right=25truemm} 16\usepackage{here} 17 18\usepackage{amssymb} 19\usepackage{amsmath} 20\usepackage{ifxetex} 21\usepackage{ifluatex} 22\usepackage{longtable} 23\usepackage{booktabs} 24\usepackage{url} 25\usepackage{graphicx} 26\usepackage{ulem} 27 28\ifxetex 29 \usepackage{fontspec,xltxtra,xunicode} 30 \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase} 31 \newcommand{\euro}{€} 32\else 33 \ifluatex 34 \usepackage{fontspec} 35 \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase} 36 \newcommand{\euro}{€} 37 \else 38 \usepackage[utf8]{inputenc} 39 \usepackage{eurosym} 40 \fi 41\fi 42\usepackage{color} 43\usepackage{fancyvrb} 44\DefineShortVerb[commandchars=\\\{\}]{\|} 45\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} 46% Add ',fontsize=\small' for more characters per line 47\newenvironment{Shaded}{}{} 48 49\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} 50\newcommand{\BuiltInTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} 51\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} 52\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} 53\newcommand{\ImportTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} 54\newcommand{\ExtensionTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} 55\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} 56\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} 57 58\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}} 59\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} 60\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} 61\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} 62\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} 63\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} 64\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}} 65\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}} 66\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} 67\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}} 68\newcommand{\RegionMarkerTok}[1]{{#1}} 69\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} 70\newcommand{\NormalTok}[1]{{#1}} 71\ifxetex 72 \usepackage[setpagesize=false, page size defined by xetex 73 unicode=false, % unicode breaks when used with xetex 74 xetex, 75 colorlinks=true, 76 linkcolor=blue]{hyperref} 77\else 78 \usepackage[unicode=true, 79 colorlinks=true, 80 linkcolor=blue]{hyperref} 81\fi 82\hypersetup{breaklinks=true, pdfborder={0 0 0}} 83\setlength{\parindent}{0pt} 84\setlength{\parskip}{6pt plus 2pt minus 1pt} 85\setlength{\emergencystretch}{3em} % prevent overfull lines 86\setcounter{secnumdepth}{0} 87 88\begin{document} 89 90\input{main.tex} 91\end{document} 92EOS 93 94lualatex master.tex 95lualatex master.tex # 依存関係をクリアするため2度実行しています。。もしかしていらない? 96mv master.pdf ../${filename}.pdf 97# mv main.tex ../${filename}.tex 98cd ../ 99rm -r .md2pdf

実行環境を再掲しておきます。Windows10(MSYS2, MINGW64)上です(WLSでは試していないです)。多分この2つがあれば動きます。

  • texlive 2018
  • pandoc.exe 2.2.1

適当に作成したので、突っ込みどころ満載かとは思いますが、もし読んだ方で「ここ変だよ」というところがあればご指摘いただけると幸いです。

fiwa様、改めていろいろとありがとうございました。m(_ _)m
(もしよろしければfiwa様をBAにしたいのですが...(^ ^; )

こんなアホなコードを書いているうちにようやくたどり着いたページです。(なかなかたどり着かないものです。。。。orz)

一応載せておきます。

Inner Journeys: PandocとLuaLaTeXを使ったPDF出力でコードブロックをきれいに表示する

投稿2018/06/10 08:30

編集2018/06/14 14:13
namnium1125

総合スコア2043

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問