packages feed

pandoc 1.9.1 → 1.9.1.1

raw patch · 14 files changed

+145/−71 lines, 14 filesbinary-addedPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

INSTALL view
@@ -94,6 +94,37 @@     generate a script that can be run to register the package at     install time. +Creating a relocatable Windows binary+-------------------------------------++On Windows it is possible to compile pandoc such that it+(and its data files) are "relocatable."  You can put the relocatable+binary in any directory (even on a USB drive), and it will look for its+data files there.++    cabal install --flags="embed_data_files" citeproc-hs+    cabal install --flags="executable -library" --datasubdir=++You can find `pandoc.exe` in `dist/build/pandoc`.  Copy this wherever+you please, and copy the following data files to the same place:++    README+    COPYRIGHT+    COPYING+    reference.odt+    reference.docx+    epub.css+    default.csl+    templates/+    data/+    s5/+    slidy/+    dzslides/+    pcre-license.txt+    pcre3.dll++This is essentially what the binary installer does.+ [zip-archive]: http://hackage.haskell.org/package/zip-archive [highlighting-kate]: http://hackage.haskell.org/package/highlighting-kate [blaze-html]: http://hackage.haskell.org/package/blaze-html
changelog view
@@ -1,3 +1,37 @@+pandoc (1.9.1.1)++  * Better handling of raw latex environments in markdown.  Now++        \begin{equation}+        a_1+        \end{equation}++    turns into a raw latex block as expected.++  * Improvements to LaTeX reader:++    + Skip options after block commands.+    + Correctly handle `{\\}` in braced.+    + Added a needed 'try'.+    + Citations: add `, ` to suffix if it doesn't start with space or+      punctuation. Otherwise we get no space between the year and the+      suffix in author-date styles.++  * Added two needed data files for S5.  This fixes a problem with+    `pandoc -t s5 --self-contained`.  Also removed `slides.min.js`,+    which was no longer being used.++  * Fixed some minor problems in `reference.docx`:+    name on "Date" style, `xCs` instead of `xIs`.++  * Fixed a problem creating docx files using a reference docx+    modified using Word.  The problem seems to be that Word+    modifies `_rels/.rels`, changing the Type of the Relationship to+    `docProps/core.xml`. Pandoc now changes this back to the correct+    value if it has been altered, fixing the problem.++  * Fixed html5 template so it works properly with highlighting.+ pandoc (1.9.1)    * LaTeX reader:
pandoc.cabal view
@@ -1,5 +1,5 @@ Name:            pandoc-Version:         1.9.1+Version:         1.9.1.1 Cabal-Version:   >= 1.10 Build-Type:      Custom License:         GPL@@ -59,7 +59,6 @@                  data/LaTeXMathML.js,                  data/MathMLinHTML.js,                  -- data for S5 writer-                 s5/default/slides.min.js,                  s5/default/slides.js,                  s5/default/s5-core.css,                  s5/default/framing.css,@@ -69,6 +68,8 @@                  s5/default/print.css,                  s5/default/slides.css,                  s5/default/iepngfix.htc,+                 s5/default/blank.gif,+                 s5/default/bodybg.gif,                  -- data for slidy writer                  slidy/styles/slidy.css,                  slidy/scripts/slidy.js.gz,
reference.docx view

binary file changed (8294 → 8299 bytes)

+ s5/default/blank.gif view

binary file changed (absent → 49 bytes)

+ s5/default/bodybg.gif view

binary file changed (absent → 10119 bytes)

