| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 | 
							- #!/usr/bin/env php
 
- <?php
 
- /**
 
-  * @copyright Copyright (c) 2014 Carsten Brandt
 
-  * @license https://github.com/cebe/markdown/blob/master/LICENSE
 
-  * @link https://github.com/cebe/markdown#readme
 
-  */
 
- $composerAutoload = [
 
-     __DIR__ . '/../vendor/autoload.php', // standalone with "composer install" run
 
-     __DIR__ . '/../../../autoload.php', // script is installed as a composer binary
 
- ];
 
- foreach ($composerAutoload as $autoload) {
 
-     if (file_exists($autoload)) {
 
-         require($autoload);
 
-         break;
 
-     }
 
- }
 
- // Send all errors to stderr
 
- ini_set('display_errors', 'stderr');
 
- $linkStyle = 'footnote';
 
- $flavor = 'cebe\\markdown\\latex\\Markdown';
 
- $flavors = [
 
- 	'gfm' => ['cebe\\markdown\\latex\\GithubMarkdown', __DIR__ . '/../GithubMarkdown.php'],
 
- 	'extra' => ['cebe\\markdown\\latex\\MarkdownExtra', __DIR__ . '/../MarkdownExtra.php'],
 
- ];
 
- $full = false;
 
- $src = [];
 
- foreach($argv as $k => $arg) {
 
- 	if ($k == 0) {
 
- 		continue;
 
- 	}
 
- 	if ($arg[0] == '-') {
 
- 		$arg = explode('=', $arg);
 
- 		switch($arg[0]) {
 
- 			case '--flavor':
 
- 				if (isset($arg[1])) {
 
- 					if (isset($flavors[$arg[1]])) {
 
- 						require($flavors[$arg[1]][1]);
 
- 						$flavor = $flavors[$arg[1]][0];
 
- 					} else {
 
- 						error("Unknown flavor: " . $arg[1], "usage");
 
- 					}
 
- 				} else {
 
- 					error("Incomplete argument --flavor!", "usage");
 
- 				}
 
- 			break;
 
- 			case '--link-style':
 
- 				if (isset($arg[1])) {
 
- 					if ($arg[1] === 'href' || $arg[1] === 'footnote') {
 
- 						$linkStyle = $arg[1];
 
- 					} else {
 
- 						error("Unknown link style: " . $arg[1], "usage");
 
- 					}
 
- 				} else {
 
- 					error("Incomplete argument --link-style!", "usage");
 
- 				}
 
- 			break;
 
- 			case '--full':
 
- 				$full = true;
 
- 				break;
 
- 			case '-h':
 
- 			case '--help':
 
- 				echo "PHP Markdown to LaTeX converter\n";
 
- 				echo "------------------------------\n\n";
 
- 				echo "by Carsten Brandt <mail@cebe.cc>\n\n";
 
- 				usage();
 
- 			break;
 
- 			default:
 
- 				error("Unknown argument " . $arg[0], "usage");
 
- 		}
 
- 	} else {
 
- 		$src[] = $arg;
 
- 	}
 
- }
 
- if (empty($src)) {
 
- 	$markdown = file_get_contents("php://stdin");
 
- } elseif (count($src) == 1) {
 
- 	$file = reset($src);
 
- 	if (!file_exists($file)) {
 
- 		error("File does not exist:" . $file);
 
- 	}
 
- 	$markdown = file_get_contents($file);
 
- } else {
 
- 	error("Converting multiple files is not yet supported.", "usage");
 
- }
 
- /** @var cebe\markdown\Parser $md */
 
- $md = new $flavor();
 
- $md->linkStyle = $linkStyle;
 
- $tex = $md->parse($markdown);
 
- if ($full) {
 
- 	echo <<<'TEX'
 
- \documentclass[a4paper, 12pt]{article}
 
- % english and utf8
 
- \usepackage[british]{babel}
 
- \usepackage[utf8]{inputenc}
 
- % url support
 
- \usepackage{url}
 
- % make links clickable
 
- \usepackage{hyperref}
 
- % code listings
 
- \usepackage{listings}
 
- \usepackage{color}
 
- \definecolor{codebg}{rgb}{0.9,0.9,0.9}
 
- \definecolor{mygreen}{rgb}{0,0.6,0}
 
- \definecolor{mygray}{rgb}{0.5,0.5,0.5}
 
- \definecolor{mymauve}{rgb}{0.58,0,0.82}
 
- \lstset{%
 
-   backgroundcolor=\color{codebg},   % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}
 
-   basicstyle=\footnotesize,        % the size of the fonts that are used for the code
 
-   breakatwhitespace=false,         % sets if automatic breaks should only happen at whitespace
 
-   breaklines=true,                 % sets automatic line breaking
 
-   captionpos=b,                    % sets the caption-position to bottom
 
-   commentstyle=\color{mygreen},    % comment style
 
- % deletekeywords={...},            % if you want to delete keywords from the given language
 
-   escapeinside={\%*}{*)},          % if you want to add LaTeX within your code
 
