Sha256: 11b65fd0153b0377b850de23573dcc915ca4fe73eb1c456068e51a0f82767242

Contents?: true

Size: 1.33 KB

Versions: 18

Compression:

Stored size: 1.33 KB

Contents

module Polytexnic
  module Preprocessor
    module Latex

      def to_processed_latex
        @polytex = polish_tables(process_asides(clean_latex_document))
      end

      # Returns LaTeX with hashed versions of literal environments.
      # Literal environments are hashed and passed through the pipeline
      # so that we can process things like refs to hyperrefs using gsubs.
      def clean_latex_document
        cache_literal(@polytex, :latex)
      end

      def polish_tables(text)
        text.tap do
          text.gsub!(/^\s*(\\begin\{table\})/) do
            "#{$1}\n\\begin{center}\n\\small\n"
          end
          text.gsub!(/^\s*(\\end\{table\})/) { "\\end{center}\n#{$1}" }
        end
      end

      # Processes aside environments.
      # In order to get nice framed & shaded aside boxes, we need to
      # transform the default aside into a new environment.
      def process_asides(text)
        # Transform asides with labels and headings.
        aside_regex = /\\begin{aside}\n\s*
                       \\label{(.*?)}\s*
                       \\heading{(.*?)}\n
                       (.*?)
                       \\end{aside}/mx
        text.tap do
          text.gsub!(aside_regex) do
            %(\\begin{shaded_aside}{#{$2}}{#{$1}}\n#{$3}\n\\end{shaded_aside})
          end
        end
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
polytexnic-0.8.4 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.8.3 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.8.2 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.8.1 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.8.0 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.7.7 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.7.6 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.7.5 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.7.4 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.7.3 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.7.2 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.7.1 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.7.0 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.6.11 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.6.10 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.6.9 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.6.8 lib/polytexnic/preprocessors/latex.rb
polytexnic-0.6.7 lib/polytexnic/preprocessors/latex.rb