Ben Coman wrote:
Hi Ben,
On Thu, May 22, 2014 at 6:09 PM, Ben Coman<btc@openinworld.com> wrote:
Now is there any important function missing, or is there a better way to do this?
thank you for your contribution.
I would try to generate this instead:
\begin{note} foo bar baz \end{note}
This environment is meant for this. To output the \begin and \end parts, use
canvas environment
(look at the senders of #environment in the PRLaTeXWriter class for examples)
To output the text, you can just write
super visitAnnotatedParagraph: aParagraph
I also want add an annotation type, which I'll describe in a following post.
I should we should think a bit how these should be handled. In the meantime, you can just hack around :-). And please add unit tests.
-- Damien Cassou
So I determined that the following works well...
PRLaTeXWriter>>visitAnnotatedParagraph: anAnnotatedParagraph "Pier seams to lack consistency here ..."
'todo' = anAnnotatedParagraph annotation asLowercase ifTrue: [ ^ self visitCommentedLine: anAnnotatedParagraph ].
canvas environment name: 'note' ; with: [ super visitAnnotatedParagraph: anAnnotatedParagraph ].
to process Pillar markup...
@@note Pay attention to the class definition for your new ""==BlankCellTest=="". It must be a subclass of the class ""==TestCase=="". This is easy to overlook. If you did it wrong already, no problem, just go back and correct it now and then save the code again.
Within a class, methods are organised into "protocols" that are shown in the third browser pane from the left of Figure *testCellStateShouldBeOffEmpty*. We will group our "tests" inside a protocol of the same name.
to produce this nice looking PDF showing the note indented with dividing lines...
Now that was real easy to do!! Thanks for making Pillar accessible. I can't imagine making a similar change as easy in a Markdown processor in some other language.
--------------- Next, in common.tex [1] I found... {
\newcommand{\dothisicon}{\raisebox{-.5ex}{\includegraphics[height=1.2em]{pharo}}} \newcommand{\dothis}[1]{% \medskip \noindent\dothisicon \ifx#1\empty\else\quad\emph{#1}\fi \par\smallskip\nopagebreak} }
and discovered I could do this in the Pillar markup... Before defining a class we should define a package to contain our classes. When we save a package all the classes will be saved together. It is a good practice to group together classes that work together.
{{{latex: \dothis{Right-click on the background and open a System Browser.} \dothis{In the package list of the System Browser, choose "add package" to add a new package. Use the name "LaserG }}}
to produce in the PDF two Pharo icons on separate lines...
But that is awkward and verbose to do each time, and I though it would be nice for Pillar to handle this as an annotation like this... Before defining a class we should define a package to contain our classes. When we save a package all the classes will be saved together. It is a good practice to group together classes that work together.
@@dothis Right-click on the background and open a System Browser.
@@dothis In the package list of the System Browser, choose "add package" to add a new package. Use the name "LaserGame-Model".
so I found I could do that by added the following hack to PRLaTeXWriter>>visitAnnotatedParagraph: ... 'dothis' = anAnnotatedParagraph annotation asLowercase ifTrue: [ ^ self writeRawDuring: [ stream newLine. stream << '\dothis{' . stream << anAnnotatedParagraph text trimBoth . stream << '} ' . ]. ].
However changing this to be less of a hack like this... 'dothis' = anAnnotatedParagraph annotation asLowercase ifTrue: [ ^ canvas command name: 'dothis' ; parameter: [ super visitAnnotatedParagraph: anAnnotatedParagraph ] ].
doesn't quite work, since the first Pharo icon runs onto the previous line...
That can be fixed as follows.... PRLaTeXCommand>>name: aString stream newLine. "<---THIS LINE ADDED" stream << $\ << aString
but I don't know if that is the right thing to do. Maybe there are times when you want commands to run on from a line. What would be the right thing?
Also, is it reasonable to add this new annotation type? i.e. might it be integrated soon ? :) :) . This would really help with the Laser Game tutorial.
[1] https://github.com/bencoman/PharoLaserGameTutorial/blob/master/common.tex
cheers -ben
I discovered that instead of modifying PRLaTeXCommand>>name: , that in PRLaTeXWriter>>visitAnnotatedParagraph: I could do... 'dothis' = anAnnotatedParagraph annotation asLowercase ifTrue: [ canvas newLine. "<----THIS LINE ADDED" ^ canvas command name: 'dothis' ; parameter: [ super visitAnnotatedParagraph: anAnnotatedParagraph ] ]. which seems better, but maybe still not the best. cheers -ben