emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Request for suggestions including source code
@ 2011-05-04 20:53 Robert Goldman
  2011-05-04 21:13 ` Thomas S. Dye
  0 siblings, 1 reply; 11+ messages in thread
From: Robert Goldman @ 2011-05-04 20:53 UTC (permalink / raw)
  To: Org Mode

I have a document that has big chunks of included source code.
Unfortunately, when this is typeset in LaTeX, it typically blows past
the right margin.  I find it quite difficult to determine how many
characters I get in a monospace line in LaTeX, and it seems like LaTeX
won't give me enough to fit in plausible blocks of source code.

Does anyone have a solution to this?  Any way to tell org-mode to shrink
the fontsize when exporting code examples to LaTeX?  More condensed font
to use for typewriter when exporting to LaTeX?  Other tricks of the trade?

Seems like many would have encountered this problem.

Many thanks,
r

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Request for suggestions including source code
  2011-05-04 20:53 Request for suggestions including source code Robert Goldman
@ 2011-05-04 21:13 ` Thomas S. Dye
  2011-05-04 21:44   ` Nick Dokos
  2011-05-04 21:59   ` Robert Goldman
  0 siblings, 2 replies; 11+ messages in thread
From: Thomas S. Dye @ 2011-05-04 21:13 UTC (permalink / raw)
  To: rpgoldman; +Cc: Org Mode

