Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I love the way that Mathematica handles type inn of formulas. It is really easy to type complicated expressions with shortcuts on keyboard. It would be great if I could use Mathematica completely to publish my articles. But why I don't:

I cannot find tutorial for styling of notebook for pdf export. How to deal with page numbering, Header, Footer, page breaks, or placing graphs in wanted position, I mean not just to be line by line text. Is this possible? I believe it is, because I'm fascinated with MMA capabilities, but I'm lacking this skills.

If someone could write brief tutorials on this, I believe that it would be appreciated by many others. I saw some text where it's emphasized that they are written totally in MMA (and they are really styled well).

Thank you for any tips, ways of accomplishing these tasks and for sharing your experience.

share|improve this question
    
Did you know you can export formulas to LaTeX? –  CHM Aug 14 '12 at 22:11
    
Yes I know that, and that's what I do. But I think if MMA have this options adjustable life would be much easier. Not to take formula by formula and import them in your designing software (InDesign, Quarkxpress...) –  balboa Aug 14 '12 at 22:18
    
Which Latex editor do you use? –  balboa Aug 14 '12 at 22:26
    
As for LaTeX, I also used Scientific Word (expensive) but upgrade costs eventually caused me to move to using Lyx (free, and very good indeed) - BTW it also runs on OS X. For "live" documents the best approach seems to be Wolfram's CDF. –  Stephen Luttrell Aug 14 '12 at 23:05
1  
You may look around items under File menu -> Printing Settings. btw I use Kile for LaTeX editor, it feels like programming and has both Linux version and Windows version. –  Silvia Aug 15 '12 at 6:35
show 3 more comments

1 Answer

up vote 9 down vote accepted

You can adjust page size, page number style, headers, footers, etc from items under File -> Printing Settings menu. Or you can programmatically modify them by manipulating Notebook's options: PrintingCopies, PrintingStartingPageNumber, PrintingPageRange, PageHeaderLines, PageFooterLines, PrintingOptions.

Mathematica graphics

Mathematica graphics

Note: It seems "PaperSize" and "PrintingMargins" are calculated using a DPI value of 72, which I guess is not the DPI of the monitor but that of the default printer.

Graphics, more generally, nearly any Cell expression, can be used in header and footer. One way is copy the entire Cell:

Mathematica graphics

then paste into the Headers and Footers palette:

Mathematica graphics

A Simple Program Example

A sample Notebook(Sorry I didn't find a convenient place to store large texts..):

notebookStr = Uncompress["1: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\
Gx6k/bOjzu"]; 

nbcontent = notebookStr // ToExpression // InputForm;

Define a function for display the headers and footers setting:

Clear[HeaderFooterSettingView]
HeaderFooterSettingView[nbcontent_] :=
 Function[hf,
    Cases[nbcontent, (hf -> expr_) :> expr, \[Infinity]] //
      If[# === {},
        {{None, None, None}, {None, None, None}},
        #[[1]]] & //
     Column[{
        Style[ToString[hf] <> " Settings:", 20],
        Grid[Prepend[
           Map[If[# === None,
               Item[Spacer[20], Background -> LightBlue],
               Style[InputForm@#, 8]] &, #, {2}]\[Transpose],
           Item[#, Background -> LightYellow] & /@
            {"Right page", "Left Page"}
           ]\[Transpose],
         Dividers -> {
           {False, Black, GrayLevel[.8], GrayLevel[.8]},
           2 -> Directive[Black, Thick]}]
        }] &] /@ {PageHeaders, PageFooters} //
  Column[#, Frame -> All, FrameStyle -> GrayLevel[.8]] &

HeaderFooterSettingView@nbcontent

enter image description here

Here the light-blue cells indicate empty slots for headers/footers.

Now we insert a Graphics at the right corner footer of right pages:

nbcontentNew = nbcontent /.
   (PageFooters -> expr_) :>
    (PageFooters -> ReplacePart[expr,
       {1, 3} ->
        Cell[BoxData[ToBoxes[
           Graphics[{Circle[], Inset[x^2 + y^2 == r^2, {0, 0}]},
            Frame -> True, ImageSize -> 100]
           ]]]
       ]);

nbNew = nbcontentNew[[1]] // NotebookPut

NotebookPrint gave a terrible result on my computer, so I manually selected the virtual pdf printer from Print dialog in the File menu to print the generated Notebook:

enter image description here

share|improve this answer
    
Thank you Silvia, and now this is really useful. I don't get the Simple Program Example, but as I understand it's just way how to do upper part of answer, by code. Or is it? I mean the result is same or does this "code approach" add any new capabilities. (I'm asking this because I'm not MMA expert so it's not easy task for me to analyze this code, but if it's useful I certainly will). And once again thank you for your explanations. –  balboa Aug 15 '12 at 19:12
    
@balboa You're welcome:) Sorry for the unclearness in my post. Yes I tried to demonstrate how to do similar thing programmatically. I think sometimes it may feel more flexible and explicit than using the GUI. –  Silvia Aug 16 '12 at 5:06
    
@balboa In case you care about only how to specify the headers and footers, it's safe to skip the HeaderFooterSettingView function, concern only the code which converts nbcontent to nbcontentNew. –  Silvia Aug 16 '12 at 5:15
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.