-   extendedchars=true,              % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
 
- % frame=single,                    % adds a frame around the code
 
-   keepspaces=true,                 % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
 
-   keywordstyle=\color{blue},       % keyword style
 
- % language=Octave,                 % the language of the code
 
- % morekeywords={*,...},            % if you want to add more keywords to the set
 
-   numbers=left,                    % where to put the line-numbers; possible values are (none, left, right)
 
-   numbersep=5pt,                   % how far the line-numbers are from the code
 
-   numberstyle=\tiny\color{mygray}, % the style that is used for the line-numbers
 
-   rulecolor=\color{black},         % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
 
-   showspaces=false,                % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
 
-   showstringspaces=false,          % underline spaces within strings only
 
-   showtabs=false,                  % show tabs within strings adding particular underscores
 
-   stepnumber=1,                    % the step between two line-numbers. If it's 1, each line will be numbered
 
-   stringstyle=\color{mymauve},     % string literal style
 
-   tabsize=2,                       % sets default tabsize to 2 spaces
 
-   title=\lstname                   % show the filename of files included with \lstinputlisting; also try caption instead of title
 
- }
 
- \lstdefinelanguage{json}{
 
- 	morekeywords={},
 
- 	sensitive=false,
 
- 	morestring=[b]",
 
- }
 
- % include images
 
- \usepackage{graphicx}
 
- % support github markdown strikethrough
 
- % http://tex.stackexchange.com/questions/23711/strikethrough-text
 
- \usepackage{ulem}
 
- \begin{document}
 
- TEX;
 
- 	echo $tex;
 
- 	echo '\end{document}' . "\n";
 
- } else {
 
- 	echo $tex;
 
- }
 
- // functions
 
- /**
 
-  * Display usage information
 
-  */
 
- function usage() {
 
- 	global $argv;
 
- 	$cmd = $argv[0];
 
- 	echo <<<EOF
 
- Usage:
 
-     $cmd [--flavor=<flavor>] [--full] [file.md]
 
-     --flavor  specifies the markdown flavor to use. If omitted the original markdown by John Gruber [1] will be used.
 
-               Available flavors:
 
-               gfm - Github flavored markdown [2]
 
-               extra - Markdown Extra [3]
 
-     --link-style  specifies how links are being rendered:
 
-               footnote (default) - render all links with a footnote, which contains the full URL of the link. This is good for printing the PDF.
 
-               href - render all links with a hyperref, similar to HTML, the link target is not visible in this case.
 
-     --full    ouput a full TEX document with document class, begin and end document. If not given, only the parsed markdown will be output.
 
-     --help    shows this usage information.
 
-     If no file is specified input will be read from STDIN.
 
- Examples:
 
-     Render a file with original markdown:
 
-         $cmd README.md > README.tex
 
-     Render a file using gihtub flavored markdown:
 
-         $cmd --flavor=gfm README.md > README.tex
 
-     Convert the original markdown description to html using STDIN:
 
-         curl http://daringfireball.net/projects/markdown/syntax.text | $cmd > md.tex
 
- [1] http://daringfireball.net/projects/markdown/syntax
 
- [2] https://help.github.com/articles/github-flavored-markdown
 
- [3] http://michelf.ca/projects/php-markdown/extra/
 
- EOF;
 
- 	exit(1);
 
- }
 
- /**
 
-  * Send custom error message to stderr
 
-  * @param $message string
 
-  * @param $callback mixed called before script exit
 
-  * @return void
 
-  */
 
- function error($message, $callback = null) {
 
- 	$fe = fopen("php://stderr", "w");
 
- 	fwrite($fe, "Error: " . $message . "\n");
 
- 	if (is_callable($callback)) {
 
- 		call_user_func($callback);
 
- 	}
 
- 	exit(1);
 
- }
 
 
  |