− s5/default/slides.min.js
@@ -1,1 +0,0 @@-var undef;var slideCSS="";var snum=0;var smax=1;var incpos=0;var number=undef;var s5mode=true;var defaultView="slideshow";var controlVis="visible";var isIE=navigator.appName=="Microsoft Internet Explorer"&&navigator.userAgent.indexOf("Opera")<1?1:0;var isOp=navigator.userAgent.indexOf("Opera")>-1?1:0;var isGe=navigator.userAgent.indexOf("Gecko")>-1&&navigator.userAgent.indexOf("Safari")<1?1:0;function hasClass(a,b){if(!a.className){return false}return(a.className.search("(^|\\s)"+b+"(\\s|$)")!=-1)}function hasValue(a,b){if(!a){return false}return(a.search("(^|\\s)"+b+"(\\s|$)")!=-1)}function removeClass(a,b){if(!a){return}a.className=a.className.replace(new RegExp("(^|\\s)"+b+"(\\s|$)"),RegExp.$1+RegExp.$2)}function addClass(a,b){if(!a||hasClass(a,b)){return}if(a.className){a.className+=" "+b}else{a.className=b}}function GetElementsWithClassName(a,c){var d=document.getElementsByTagName(a);var e=new Array();for(var b=0;b<d.length;b++){if(hasClass(d[b],c)){e[e.length]=d[b]}}return e}function isParentOrSelf(a,b){if(a==null||a.nodeName=="BODY"){return false}else{if(a.id==b){return true}else{return isParentOrSelf(a.parentNode,b)}}}function nodeValue(d){var a="";if(d.nodeType==1){var c=d.childNodes;for(var b=0;b<c.length;++b){a+=nodeValue(c[b])}}else{if(d.nodeType==3){a=d.nodeValue}}return(a)}function slideLabel(){var f=GetElementsWithClassName("*","slide");var g=document.getElementById("jumplist");smax=f.length;for(var c=0;c<smax;c++){var e=f[c];var i="slide"+c.toString();e.setAttribute("id",i);if(isOp){continue}var d="";var b=e.firstChild;if(!b){continue}while(b&&b.nodeType==3){b=b.nextSibling}if(!b){continue}var h=b.childNodes;for(var a=0;a<h.length;a++){d+=nodeValue(h[a])}g.options[g.length]=new Option(c+" : "+d,c)}}function currentSlide(){var a;if(document.getElementById){a=document.getElementById("currentSlide")}else{a=document.currentSlide}a.innerHTML='<span id="csHere">'+snum+'</span> <span id="csSep">/</span> <span id="csTotal">'+(smax-1)+"</span>";if(snum==0){a.style.visibility="hidden"}else{a.style.visibility="visible"}}function go(c){if(document.getElementById("slideProj").disabled||c==0){return}var b=document.getElementById("jumplist");var g="slide"+snum;var e=document.getElementById(g);if(incrementals[snum].length>0){for(var a=0;a<incrementals[snum].length;a++){removeClass(incrementals[snum][a],"current");removeClass(incrementals[snum][a],"incremental")}}if(c!="j"){snum+=c;lmax=smax-1;if(snum>lmax){snum=lmax}if(snum<0){snum=0}}else{snum=parseInt(b.value)}var f="slide"+snum;var d=document.getElementById(f);if(!d){d=document.getElementById("slide0");snum=0}if(c<0){incpos=incrementals[snum].length}else{incpos=0}if(incrementals[snum].length>0&&incpos==0){for(var a=0;a<incrementals[snum].length;a++){if(hasClass(incrementals[snum][a],"current")){incpos=a+1}else{addClass(incrementals[snum][a],"incremental")}}}if(incrementals[snum].length>0&&incpos>0){addClass(incrementals[snum][incpos-1],"current")}e.style.visibility="hidden";d.style.visibility="visible";b.selectedIndex=snum;currentSlide();number=0}function goTo(a){if(a>=smax||a==snum){return}go(a-snum)}function subgo(a){if(a>0){removeClass(incrementals[snum][incpos-1],"current");removeClass(incrementals[snum][incpos],"incremental");addClass(incrementals[snum][incpos],"current");incpos++}else{incpos--;removeClass(incrementals[snum][incpos],"current");addClass(incrementals[snum][incpos],"incremental");addClass(incrementals[snum][incpos-1],"current")}}function toggle(){var b=GetElementsWithClassName("*","slide");var d=document.getElementById("slideProj");var c=document.getElementById("outlineStyle");if(!d.disabled){d.disabled=true;c.disabled=false;s5mode=false;fontSize("1em");for(var e=0;e<smax;e++){var a=b[e];a.style.visibility="visible"}}else{d.disabled=false;c.disabled=true;s5mode=true;fontScale();for(var e=0;e<smax;e++){var a=b[e];a.style.visibility="hidden"}b[snum].style.visibility="visible"}}function showHide(a){var b=GetElementsWithClassName("*","hideme")[0];switch(a){case"s":b.style.visibility="visible";break;case"h":b.style.visibility="hidden";break;case"k":if(b.style.visibility!="visible"){b.style.visibility="visible"}else{b.style.visibility="hidden"}break}}function keys(a){if(!a){a=event;a.which=a.keyCode}if(a.which==84){toggle();return}if(s5mode){switch(a.which){case 10:case 13:if(window.event&&isParentOrSelf(window.event.srcElement,"controls")){return}if(a.target&&isParentOrSelf(a.target,"controls")){return}if(number!=undef){goTo(number);break}case 32:case 34:case 39:case 40:if(number!=undef){go(number)}else{if(!incrementals[snum]||incpos>=incrementals[snum].length){go(1)}else{subgo(1)}}break;case 33:case 37:case 38:if(number!=undef){go(-1*number)}else{if(!incrementals[snum]||incpos<=0){go(-1)}else{subgo(-1)}}break;case 36:goTo(0);break;case 35:goTo(smax-1);break;case 67:showHide("k");break}if(a.which<48||a.which>57){number=undef}else{if(window.event&&isParentOrSelf(window.event.srcElement,"controls")){return}if(a.target&&isParentOrSelf(a.target,"controls")){return}number=(((number!=undef)?number:0)*10)+(a.which-48)}}return false}function clicker(b){number=undef;var a;if(window.event){a=window.event.srcElement;b=window.event}else{a=b.target}if(a.getAttribute("href")!=null||hasValue(a.rel,"external")||isParentOrSelf(a,"controls")||isParentOrSelf(a,"embed")||isParentOrSelf(a,"object")){return true}if(!b.which||b.which==1){if(!incrementals[snum]||incpos>=incrementals[snum].length){go(1)}else{subgo(1)}}}function findSlide(d){var c=null;var b=GetElementsWithClassName("*","slide");for(var a=0;a<b.length;a++){var e=b[a];if((e.name&&e.name==d)||(e.id&&e.id==d)){c=e;break}}while(c!=null&&c.nodeName!="BODY"){if(hasClass(c,"slide")){return parseInt(c.id.slice(5))}c=c.parentNode}return null}function slideJump(){if(window.location.hash==null){return}var b=/^#slide(\d+)$/;var c=b.exec(window.location.hash);var a=null;if(c!=null){a=parseInt(c[1])}else{a=findSlide(window.location.hash.slice(1))}if(a!=null){go(a-snum)}}function fixLinks(){var f=window.location.href;f=f.slice(0,f.length-window.location.hash.length);var g=document.getElementsByTagName("A");for(var e=0;e<g.length;e++){var b=g[e].href;var d=b.match("#slide[0-9]{1,2}");if((d)&&(d[0].slice(0,1)=="#")){var c=findSlide(d[0].slice(1));if(c!=null){if(g[e].addEventListener){g[e].addEventListener("click",new Function("e","if (document.getElementById('slideProj').disabled) return;go("+c+" - snum); if (e.preventDefault) e.preventDefault();"),true)}else{if(g[e].attachEvent){g[e].attachEvent("onclick",new Function("","if (document.getElementById('slideProj').disabled) return;go("+c+" - snum); event.returnValue = false;"))}}}}}}function externalLinks(){if(!document.getElementsByTagName){return}var c=document.getElementsByTagName("a");for(var b=0;b<c.length;b++){var a=c[b];if(a.getAttribute("href")&&hasValue(a.rel,"external")){a.target="_blank";addClass(a,"external")}}}function createControls(){var e=document.getElementById("controls");if(!e){return}var c=" onmouseover=\"showHide('s');\" onmouseout=\"showHide('h');\"";var d,a="";if(controlVis=="hidden"){d=c}else{a=c}e.innerHTML='<form action="#" id="controlForm"'+d+'><div id="navLinks"><a accesskey="t" id="toggle" href="javascript:toggle();">&#216;</a><a accesskey="z" id="prev" href="javascript:go(-1);">&laquo;</a><a accesskey="x" id="next" href="javascript:go(1);">&raquo;</a><div id="navList"'+a+'><select id="jumplist" onchange="go(\'j\');"></select></div></div></form>';if(controlVis=="hidden"){var b=document.getElementById("navLinks")}else{var b=document.getElementById("jumplist")}addClass(b,"hideme")}function fontScale(){if(!s5mode){return false}var f=22;var a=32;if(window.innerHeight){var c=window.innerHeight;var e=window.innerWidth}else{if(document.documentElement.clientHeight){var c=document.documentElement.clientHeight;var e=document.documentElement.clientWidth}else{if(document.body.clientHeight){var c=document.body.clientHeight;var e=document.body.clientWidth}else{var c=700;var e=1024}}}var b=Math.min(Math.round(c/f),Math.round(e/a));fontSize(b+"px");if(isGe){var d=document.getElementsByTagName("body")[0];d.style.display="none";d.style.display="block"}}function fontSize(a){if(!(s5ss=document.getElementById("s5ss"))){if(!isIE){document.getElementsByTagName("head")[0].appendChild(s5ss=document.createElement("style"));s5ss.setAttribute("media","screen, projection");s5ss.setAttribute("id","s5ss")}else{document.createStyleSheet();document.s5ss=document.styleSheets[document.styleSheets.length-1]}}if(!isIE){while(s5ss.lastChild){s5ss.removeChild(s5ss.lastChild)}s5ss.appendChild(document.createTextNode("body {font-size: "+a+" !important;}"))}else{document.s5ss.addRule("body","font-size: "+a+" !important;")}}function notOperaFix(){slideCSS=document.getElementById("slideProj").href;var b=document.getElementById("slideProj");var a=document.getElementById("outlineStyle");b.setAttribute("media","screen");a.disabled=true;if(isGe){b.setAttribute("href","null");b.setAttribute("href",slideCSS)}if(isIE&&document.styleSheets&&document.styleSheets[0]){document.styleSheets[0].addRule("img","behavior: url(ui/default/iepngfix.htc)");document.styleSheets[0].addRule("div","behavior: url(ui/default/iepngfix.htc)");document.styleSheets[0].addRule(".slide","behavior: url(ui/default/iepngfix.htc)")}}function getIncrementals(e){var d=new Array();if(!e){return d}var c=e.childNodes;for(var b=0;b<c.length;b++){var f=c[b];if(hasClass(f,"incremental")){if(f.nodeName=="OL"||f.nodeName=="UL"){removeClass(f,"incremental");for(var a=0;a<f.childNodes.length;a++){if(f.childNodes[a].nodeType==1){addClass(f.childNodes[a],"incremental")}}}else{d[d.length]=f;removeClass(f,"incremental")}}if(hasClass(f,"show-first")){if(f.nodeName=="OL"||f.nodeName=="UL"){removeClass(f,"show-first");if(f.childNodes[isGe].nodeType==1){removeClass(f.childNodes[isGe],"incremental")}}else{d[d.length]=f}}d=d.concat(getIncrementals(f))}return d}function createIncrementals(){var b=new Array();for(var a=0;a<smax;a++){b[a]=getIncrementals(document.getElementById("slide"+a))}return b}function defaultCheck(){var a=document.getElementsByTagName("meta");for(var b=0;b<a.length;b++){if(a[b].name=="defaultView"){defaultView=a[b].content}if(a[b].name=="controlVis"){controlVis=a[b].content}}}function trap(a){if(!a){a=event;a.which=a.keyCode}try{modifierKey=a.ctrlKey||a.altKey||a.metaKey}catch(a){modifierKey=false}return modifierKey||a.which==0}function startup(){defaultCheck();if(!isOp){createControls()}slideLabel();fixLinks();externalLinks();fontScale();if(!isOp){notOperaFix();incrementals=createIncrementals();slideJump();if(defaultView=="outline"){toggle()}document.onkeyup=keys;document.onkeypress=trap;document.onclick=clicker}}window.onload=startup;window.onresize=function(){setTimeout("fontScale()",50)};
src/Tests/Helpers.hs view
@@ -69,15 +69,13 @@  vividize :: (DI,String) -> String vividize (B,s) = s-vividize (_,s) = vivid s+vividize (F,s) = s+vividize (S,s) = setSGRCode [SetColor Background Dull Red+                         , SetColor Foreground Vivid White] ++ s+                 ++ setSGRCode [Reset]  property :: QP.Testable a => TestName -> a -> Test property = testProperty--vivid :: String -> String-vivid s = setSGRCode [SetColor Background Dull Red-                     , SetColor Foreground Vivid White] ++ s-          ++ setSGRCode [Reset]  infix 5 =?> (=?>) :: a -> b -> (a,b)
src/Tests/Readers/LaTeX.hs view
@@ -78,14 +78,14 @@     =?> para (cite [baseCitation] (rt "\\citet{item1}"))   , "suffix" =: "\\citet[p.~30]{item1}"     =?> para-        (cite [baseCitation{ citationSuffix = toList $ text "p.\160\&30" }] (rt "\\citet[p.~30]{item1}"))+        (cite [baseCitation{ citationSuffix = toList $ text ", p.\160\&30" }] (rt "\\citet[p.~30]{item1}"))   , "suffix long" =: "\\citet[p.~30, with suffix]{item1}"     =?> para (cite [baseCitation{ citationSuffix =-                       toList $ text "p.\160\&30, with suffix" }] (rt "\\citet[p.~30, with suffix]{item1}"))+                       toList $ text ", p.\160\&30, with suffix" }] (rt "\\citet[p.~30, with suffix]{item1}"))   , "multiple" =: "\\citeauthor{item1} \\citetext{\\citeyear{item1}; \\citeyear[p.~30]{item2}; \\citealp[see also][]{item3}}"     =?> para (cite [baseCitation{ citationMode = AuthorInText }                    ,baseCitation{ citationMode = SuppressAuthor-                                , citationSuffix = [Str "p.\160\&30"]+                                , citationSuffix = [Str ",",Space,Str "p.\160\&30"]                                 , citationId = "item2" }                    ,baseCitation{ citationId = "item3"                                 , citationPrefix = [Str "see",Space,Str "also"]@@ -94,28 +94,28 @@   , "group" =: "\\citetext{\\citealp[see][p.~34--35]{item1}; \\citealp[also][chap. 3]{item3}}"     =?> para (cite [baseCitation{ citationMode = NormalCitation                                 , citationPrefix = [Str "see"]-                                , citationSuffix = [Str "p.\160\&34\8211\&35"] }+                                , citationSuffix = [Str ",",Space,Str "p.\160\&34\8211\&35"] }                    ,baseCitation{ citationMode = NormalCitation                                 , citationId = "item3"                                 , citationPrefix = [Str "also"]-                                , citationSuffix = [Str "chap.",Space,Str "3"] }+                                , citationSuffix = [Str ",",Space,Str "chap.",Space,Str "3"] }                    ] (rt "\\citetext{\\citealp[see][p.~34--35]{item1}; \\citealp[also][chap. 3]{item3}}"))   , "suffix and locator" =: "\\citep[pp.~33, 35--37, and nowhere else]{item1}"     =?> para (cite [baseCitation{ citationMode = NormalCitation-                                , citationSuffix = [Str "pp.\160\&33,",Space,Str "35\8211\&37,",Space,Str "and",Space,Str "nowhere",Space, Str "else"] }] (rt "\\citep[pp.~33, 35--37, and nowhere else]{item1}"))+                                , citationSuffix = [Str ",",Space,Str "pp.\160\&33,",Space,Str "35\8211\&37,",Space,Str "and",Space,Str "nowhere",Space, Str "else"] }] (rt "\\citep[pp.~33, 35--37, and nowhere else]{item1}"))   , "suffix only" =: "\\citep[and nowhere else]{item1}"     =?> para (cite [baseCitation{ citationMode = NormalCitation-                                , citationSuffix = toList $ text "and nowhere else" }] (rt "\\citep[and nowhere else]{item1}"))+                                , citationSuffix = toList $ text ", and nowhere else" }] (rt "\\citep[and nowhere else]{item1}"))   , "no author" =: "\\citeyearpar{item1}, and now Doe with a locator \\citeyearpar[p.~44]{item2}"     =?> para (cite [baseCitation{ citationMode = SuppressAuthor }] (rt "\\citeyearpar{item1}") <>               text ", and now Doe with a locator " <>               cite [baseCitation{ citationMode = SuppressAuthor-                                , citationSuffix = [Str "p.\160\&44"]+                                , citationSuffix = [Str ",",Space,Str "p.\160\&44"]                                 , citationId = "item2" }] (rt "\\citeyearpar[p.~44]{item2}"))   , "markup" =: "\\citep[\\emph{see}][p. \\textbf{32}]{item1}"     =?> para (cite [baseCitation{ citationMode = NormalCitation                                 , citationPrefix = [Emph [Str "see"]]-                                , citationSuffix = [Str "p.",Space,+                                , citationSuffix = [Str ",",Space,Str "p.",Space,                                     Strong [Str "32"]] }] (rt "\\citep[\\emph{see}][p. \\textbf{32}]{item1}"))   ] @@ -125,14 +125,14 @@     =?> para (cite [baseCitation] (rt "\\textcite{item1}"))   , "suffix" =: "\\textcite[p.~30]{item1}"     =?> para-        (cite [baseCitation{ citationSuffix = toList $ text "p.\160\&30" }] (rt "\\textcite[p.~30]{item1}"))+        (cite [baseCitation{ citationSuffix = toList $ text ", p.\160\&30" }] (rt "\\textcite[p.~30]{item1}"))   , "suffix long" =: "\\textcite[p.~30, with suffix]{item1}"     =?> para (cite [baseCitation{ citationSuffix =-                       toList $ text "p.\160\&30, with suffix" }] (rt "\\textcite[p.~30, with suffix]{item1}"))+                       toList $ text ", p.\160\&30, with suffix" }] (rt "\\textcite[p.~30, with suffix]{item1}"))   , "multiple" =: "\\textcites{item1}[p.~30]{item2}[see also][]{item3}"     =?> para (cite [baseCitation{ citationMode = AuthorInText }                    ,baseCitation{ citationMode = NormalCitation-                                , citationSuffix = [Str "p.\160\&30"]+                                , citationSuffix = [Str ",",Space,Str "p.\160\&30"]                                 , citationId = "item2" }                    ,baseCitation{ citationId = "item3"                                 , citationPrefix = [Str "see",Space,Str "also"]@@ -141,28 +141,28 @@   , "group" =: "\\autocites[see][p.~34--35]{item1}[also][chap. 3]{item3}"     =?> para (cite [baseCitation{ citationMode = NormalCitation                                 , citationPrefix = [Str "see"]-                                , citationSuffix = [Str "p.\160\&34\8211\&35"] }+                                , citationSuffix = [Str ",",Space,Str "p.\160\&34\8211\&35"] }                    ,baseCitation{ citationMode = NormalCitation                                 , citationId = "item3"                                 , citationPrefix = [Str "also"]-                                , citationSuffix = [Str "chap.",Space,Str "3"] }+                                , citationSuffix = [Str ",",Space,Str "chap.",Space,Str "3"] }                    ] (rt "\\autocites[see][p.~34--35]{item1}[also][chap. 3]{item3}"))   , "suffix and locator" =: "\\autocite[pp.~33, 35--37, and nowhere else]{item1}"     =?> para (cite [baseCitation{ citationMode = NormalCitation-                                , citationSuffix = [Str "pp.\160\&33,",Space,Str "35\8211\&37,",Space,Str "and",Space,Str "nowhere",Space, Str "else"] }] (rt "\\autocite[pp.~33, 35--37, and nowhere else]{item1}"))+                                , citationSuffix = [Str ",",Space,Str "pp.\160\&33,",Space,Str "35\8211\&37,",Space,Str "and",Space,Str "nowhere",Space, Str "else"] }] (rt "\\autocite[pp.~33, 35--37, and nowhere else]{item1}"))   , "suffix only" =: "\\autocite[and nowhere else]{item1}"     =?> para (cite [baseCitation{ citationMode = NormalCitation-                                , citationSuffix = toList $ text "and nowhere else" }] (rt "\\autocite[and nowhere else]{item1}"))+                                , citationSuffix = toList $ text ", and nowhere else" }] (rt "\\autocite[and nowhere else]{item1}"))   , "no author" =: "\\autocite*{item1}, and now Doe with a locator \\autocite*[p.~44]{item2}"     =?> para (cite [baseCitation{ citationMode = SuppressAuthor }] (rt "\\autocite*{item1}") <>               text ", and now Doe with a locator " <>               cite [baseCitation{ citationMode = SuppressAuthor-                                , citationSuffix = [Str "p.\160\&44"]+                                , citationSuffix = [Str ",",Space,Str "p.\160\&44"]                                 , citationId = "item2" }] (rt "\\autocite*[p.~44]{item2}"))   , "markup" =: "\\autocite[\\emph{see}][p. \\textbf{32}]{item1}"     =?> para (cite [baseCitation{ citationMode = NormalCitation                                 , citationPrefix = [Emph [Str "see"]]-                                , citationSuffix = [Str "p.",Space,+                                , citationSuffix = [Str ",",Space,Str "p.",Space,                                     Strong [Str "32"]] }] (rt "\\autocite[\\emph{see}][p. \\textbf{32}]{item1}"))   , "parencite" =: "\\parencite{item1}"     =?> para (cite [baseCitation{ citationMode = NormalCitation }] (rt "\\parencite{item1}"))
src/Text/Pandoc/Readers/LaTeX.hs view
@@ -41,7 +41,7 @@ import Data.Char ( chr, ord ) import Control.Monad import Text.Pandoc.Builder-import Data.Char (isLetter)+import Data.Char (isLetter, isPunctuation, isSpace) import Control.Applicative import Data.Monoid import System.FilePath (replaceExtension)@@ -120,6 +120,7 @@          (  many1 (satisfy (\c -> c /= '\\' && c /= '}' && c /= '{'))         <|> try (string "\\}")         <|> try (string "\\{")+        <|> try (string "\\\\")         <|> ((\x -> "{" ++ x ++ "}") <$> braced)         <|> count 1 anyChar          ) (char '}'))@@ -172,6 +173,7 @@      <|> (str <$> count 1 tildeEscape)      <|> (str <$> string "]")      <|> (str <$> string "#") -- TODO print warning?+     <|> (str <$> string "&") -- TODO print warning?      -- <|> (str <$> count 1 (satisfy (\c -> c /= '\\' && c /='\n' && c /='}' && c /='{'))) -- eat random leftover characters  inlines :: LP Inlines@@ -208,28 +210,28 @@ -- eat an optional argument and one or more arguments in braces ignoreInlines :: String -> (String, LP Inlines) ignoreInlines name = (name, doraw <|> (mempty <$ optargs))-  where optargs = optional opt *> skipMany (optional sp *> braced)+  where optargs = skipopts *> skipMany (try $ optional sp *> braced)         contseq = '\\':name         doraw = (rawInline "latex" . (contseq ++) . snd) <$>                  (getState >>= guard . stateParseRaw >> (withRaw optargs))  ignoreBlocks :: String -> (String, LP Blocks) ignoreBlocks name = (name, doraw <|> (mempty <$ optargs))-  where optargs = optional opt *> skipMany (optional sp *> braced)+  where optargs = skipopts *> skipMany (try $ optional sp *> braced)         contseq = '\\':name         doraw = (rawBlock "latex" . (contseq ++) . snd) <$>                  (getState >>= guard . stateParseRaw >> (withRaw optargs))  blockCommands :: M.Map String (LP Blocks) blockCommands = M.fromList $-  [ ("par", pure mempty)-  , ("title", mempty <$ (tok >>= addTitle))-  , ("subtitle", mempty <$ (tok >>= addSubtitle))-  , ("author", mempty <$ authors)-  -- in letter class, temp. store address & sig as title, author-  , ("address", mempty <$ (tok >>= addTitle))-  , ("signature", mempty <$ authors)-  , ("date", mempty <$ (tok >>= addDate))+  [ ("par", mempty <$ skipopts)+  , ("title", mempty <$ (skipopts *> tok >>= addTitle))+  , ("subtitle", mempty <$ (skipopts *> tok >>= addSubtitle))+  , ("author", mempty <$ (skipopts *> authors))+  -- -- in letter class, temp. store address & sig as title, author+  , ("address", mempty <$ (skipopts *> tok >>= addTitle))+  , ("signature", mempty <$ (skipopts *> authors))+  , ("date", mempty <$ (skipopts *> tok >>= addDate))   -- sectioning   , ("chapter", updateState (\s -> s{ stateHasChapters = True }) *> section 0)   , ("section", section 1)@@ -241,14 +243,14 @@   , ("frametitle", section 3)   , ("framesubtitle", section 4)   -- letters-  , ("opening", (para . trimInlines) <$> tok)-  , ("closing", closing)+  , ("opening", (para . trimInlines) <$> (skipopts *> tok))+  , ("closing", skipopts *> closing)   ---  , ("rule", optional opt *> tok *> tok *> pure horizontalRule)+  , ("rule", skipopts *> tok *> tok *> pure horizontalRule)   , ("begin", mzero)   -- these are here so they won't be interpreted as inline   , ("end", mzero)-  , ("item", loose_item)-  , ("documentclass", optional opt *> braced *> preamble)+  , ("item", skipopts *> loose_item)+  , ("documentclass", skipopts *> braced *> preamble)   ] ++ map ignoreBlocks   -- these commands will be ignored unless --parse-raw is specified,   -- in which case they will appear as raw latex blocks@@ -291,8 +293,7 @@ section lvl = do   hasChapters <- stateHasChapters `fmap` getState   let lvl' = if hasChapters then lvl + 1 else lvl-  optional sp-  optional opt+  skipopts   contents <- grouped inline   return $ header lvl' contents @@ -310,7 +311,7 @@                            Nothing                              | parseRaw  ->                                 (rawInline "latex" . (('\\':name') ++)) <$>-                                 (withRaw (optional opt *> many braced)+                                 (withRaw (skipopts *> many braced)                                       >>= applyMacros' . snd)                              | otherwise -> return mempty @@ -399,7 +400,7 @@   , ("href", (unescapeURL <$> braced <* optional sp) >>= \url ->        tok >>= \lab ->          pure (link url "" lab))-  , ("includegraphics", optional opt *> (unescapeURL <$> braced) >>=+  , ("includegraphics", skipopts *> (unescapeURL <$> braced) >>=        (\src -> pure (image src "" (str "image"))))   , ("cite", citation "cite" NormalCitation False)   , ("citep", citation "citep" NormalCitation False)@@ -573,6 +574,9 @@ opt :: LP Inlines opt = bracketed inline <* optional sp +skipopts :: LP ()+skipopts = skipMany opt+ inlineText :: LP Inlines inlineText = str <$> many1 inlineChar @@ -619,7 +623,7 @@ include :: LP ([FilePath], String) include = do   name <- controlSeq "include" <|> controlSeq "usepackage"-  optional opt+  skipopts   fs <- (splitBy (==',')) <$> braced   rest <- getInput   let fs' = if name == "include"@@ -648,15 +652,7 @@   return (r,rest)  rawLaTeXBlock :: GenParser Char ParserState String-rawLaTeXBlock =-  (rawLaTeXEnvironment <|> (snd <$> withRaw blockCommand)) >>= applyMacros'--rawLaTeXEnvironment :: GenParser Char ParserState String-rawLaTeXEnvironment = try $ do-  controlSeq "begin"-  name <- braced-  let addBegin x = "\\begin{" ++ name ++ "}" ++ x-  addBegin <$> (withRaw (env name blocks) >>= applyMacros' . snd)+rawLaTeXBlock = snd <$> withRaw (environment <|> blockCommand)  rawLaTeXInline :: GenParser Char ParserState Inline rawLaTeXInline = do@@ -720,7 +716,7 @@   return $ para (trimInlines contents) <> sigs  item :: LP Blocks-item = blocks *> controlSeq "item" *> optional opt *> blocks+item = blocks *> controlSeq "item" *> skipopts *> blocks  loose_item :: LP Blocks loose_item = do@@ -758,7 +754,7 @@  verbEnv :: String -> LP String verbEnv name = do-  optional opt+  skipopts   optional blankline   let endEnv = try $ controlSeq "end" *> braced >>= guard . (== name)   res <- manyTill anyChar endEnv@@ -804,20 +800,24 @@  -- citations -addPrefix :: Inlines -> [Citation] -> [Citation]-addPrefix p (k:ks)   = k {citationPrefix = toList p ++ citationPrefix k} : ks+addPrefix :: [Inline] -> [Citation] -> [Citation]+addPrefix p (k:ks)   = k {citationPrefix = p ++ citationPrefix k} : ks addPrefix _ _ = [] -addSuffix :: Inlines -> [Citation] -> [Citation]+addSuffix :: [Inline] -> [Citation] -> [Citation] addSuffix s ks@(_:_) =-  let k = last ks-  in  init ks ++ [k {citationSuffix = citationSuffix k ++ toList s}]+  let k  = last ks+      s' = case s of+                (Str (c:_):_)+                  | not (isPunctuation c || isSpace c) -> Str "," : Space : s+                _                                      -> s+  in  init ks ++ [k {citationSuffix = citationSuffix k ++ s'}] addSuffix _ _ = []  simpleCiteArgs :: LP [Citation] simpleCiteArgs = try $ do-  first  <- optionMaybe opt-  second <- optionMaybe opt+  first  <- optionMaybe $ toList <$> opt+  second <- optionMaybe $ toList <$> opt   char '{'   keys <- manyTill citationLabel (char '}')   let (pre, suf) = case (first  , second ) of@@ -854,7 +854,7 @@  complexNatbibCitation :: CitationMode -> LP Inlines complexNatbibCitation mode = try $ do-  let ils = (trimInlines . mconcat) <$>+  let ils = (toList . trimInlines . mconcat) <$>               many (notFollowedBy (oneOf "\\};") >> inline)   let parseOne = try $ do                    skipSpaces
src/Text/Pandoc/Writers/Docx.hs view
@@ -166,8 +166,17 @@           : mknode "dcterms:modified" [("xsi:type","dcterms:W3CDTF")] () -- put current time here           : map (mknode "dc:creator" [] . stringify) auths   let docPropsEntry = toEntry docPropsPath epochtime $ fromString $ showTopElement' docProps+  let relsPath = "_rels/.rels"+  rels <- case findEntryByPath relsPath refArchive of+                   Just e  -> return $ toString $ fromEntry e+                   Nothing -> err 57 "could not find .rels/_rels in reference docx"+  -- fix .rels/_rels, which can get screwed up when reference.docx is edited by Word+  let rels' = substitute "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties"+                  "http://schemas.openxmlformats.org/officedocument/2006/relationships/metadata/core-properties"+                  rels+  let relsEntry = toEntry relsPath epochtime $ fromString rels'   let archive = foldr addEntryToArchive refArchive $-                  contentEntry : relEntry : numEntry : styleEntry : docPropsEntry : imageEntries+                  relsEntry : contentEntry : relEntry : numEntry : styleEntry : docPropsEntry : imageEntries   return $ fromArchive archive  styleToOpenXml :: Style -> [Element]
src/pandoc.hs view
@@ -67,8 +67,8 @@  compileInfo :: String compileInfo =-  "\nCompiled with citeproc-hs " ++ VERSION_citeproc_hs ++ " and " ++-   "highlighting-kate " ++ VERSION_highlighting_kate +++  "\nCompiled with citeproc-hs " ++ VERSION_citeproc_hs ++ ", texmath " +++  VERSION_texmath ++ ", highlighting-kate " ++ VERSION_highlighting_kate ++    ".\nSyntax highlighting is supported for the following languages:\n    " ++        wrapWords 4 78 languages 
templates/default.html5 view
@@ -14,7 +14,9 @@     <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>   <![endif]--> $if(highlighting-css)$+  <style type="text/css"> $highlighting-css$+  </style> $endif$ $for(css)$   <link rel="stylesheet" href="$css$">
tests/latex-reader.native view
@@ -259,7 +259,7 @@ ,HorizontalRule ,Header 1 [Str "LaTeX"] ,BulletList- [[Para [Cite [Citation {citationId = "smith.1899", citationPrefix = [], citationSuffix = [Str "22-23"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [RawInline "latex" "\\cite[22-23]{smith.1899}"]]]+ [[Para [Cite [Citation {citationId = "smith.1899", citationPrefix = [], citationSuffix = [Str ",",Space,Str "22-23"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [RawInline "latex" "\\cite[22-23]{smith.1899}"]]]  ,[Para [RawInline "latex" "\\doublespacing"]]  ,[Para [Math InlineMath "2+2=4"]]  ,[Para [Math InlineMath "x \\in y"]]