[-- Attachment #1: Type: text/plain, Size: 1074 bytes --]

Aloha Robert,

Have a look at the listings and minted packages.  You can specify font  
size on a per-document or per-language basis.  I believe listings has  
an option to wrap long lines (don't remember this for minted, though).

The instructions here might be helpful:

http://orgmode.org/worg/org-tutorials/org-latex-export.html#sec-12_2

hth,
Tom

On May 4, 2011, at 10:53 AM, Robert Goldman wrote:

> I have a document that has big chunks of included source code.
> Unfortunately, when this is typeset in LaTeX, it typically blows past
> the right margin.  I find it quite difficult to determine how many
> characters I get in a monospace line in LaTeX, and it seems like LaTeX
> won't give me enough to fit in plausible blocks of source code.
>
> Does anyone have a solution to this?  Any way to tell org-mode to  
> shrink
> the fontsize when exporting code examples to LaTeX?  More condensed  
> font
> to use for typewriter when exporting to LaTeX?  Other tricks of the  
> trade?
>
> Seems like many would have encountered this problem.
>
> Many thanks,
> r
>
>


[-- Attachment #2: Type: text/html, Size: 1549 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Request for suggestions including source code
  2011-05-04 21:13 ` Thomas S. Dye
@ 2011-05-04 21:44   ` Nick Dokos
  2011-05-04 22:01     ` Robert Goldman
  2011-05-04 21:59   ` Robert Goldman
  1 sibling, 1 reply; 11+ messages in thread
From: Nick Dokos @ 2011-05-04 21:44 UTC (permalink / raw)
  To: Thomas S. Dye; +Cc: nicholas.dokos, Org Mode, rpgoldman

Thomas S. Dye <tsd@tsdye.com> wrote:

> Aloha Robert,
> 
> Have a look at the listings and minted packages.  You can specify font size on a per-document or per-language basis.  I believe listings has an option to wrap long lines (don't remember this for minted, though). 
> 
> The instructions here might be helpful:
> 
> http://orgmode.org/worg/org-tutorials/org-latex-export.html#sec-12_2
> 
> hth,
> Tom
> 
> On May 4, 2011, at 10:53 AM, Robert Goldman wrote:
> 
>     I have a document that has big chunks of included source code.
>     Unfortunately, when this is typeset in LaTeX, it typically blows past
>     the right margin.  I find it quite difficult to determine how many
>     characters I get in a monospace line in LaTeX, and it seems like LaTeX
>     won't give me enough to fit in plausible blocks of source code.
>    
>     Does anyone have a solution to this?  Any way to tell org-mode to shrink
>     the fontsize when exporting code examples to LaTeX?  More condensed font
>     to use for typewriter when exporting to LaTeX?  Other tricks of the trade?
>    
>     Seems like many would have encountered this problem.
>    
>     Many thanks,
>     r
> 
> 

Tom provides the practical answers, I go for the frivolous ones :-) : the following
latex program will give you the text width of the page:

--8<---------------cut here---------------start------------->8---
\documentclass{article}

\begin{document}
\the\textwidth
\end{document}

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 
--8<---------------cut here---------------end--------------->8---

I get 345.0pt (but you can use geometry.sty to change it).

Let's say we want to use cmtt10 (at its design size of 10pt, i.e. not scaled up
or down). The character sizes of this font can be obtained from the TFM file. An
easy way to get them in human-readable form is to use tftopl:

tftopl /usr/share/texmf-texlive/fonts/tfm/public/cm/cmtt10.tfm | grep CHARWD

will give you the character widths as fractions of the design size. Since this
is a fixed-width font, all widths are the same:

   (CHARWD R 0.524996)

So the width of each character in points is:

   0.524996 * design size = 5.24996pt

and you can accommodate

   floor(345.0 / 5.24996) = 65

characters per line.

So there you have it: a frivolous exercise, almost completely OT for the
list and an almost useless answer[fn:1].

Nick

Footnotes:

[fn:1] I know: I have no life -- but I rather enjoyed it...

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Request for suggestions including source code
  2011-05-04 21:13 ` Thomas S. Dye
  2011-05-04 21:44   ` Nick Dokos
@ 2011-05-04 21:59   ` Robert Goldman
  2011-05-04 22:23     ` Thomas S. Dye
  1 sibling, 1 reply; 11+ messages in thread
From: Robert Goldman @ 2011-05-04 21:59 UTC (permalink / raw)
  To: Thomas S. Dye; +Cc: Org Mode

On 5/4/11 May 4 -4:13 PM, Thomas S. Dye wrote:
> Aloha Robert,
> 
> Have a look at the listings and minted packages.  You can specify font
> size on a per-document or per-language basis.  I believe listings has an
> option to wrap long lines (don't remember this for minted, though). 
> 
> The instructions here might be helpful:
> 
> http://orgmode.org/worg/org-tutorials/org-latex-export.html#sec-12_2

Hm.  I'm still grappling with this.  I am including many of these
examples by using a source snippet (in sh) that goes out and pulls the
example out of a source code file.

Even after adding

#+LaTeX_HEADER \usepackage{listings}

and

#+src: setup-listings

to the top of my file, and setting

org-export-latex-listings to 'listings

the :results of the source blocks, which look like, e.g., the following:

#+begin_src sh :exports results :results output
sourceSample.perl single code/ontology/top.prxo 'Class Pattern'
#+end_src

come out wrapped in

\begin{verbatim}
...
\end{verbatim}

Maybe I'm not doing enough.  I'm a bit confused by the listings example
in the tutorial because it has the configuration examples be in their
own source block, and adds all of the options for specially typesetting
particular programming languages.  It's not altogether clear to me which
bits of that are critical to getting the listings stuff to work at all,
and which are only specially tailoring its function.

Is it necessary to specify what programming language is used in order to
typeset using listings?  I am using a domain specific language for which
there is no obvious listings setting and, anyway, what I am trying to
typeset is the /results/ of the source blocks, which are in a different
programming language from the /source/ of the source blocks.

I suspect I am just looking for a simpler solution, e.g., one which
would make org-mode give me the source blocks in

{\small
\begin{verbatim}
...
\end{verbatim}
}

instead of

\begin{verbatim}
...
\end{verbatim}

or something like that.

best,
r

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Request for suggestions including source code
  2011-05-04 21:44   ` Nick Dokos
@ 2011-05-04 22:01     ` Robert Goldman
  2011-05-04 23:10       ` Nick Dokos
  0 siblings, 1 reply; 11+ messages in thread
From: Robert Goldman @ 2011-05-04 22:01 UTC (permalink / raw)
  To: nicholas.dokos; +Cc: Org Mode

On 5/4/11 May 4 -4:44 PM, Nick Dokos wrote:

> Tom provides the practical answers, I go for the frivolous ones :-) : the following
> latex program will give you the text width of the page:
> 
> --8<---------------cut here---------------start------------->8---
> \documentclass{article}
> 
> \begin{document}
> \the\textwidth
> \end{document}
> 
> %%% Local Variables: 
> %%% mode: latex
> %%% TeX-master: t
> %%% End: 
> --8<---------------cut here---------------end--------------->8---
> 
> I get 345.0pt (but you can use geometry.sty to change it).
> 
> Let's say we want to use cmtt10 (at its design size of 10pt, i.e. not scaled up
> or down). The character sizes of this font can be obtained from the TFM file. An
> easy way to get them in human-readable form is to use tftopl:
> 
> tftopl /usr/share/texmf-texlive/fonts/tfm/public/cm/cmtt10.tfm | grep CHARWD
> 
> will give you the character widths as fractions of the design size. Since this
> is a fixed-width font, all widths are the same:
> 
>    (CHARWD R 0.524996)
> 
> So the width of each character in points is:
> 
>    0.524996 * design size = 5.24996pt
> 
> and you can accommodate
> 
>    floor(345.0 / 5.24996) = 65
> 
> characters per line.
> 
> So there you have it: a frivolous exercise, almost completely OT for the
> list and an almost useless answer[fn:1].

This actually was pretty helpful.  The problem is, of course, that I
can't rewrite all of my source code to be in 65-width lines, nor can I
convince my colleagues to do so.

So what I need now is some way to fix the verbatim environments that are
produced by org-mode to use a smaller font.  I.e., instead of trying to
fix the source code to match char-width, fix the char-width to match the
source code.  Any idea how to do that?

thanks,
r

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Request for suggestions including source code
  2011-05-04 21:59   ` Robert Goldman
@ 2011-05-04 22:23     ` Thomas S. Dye
  2011-05-04 22:29       ` Robert Goldman
  0 siblings, 1 reply; 11+ messages in thread
From: Thomas S. Dye @ 2011-05-04 22:23 UTC (permalink / raw)
  To: rpgoldman; +Cc: Org Mode


On May 4, 2011, at 11:59 AM, Robert Goldman wrote:

> On 5/4/11 May 4 -4:13 PM, Thomas S. Dye wrote:
>> Aloha Robert,
>>
>> Have a look at the listings and minted packages.  You can specify  
>> font
>> size on a per-document or per-language basis.  I believe listings  
>> has an
>> option to wrap long lines (don't remember this for minted, though).
>>
>> The instructions here might be helpful:
>>
>> http://orgmode.org/worg/org-tutorials/org-latex-export.html#sec-12_2
>
> Hm.  I'm still grappling with this.  I am including many of these
> examples by using a source snippet (in sh) that goes out and pulls the
> example out of a source code file.
>
> Even after adding
>
> #+LaTeX_HEADER \usepackage{listings}
>
> and
>
> #+src: setup-listings
>

Sorry for the confusion.  In the example, the line

#+source: setup-listings

names the source code block that follows.   I don't think it will do  
anything by itself in your document.

That code block named setup-listings contains an example of a listings  
setup that maps Org-mode's output for Emacs Lisp code blocks to  
something listings recognizes.  It can be executed in Org-mode, using  
Babel, to setup the listings export.  After this is done, then the  
example should export correctly.

I'm not sure what is going wrong on your end.  Perhaps org-export- 
latex-custom-lang-environments needs to be configured for the language  
you're using?

hth,
Tom

> to the top of my file, and setting
>
> org-export-latex-listings to 'listings
>
> the :results of the source blocks, which look like, e.g., the  
> following:
>
> #+begin_src sh :exports results :results output
> sourceSample.perl single code/ontology/top.prxo 'Class Pattern'
> #+end_src
>
> come out wrapped in
>
> \begin{verbatim}
> ...
> \end{verbatim}
>
> Maybe I'm not doing enough.  I'm a bit confused by the listings  
> example
> in the tutorial because it has the configuration examples be in their
> own source block, and adds all of the options for specially  
> typesetting
> particular programming languages.  It's not altogether clear to me  
> which
> bits of that are critical to getting the listings stuff to work at  
> all,
> and which are only specially tailoring its function.
>
> Is it necessary to specify what programming language is used in  
> order to
> typeset using listings?  I am using a domain specific language for  
> which
> there is no obvious listings setting and, anyway, what I am trying to
> typeset is the /results/ of the source blocks, which are in a  
> different
> programming language from the /source/ of the source blocks.
>
> I suspect I am just looking for a simpler solution, e.g., one which
> would make org-mode give me the source blocks in
>
> {\small
> \begin{verbatim}
> ...
> \end{verbatim}
> }
>
> instead of
>
> \begin{verbatim}
> ...
> \end{verbatim}
>
> or something like that.
>
> best,
> r
>
>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Request for suggestions including source code
  2011-05-04 22:23     ` Thomas S. Dye
@ 2011-05-04 22:29       ` Robert Goldman
  2011-05-04 22:49         ` brian powell
  2011-05-05 17:07         ` Eric Schulte
  0 siblings, 2 replies; 11+ messages in thread
From: Robert Goldman @ 2011-05-04 22:29 UTC (permalink / raw)
  To: Thomas S. Dye; +Cc: Org Mode

On 5/4/11 May 4 -5:23 PM, Thomas S. Dye wrote:
> 
> On May 4, 2011, at 11:59 AM, Robert Goldman wrote:
> 
>> On 5/4/11 May 4 -4:13 PM, Thomas S. Dye wrote:
>>> Aloha Robert,
>>>
>>> Have a look at the listings and minted packages.  You can specify font
>>> size on a per-document or per-language basis.  I believe listings has an
>>> option to wrap long lines (don't remember this for minted, though).
>>>
>>> The instructions here might be helpful:
>>>
>>> http://orgmode.org/worg/org-tutorials/org-latex-export.html#sec-12_2
>>
>> Hm.  I'm still grappling with this.  I am including many of these
>> examples by using a source snippet (in sh) that goes out and pulls the
>> example out of a source code file.
>>
>> Even after adding
>>
>> #+LaTeX_HEADER \usepackage{listings}
>>
>> and
>>
>> #+src: setup-listings
>>
> 
> Sorry for the confusion.  In the example, the line
> 
> #+source: setup-listings
> 
> names the source code block that follows.   I don't think it will do
> anything by itself in your document.
> 
> That code block named setup-listings contains an example of a listings
> setup that maps Org-mode's output for Emacs Lisp code blocks to
> something listings recognizes.  It can be executed in Org-mode, using
> Babel, to setup the listings export.  After this is done, then the
> example should export correctly.
> 
> I'm not sure what is going wrong on your end.  Perhaps
> org-export-latex-custom-lang-environments needs to be configured for the
> language you're using?

Is there any chance that this won't work because I have a source snippet
in one language (sh) that returns as results a source snippet in a
/different/ language (a lisp-like domain-specific language)?  I don't
off-hand see how I can come up with a single label for the source block
that takes this into account....

This may be a weird enough case that I should be aiming at a solution
that is much simpler:  e.g., just figuring out how to change all of my
verbatim environments to use a smaller font or changing the export
behavior so that /all/ verbatim blocks turn into listings blocks.

Best,
r

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Request for suggestions including source code
  2011-05-04 22:29       ` Robert Goldman
@ 2011-05-04 22:49         ` brian powell
  2011-05-05 17:07         ` Eric Schulte
  1 sibling, 0 replies; 11+ messages in thread
From: brian powell @ 2011-05-04 22:49 UTC (permalink / raw)
  To: rpgoldman; +Cc: Org Mode

* Literate Programming and CWEB/NOWEB work great.

** Could use \scriptsize and/or \tiny and set the margins to 0--this
is what I do:

\documentclass[10pt]{report}
\pagestyle{empty}
\usepackage{anysize}
\marginsize{0cm}{0cm}{0cm}{0cm}
\begin{document}
\tiny
\begin{verbatim}

BlahSourceCode

\end{verbatim}
\scriptsize
\begin{verbatim}

BlahSourceCode


\end{verbatim}

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Request for suggestions including source code
  2011-05-04 22:01     ` Robert Goldman
@ 2011-05-04 23:10       ` Nick Dokos
  2011-05-05  0:11         ` Robert Goldman
  0 siblings, 1 reply; 11+ messages in thread
From: Nick Dokos @ 2011-05-04 23:10 UTC (permalink / raw)
  To: rpgoldman; +Cc: nicholas.dokos, Org Mode

Robert Goldman <rpgoldman@sift.info> wrote:

> On 5/4/11 May 4 -4:44 PM, Nick Dokos wrote:
> 
> > So there you have it: a frivolous exercise, almost completely OT for the
> > list and an almost useless answer[fn:1].
> 
> This actually was pretty helpful.  The problem is, of course, that I
> can't rewrite all of my source code to be in 65-width lines, nor can I
> convince my colleagues to do so.
> 

Precisely: that's why it was useless :-) I took a quick look at
Stevens's "Advanced Programming in the UNIX environment" (which I think
of as well-typeset) and I find that most of the time, he adheres to the
65-char limit - there are some comments that go up to 72 or so and stick
out a bit into the right margin. But I'm pretty sure he planned it to
the 65-char limit.

> So what I need now is some way to fix the verbatim environments that are
> produced by org-mode to use a smaller font.  I.e., instead of trying to
> fix the source code to match char-width, fix the char-width to match the
> source code.  Any idea how to do that?
> 

Here is one possibility: create a verbfont.sty file like this:

--8<---------------cut here---------------start------------->8---
\makeatletter
\def\verbatim@font{\normalfont\scriptsize\ttfamily}
\makeatother
--8<---------------cut here---------------end--------------->8---

and add this to your org file:

--8<---------------cut here---------------start------------->8---
#+LATEX_HEADER: \usepackage{verbfont}
--8<---------------cut here---------------end--------------->8---

Instead of \scriptsize, you can use any of the ones defined in
size1X.clo (for some X). If you use \tiny, you should package a
magnifier with the book...

Nick

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Request for suggestions including source code
  2011-05-04 23:10       ` Nick Dokos
@ 2011-05-05  0:11         ` Robert Goldman
  0 siblings, 0 replies; 11+ messages in thread
From: Robert Goldman @ 2011-05-05  0:11 UTC (permalink / raw)
  To: nicholas.dokos; +Cc: Org Mode

On 5/4/11 May 4 -6:10 PM, Nick Dokos wrote:
> Robert Goldman <rpgoldman@sift.info> wrote:
> 
>> On 5/4/11 May 4 -4:44 PM, Nick Dokos wrote:
....
>> So what I need now is some way to fix the verbatim environments that are
>> produced by org-mode to use a smaller font.  I.e., instead of trying to
>> fix the source code to match char-width, fix the char-width to match the
>> source code.  Any idea how to do that?
>>
> 
> Here is one possibility: create a verbfont.sty file like this:
> 
> --8<---------------cut here---------------start------------->8---
> \makeatletter
> \def\verbatim@font{\normalfont\scriptsize\ttfamily}
> \makeatother
> --8<---------------cut here---------------end--------------->8---
> 
> and add this to your org file:
> 
> --8<---------------cut here---------------start------------->8---
> #+LATEX_HEADER: \usepackage{verbfont}
> --8<---------------cut here---------------end--------------->8---
> 
> Instead of \scriptsize, you can use any of the ones defined in
> size1X.clo (for some X). If you use \tiny, you should package a
> magnifier with the book...


Thank you!  That was just /exactly/ what I needed.  The listings
approach seems neat for other cases, but mine is a simpler solution and
this nails it.

Best,
R

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Request for suggestions including source code
  2011-05-04 22:29       ` Robert Goldman
  2011-05-04 22:49         ` brian powell
@ 2011-05-05 17:07         ` Eric Schulte
  1 sibling, 0 replies; 11+ messages in thread
From: Eric Schulte @ 2011-05-05 17:07 UTC (permalink / raw)
  To: rpgoldman; +Cc: Org Mode

Robert Goldman <rpgoldman@sift.info> writes:

> On 5/4/11 May 4 -5:23 PM, Thomas S. Dye wrote:
>> 
>> On May 4, 2011, at 11:59 AM, Robert Goldman wrote:
>> 
>>> On 5/4/11 May 4 -4:13 PM, Thomas S. Dye wrote:
>>>> Aloha Robert,
>>>>
>>>> Have a look at the listings and minted packages.  You can specify font
>>>> size on a per-document or per-language basis.  I believe listings has an
>>>> option to wrap long lines (don't remember this for minted, though).
>>>>
>>>> The instructions here might be helpful:
>>>>
>>>> http://orgmode.org/worg/org-tutorials/org-latex-export.html#sec-12_2
>>>
>>> Hm.  I'm still grappling with this.  I am including many of these
>>> examples by using a source snippet (in sh) that goes out and pulls the
>>> example out of a source code file.
>>>
>>> Even after adding
>>>
>>> #+LaTeX_HEADER \usepackage{listings}
>>>
>>> and
>>>
>>> #+src: setup-listings
>>>
>> 
>> Sorry for the confusion.  In the example, the line
>> 
>> #+source: setup-listings
>> 
>> names the source code block that follows.   I don't think it will do
>> anything by itself in your document.
>> 
>> That code block named setup-listings contains an example of a listings
>> setup that maps Org-mode's output for Emacs Lisp code blocks to
>> something listings recognizes.  It can be executed in Org-mode, using
>> Babel, to setup the listings export.  After this is done, then the
>> example should export correctly.
>> 
>> I'm not sure what is going wrong on your end.  Perhaps
>> org-export-latex-custom-lang-environments needs to be configured for the
>> language you're using?
>
> Is there any chance that this won't work because I have a source snippet
> in one language (sh) that returns as results a source snippet in a
> /different/ language (a lisp-like domain-specific language)?  I don't
> off-hand see how I can come up with a single label for the source block
> that takes this into account....
>
> This may be a weird enough case that I should be aiming at a solution
> that is much simpler:  e.g., just figuring out how to change all of my
> verbatim environments to use a smaller font or changing the export
> behavior so that /all/ verbatim blocks turn into listings blocks.
>

You could customize the value of the `org-export-latex-verbatim-wrap'
variable to include a line of latex to shrink the font size.  For
example

#+begin_src emacs-lisp :results silent
  (setq org-export-latex-verbatim-wrap
        '("{\\scriptsize\n\\begin{verbatim}\n" . "\\end{verbatim}\n}\n"))
#+end_src

Best -- Eric

>
> Best,
> r
>
>

-- 
Eric Schulte
http://cs.unm.edu/~eschulte/

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2011-05-05 20:54 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-04 20:53 Request for suggestions including source code Robert Goldman
2011-05-04 21:13 ` Thomas S. Dye
2011-05-04 21:44   ` Nick Dokos
2011-05-04 22:01     ` Robert Goldman
2011-05-04 23:10       ` Nick Dokos
2011-05-05  0:11         ` Robert Goldman
2011-05-04 21:59   ` Robert Goldman
2011-05-04 22:23     ` Thomas S. Dye
2011-05-04 22:29       ` Robert Goldman
2011-05-04 22:49         ` brian powell
2011-05-05 17:07         ` Eric Schulte

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).