From: <mi...@us...> - 2009-05-06 12:10:20
|
Author: milde Date: 2009-05-06 14:10:07 +0200 (Wed, 06 May 2009) New Revision: 5936 Modified: trunk/sandbox/code-block-directive/data/pygments-docutilsroles.sty trunk/sandbox/code-block-directive/docs/myfunction.py.pdf trunk/sandbox/code-block-directive/docs/syntax-highlight.txt trunk/sandbox/code-block-directive/pygments_code_block_directive.py trunk/sandbox/latex-variants/tests/input/strong-emphasis.txt trunk/sandbox/stylesheets/listings-tex-options.sty Log: Minor sandbox updates Modified: trunk/sandbox/code-block-directive/data/pygments-docutilsroles.sty =================================================================== --- trunk/sandbox/code-block-directive/data/pygments-docutilsroles.sty 2009-05-06 12:07:09 UTC (rev 5935) +++ trunk/sandbox/code-block-directive/data/pygments-docutilsroles.sty 2009-05-06 12:10:07 UTC (rev 5936) @@ -36,20 +36,111 @@ % Colours with LaTeX \usepackage{color} +% Standard Postscript fonts +\usepackage[sc]{mathpazo} +\RequirePackage[scaled=.95]{helvet} % scaled to fit Palatino + % Courier monotype fonts with bold and italic variants -\usepackage{courier} +% \usepackage{courier} +% TXfonts monotype +\renewcommand{\ttdefault}{txtt} % keyword -\newcommand\docutilsrolek[1]{\textcolor[rgb]{0.67,0.13,1.00}{\textbf{#1}}} +\newcommand\docutilsrolek[1]{\textbf{\textbf{#1}}} % new function \newcommand\docutilsrolenf[1]{\textcolor[rgb]{0.00,0.25,0.82}{#1}} % punktuation -\newcommand\docutilsrolep[1]{\textcolor[rgb]{0.72,0.53,0.04}{#1}} +% \newcommand\docutilsrolep[1]{\textcolor[rgb]{0.72,0.53,0.04}{#1}} % string \newcommand\docutilsroles[1]{\textcolor[rgb]{0.40,0.40,0.40}{\textit{#1}}} % number -\newcommand\docutilsrolemf[1]{\textcolor[rgb]{0.00,0.53,0.00}{#1}} +% \newcommand\docutilsrolemf[1]{\textcolor[rgb]{0.00,0.53,0.00}{#1}} % operator \newcommand\docutilsrolear[1]{\textcolor[rgb]{0.72,0.53,0.04}{#1}} -% Incomplete! +% Incomplete! + +% All STANDARD_TYPES below may appear in the output. (But only the ones +% you like to style need to be defined :-) + +% STANDARD_TYPES = { +% Token: '', +% +% Text: '', +% Whitespace: 'w', +% Error: 'err', +% Other: 'x', +% +% Keyword: 'k', +% Keyword.Constant: 'kc', +% Keyword.Declaration: 'kd', +% Keyword.Pseudo: 'kp', +% Keyword.Reserved: 'kr', +% Keyword.Type: 'kt', +% +% Name: 'n', +% Name.Attribute: 'na', +% Name.Builtin: 'nb', +% Name.Builtin.Pseudo: 'bp', +% Name.Class: 'nc', +% Name.Constant: 'no', +% Name.Decorator: 'nd', +% Name.Entity: 'ni', +% Name.Exception: 'ne', +% Name.Function: 'nf', +% Name.Property: 'py', +% Name.Label: 'nl', +% Name.Namespace: 'nn', +% Name.Other: 'nx', +% Name.Tag: 'nt', +% Name.Variable: 'nv', +% Name.Variable.Class: 'vc', +% Name.Variable.Global: 'vg', +% Name.Variable.Instance: 'vi', +% +% Literal: 'l', +% Literal.Date: 'ld', +% +% String: 's', +% String.Backtick: 'sb', +% String.Char: 'sc', +% String.Doc: 'sd', +% String.Double: 's2', +% String.Escape: 'se', +% String.Heredoc: 'sh', +% String.Interpol: 'si', +% String.Other: 'sx', +% String.Regex: 'sr', +% String.Single: 's1', +% String.Symbol: 'ss', +% +% Number: 'm', +% Number.Float: 'mf', +% Number.Hex: 'mh', +% Number.Integer: 'mi', +% Number.Integer.Long: 'il', +% Number.Oct: 'mo', +% +% Operator: 'o', +% Operator.Word: 'ow', +% +% Punctuation: 'p', +% +% Comment: 'c', +% Comment.Multiline: 'cm', +% Comment.Preproc: 'cp', +% Comment.Single: 'c1', +% Comment.Special: 'cs', +% +% Generic: 'g', +% Generic.Deleted: 'gd', +% Generic.Emph: 'ge', +% Generic.Error: 'gr', +% Generic.Heading: 'gh', +% Generic.Inserted: 'gi', +% Generic.Output: 'go', +% Generic.Prompt: 'gp', +% Generic.Strong: 'gs', +% Generic.Subheading: 'gu', +% Generic.Traceback: 'gt', +% } Modified: trunk/sandbox/code-block-directive/docs/myfunction.py.pdf =================================================================== (Binary files differ) Modified: trunk/sandbox/code-block-directive/docs/syntax-highlight.txt =================================================================== --- trunk/sandbox/code-block-directive/docs/syntax-highlight.txt 2009-05-06 12:07:09 UTC (rev 5935) +++ trunk/sandbox/code-block-directive/docs/syntax-highlight.txt 2009-05-06 12:10:07 UTC (rev 5936) @@ -101,6 +101,12 @@ Summary """"""" +On 2009-02-20, David Goodger wrote in docutils-devel + + I'd like to see the extensions implemented in Bruce and Sphinx etc. + folded back into core Docutils eventually. Otherwise we'll end up with + incompatible systems. + Pygments_ seems to be the most promising Docutils highlighter. For printed output and PDFs via LaTeX, the listings_ package is a viable Modified: trunk/sandbox/code-block-directive/pygments_code_block_directive.py =================================================================== --- trunk/sandbox/code-block-directive/pygments_code_block_directive.py 2009-05-06 12:07:09 UTC (rev 5935) +++ trunk/sandbox/code-block-directive/pygments_code_block_directive.py 2009-05-06 12:10:07 UTC (rev 5936) @@ -3,10 +3,12 @@ # :Author: the Pygments team; Felix Wiemann; Guenter Milde # :Date: $Date$ # :Copyright: This module has been placed in the public domain. -# +# # This is a merge of `Using Pygments in ReST documents`_ from the pygments_ # documentation, and a `proof of concept`_ by Felix Wiemann. -# +# +# .. class:: borderless +# # ========== =========================================================== # 2007-06-01 Removed redundancy from class values. # 2007-06-04 Merge of successive tokens of same type @@ -16,10 +18,10 @@ # allowing the use of pygments-produced style sheets. # 2007-06-07 Merge in the formatting of the parsed tokens # (misnamed as docutils_formatter) as class DocutilsInterface -# 2007-06-08 Failsave implementation (fallback to a standard literal block +# 2007-06-08 Failsave implementation (fallback to a standard literal block # if pygments not found) # ========== =========================================================== -# +# # :: """Define and register a code-block directive using pygments @@ -42,7 +44,7 @@ # Customisation # ------------- -# +# # Do not insert inline nodes for the following tokens. # (You could add e.g. Token.Punctuation like ``['', 'p']``.) :: @@ -50,25 +52,25 @@ # DocutilsInterface # ----------------- -# +# # This interface class combines code from # pygments.formatters.html and pygments.formatters.others. -# +# # It does not require anything of docutils and could also become a part of # pygments:: class DocutilsInterface(object): """Parse `code` string and yield "classified" tokens. - + Arguments - + code -- string of source code to parse language -- formal language the code is written in. - - Merge subsequent tokens of the same token-type. - - Yields the tokens as ``(ttype_class, value)`` tuples, - where ttype_class is taken from pygments.token.STANDARD_TYPES and + + Merge subsequent tokens of the same token-type. + + Yields the tokens as ``(ttype_class, value)`` tuples, + where ttype_class is taken from pygments.token.STANDARD_TYPES and corresponds to the class argument used in pygments html output. """ @@ -76,7 +78,7 @@ def __init__(self, code, language): self.code = code self.language = language - + def lex(self): # Get lexer for language (use text as fallback) try: @@ -85,8 +87,8 @@ # info: "no pygments lexer for %s, using 'text'"%self.language lexer = get_lexer_by_name('text') return pygments.lex(self.code, lexer) - - + + def join(self, tokens): """join subsequent tokens of same token-type """ @@ -107,7 +109,7 @@ tokens = self.lex() except IOError: print "INFO: Pygments lexer not found, using fallback" - # TODO: write message to INFO + # TODO: write message to INFO yield ('', self.code) return @@ -127,7 +129,7 @@ language = arguments[0] # create a literal block element and set class argument code_block = nodes.literal_block(classes=["code-block", language]) - + # parse content with pygments and add to code_block element for cls, value in DocutilsInterface(u'\n'.join(content), language): if cls in unstyled_tokens: @@ -152,10 +154,10 @@ # .. _Using Pygments in ReST documents: http://pygments.org/docs/rstdirective/ # .. _proof of concept: # http://article.gmane.org/gmane.text.docutils.user/3689 -# +# # Test output # ----------- -# +# # If called from the command line, call the docutils publisher to render the # input:: @@ -173,6 +175,3 @@ # publish_cmdline(writer_name='html', description=description) # publish_cmdline(writer_name='latex', description=description) # publish_cmdline(writer_name='newlatex2e', description=description) - - - Modified: trunk/sandbox/latex-variants/tests/input/strong-emphasis.txt =================================================================== --- trunk/sandbox/latex-variants/tests/input/strong-emphasis.txt 2009-05-06 12:07:09 UTC (rev 5935) +++ trunk/sandbox/latex-variants/tests/input/strong-emphasis.txt 2009-05-06 12:10:07 UTC (rev 5936) @@ -9,10 +9,6 @@ .. role:: verystrong(emphasis) - Now I can achieve :verystrong:`very strong emphasis` by styling the resulting inline element in a custom style sheet. -(Currently LaTeX does not support custom roles based on existing ones. -This is a missing featre that will be added in the future...) - Modified: trunk/sandbox/stylesheets/listings-tex-options.sty =================================================================== --- trunk/sandbox/stylesheets/listings-tex-options.sty 2009-05-06 12:07:09 UTC (rev 5935) +++ trunk/sandbox/stylesheets/listings-tex-options.sty 2009-05-06 12:10:07 UTC (rev 5936) @@ -1,6 +1,8 @@ -% Settings for the listings package with LaTeX -% ============================================ -% +% listings-tex-options.sty +% ************************ +% highlight LaTeX code with lstlistings +% ===================================== +% % :Author: Günter Milde % :Contact: mi...@us... % :Revision: $Revision: 5534 $ @@ -9,31 +11,38 @@ % Released without warranties or conditions of any kind % under the terms of the Apache License, Version 2.0 % http://www.apache.org/licenses/LICENSE-2.0 -% +% % Usage -% ~~~~~ -% +% ----- +% % For syntax highlight of literal blocks with the `listings` LaTeX package, % call ``rst2latex.py`` with the options % ``--stylesheet=listings-tex-options.sty --literal-block-env=lstlisting``. -% -% Adapt the settings to your needs by either -% +% +% Adapt the settings to your needs by either +% % * modifying a copy of this file under a different name, or % * copy parts of this file into your custom style sheet. -% +% % See listings.pdf_ for configuration and usage of the listings package. -% +% % Implementation -% ~~~~~~~~~~~~~~ -% +% -------------- +% +% .. highlight:: latex +% +% Identification:: + +\ProvidesPackage{listings-tex-options} +[2009/03/02 v0.1 highlight LaTeX with lstlistings] + % Of course, we need to load the listings package itself:: \RequirePackage{listings} % In a document with lots of lists and listings, separating paragraphs by % vertical seems appropriate:: - + \RequirePackage{parskip} % load hyperref with blue citation colour:: @@ -41,7 +50,7 @@ \RequirePackage[colorlinks=true,linkcolor=blue,urlcolor=blue,citecolor=blue] {hyperref} -% In the References/Bibliography section, +% In the References/Bibliography section, % avoid holes in the title due to block alignment:: \renewcommand{\titlereference}[1]{\raggedright\textsl{#1}} @@ -53,7 +62,7 @@ % Font settings % ~~~~~~~~~~~~~ -% +% % Times, Helvetica, Courier:: %\RequirePackage{mathptmx} @@ -76,10 +85,10 @@ % Default language % ~~~~~~~~~~~~~~~~ -% +% % Highlight literal blocks as TeX:: -\lstset{language=[LaTeX]TeX} +\lstset{language=[LaTeX]TeX} % pre-load the language:: @@ -87,7 +96,7 @@ % Style % ~~~~~ -% +% % Typeface settings:: \lstset{ @@ -97,11 +106,11 @@ % identifierstyle=\slshape, % macros that are not keywords, args commentstyle=\rmfamily\itshape, % italic comments % stringstyle=\ttfamily, % typewriter type for strings - % texcsstyle=\slshape, + % texcsstyle=\slshape, } % Visible whitespace:: - + \lstset{showstringspaces=false} % no visible spaces in strings %\lstset{showspaces=true, % showtabs=true, @@ -118,33 +127,33 @@ % Extended characters in listings:: -%extendedchars=true -%extendedchars=false +%extendedchars=true +%extendedchars=false -% Column alignment +% Column alignment % ~~~~~~~~~~~~~~~~ -% +% % (for typesetting with variable width fonts) -% +% % ``columns=[c|l|r] <alignment>`` % <alignment> in [fixed, flexible, spaceflexible, or fullflexible] -% +% % The optional c, l, or r controls the horizontal orientation of smallest % output units (keywords, identifiers, etc.). -% +% % default: [c]fixed -% +% % ``basewidth={fixed, flexible}`` % .. -% +% % sets the width of a single character box for fixed and flexible column % mode (both to the same value or individually). -% +% % default: {0.6em,0.45em} -% +% % Free spacing for comments:: \lstset{columns=fullflexible, basewidth={0.5em,0.4em}} -% .. _listings.pdf: +% .. _listings.pdf: % ftp://dante.ctan.org/tex-archive/macros/latex/contrib/listings/listings.pdf |