Hi Ben,
On Thu, May 22, 2014 at 6:09 PM, Ben Coman<btc(a)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