A good way to do a book?

S

Stephan Kämper

Bob said:
http://www.sourcebeat.com/index.jsp

It would be great to get a "Ruby Live" book going. I like the idea of
having a book in PDF format that gets updated continually. It would be
an ever evolving book on the goodness of Ruby.

As far as I read on that site, it's about $30 per book per year. If I
participated in writing an open source book about Ruby, I'd rather do
that for free (as in free beer ;-) [but I would accept being paid for it
.... :-D ]. However there's the pickaxe book already, which is exellent
(both both the English edition right in 2001, and the German edition
when it was 'on sale' at the local book store - and I use the e-dition
quite a lot)

Happy Rubying

Stephan
 
R

Robert

Stephan said:
Bob said:
http://www.sourcebeat.com/index.jsp

It would be great to get a "Ruby Live" book going. I like the idea of
having a book in PDF format that gets updated continually. It would be
an ever evolving book on the goodness of Ruby.


As far as I read on that site, it's about $30 per book per year. If I
participated in writing an open source book about Ruby, I'd rather do
that for free (as in free beer ;-) [but I would accept being paid for it
... :-D ]. However there's the pickaxe book already, which is exellent
(both both the English edition right in 2001, and the German edition
when it was 'on sale' at the local book store - and I use the e-dition
quite a lot)

Happy Rubying

Stephan
They are working out subscriptions. The initial $30 is for a first purchase.
 
J

Josef 'Jupp' SCHUGT

Hi!

* Bob:
http://www.sourcebeat.com/index.jsp

It would be great to get a "Ruby Live" book going. I like the idea
of having a book in PDF format that gets updated continually. It
would be an ever evolving book on the goodness of Ruby.

I don't know of an affordable PDF editor. Minimalistic HTML plus CSS?

Josef 'Jupp' SCHUGT
 
G

Gavin Kistner

I don't know of an affordable PDF editor. Minimalistic HTML plus CSS?

That would make good sense to me.

(FWIW, those who have MacOS X already have PDF 'print' capabilities
from any application, so PDFs could be created from, say, HTML+CSS)
 
G

Guillaume Marcais

That would make good sense to me.

(FWIW, those who have MacOS X already have PDF 'print' capabilities
from any application, so PDFs could be created from, say, HTML+CSS)

So does KDE directly from the print dialog.Or any un*x box with the
ps2pdf command.

Guillaume.
 
S

Shu-yu Guo

Josef said:
I don't know of an affordable PDF editor. Minimalistic HTML plus CSS?

So use TeX, who can really afford, or want to buy, stuff like InDesign
(bar piracy) anyways?
 
H

Harry Ohlsen

Shu-yu Guo said:
So use TeX, who can really afford, or want to buy, stuff like InDesign
(bar piracy) anyways?

Or, if you prefer to work at a slightly higher level, LaTeX.

Harry O.
 
J

James Britt

I don't know of an affordable PDF editor. Minimalistic HTML plus CSS?

OpenOffice will export to PDF.


Also, there was an attempt at a community-driven Ruby book at
http://www.rubydoc.org/book.

Good writing is time-consuming, and hard to do well. A Ruby book,
unless its something along the lines of a cookbook or "Ruby Hacks,"
should have a consistent author's voice and theme. If it purports to
teach people Ruby, then what is offered in the early chapters should lay
the foundation for more advanced and interesting topics later on.

I've worked on a few Wrox books where 8-to-12 writers were all pitching
in on different topics. While the books were constructed to have a
central theme, they often came off as a collection of magazine articles.

This can be useful, but I don't think we need to think in terms of a
book in order to assemble a collection of tutorials.



James
 
G

Gavin Sinclair

I don't know of an affordable PDF editor. Minimalistic HTML plus CSS?
OpenOffice will export to PDF.


Also, there was an attempt at a community-driven Ruby book at
http://www.rubydoc.org/book.

Good writing is time-consuming, and hard to do well. A Ruby book,
unless its something along the lines of a cookbook or "Ruby Hacks,"
should have a consistent author's voice and theme. If it purports to
teach people Ruby, then what is offered in the early chapters should lay
the foundation for more advanced and interesting topics later on.

I've worked on a few Wrox books where 8-to-12 writers were all pitching
in on different topics. While the books were constructed to have a
central theme, they often came off as a collection of magazine articles.

This can be useful, but I don't think we need to think in terms of a
book in order to assemble a collection of tutorials.

IMHO the most sensible technology to use for a new collaborative Ruby book
would be WikiMedia. See http://www.wikibooks.org.

However, http://www.rubydoc.org/book/ is an existing collaborative Ruby
book. Why start another when you can help that?

These things just don't tend to happen, for the reasons James mentioned:
difficult and time consuming.

Gavin
 
J

Josef 'Jupp' SCHUGT

Hi!

* Harry Ohlsen:
Or, if you prefer to work at a slightly higher level, LaTeX.

I don't think that the actual format is very important. What is
needed?

Headlines of several levels
Paragraphs
italics, bold, typewriter
Preformatted text
Itemization
Enumeration
Description lists
Tables
Graphics

This can be done in HTML 3.2+, LaTeX, RTF and even in Ruby.

Yes, Ruby. The german edition of the comp.lang.ruby FAQ is a Ruby
script that generates HTML and LaTeX.

http://oss.erdfunkstelle.de/ruby/FAQ.rb

It may sound a bit strange but it was a proof of concept and it
works. All other representations are generated from the Ruby source.

Josef 'Jupp' SCHUGT
 
F

Frank Schmitt

Josef 'Jupp' SCHUGT said:
Hi!

* Bob:

I don't know of an affordable PDF editor. Minimalistic HTML plus CSS?

AFAIK, OpenOffice can export PDF.

kind regards
frank
 
J

Josef 'Jupp' SCHUGT

Hi!

I think it is a good idea to illustrate how Ruby can be used as a
markup language. I therefore wrote an example document and a class
that generates HTML out of it. It is a quick hack but should give an
idea of how a more complex solution (including a couple of output
formats) could look like. For more take a look at the source of the
German comp.lang.ruby FAQ at http://oss.erdfunkstelle.de/ruby/

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Document in Ruby

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

#!/usr/bin/env ruby

require "layout"

Fmt = HTML

d = Fmt.new("Documentation of Ruby in Ruby", "Josef 'Jupp' Schugt")
d.h1("Isn't that an absurd idea?")
d.p(
"At first sight it may seem absurd to use a " +
Fmt.i("programming") +
" language to write documents but it makes perfect sense. It requires
surprisingly little effort to write documentations in Ruby."
)
d.p(
"That simplicity results from Ruby's " + Fmt.i("object-oriented") +
" features."
)
d.p("Some of the advantages of using Ruby:")
d.ol([
"People who document Ruby can be assumed to be familiar with Ruby's
syntax.",
"The formatting capabilities can easily be restricted or expanded
according to the needs.",
"It is very simple to generated any output format you like by
simply instantiating the appropriate class.",
"Separation of structure and layout is very strict.",
"Output generation is incredibly fast.",
])
d.h1('What is needed?')
d.p(
"One needs very few means to typeset a book. As a rule of thumb one
can say that the typographic quality of a book " +
Fmt.i("decreases") + " with an " + Fmt.i("increasing") +
" number of typographic means used (unless you " + Fmt.b("really") +
" know what you are doing)."
)
d.p(
"If you think you need more than what is mentioned in the following
list you should consider reading a good book on typography."
)
d.ul([
"Headlines of several levels",
"Paragraphs",
"italics, bold, and typewriter font",
"Preformatted text",
"Itemization",
"Enumeration",
"Description lists",
"Tables",
"Graphics",
])
d.h1("Stuff not used above")
d.p("The stuff that hasn't been used above is:")
d.ul([
"Typewriter font",
"Preformatted text",
"Description lists",
"Tables",
"Graphics",
])
d.p("Let's demonstrate them now.")
d.h2("Preformatted text and Typewriter font")
d.p(
"The code given below extends the classes " + Fmt.tt("TrueClass") +
" and " + Fmt.tt("FalseClass") +
" so that they can be converted to an integer."
)
d.pre(
"
class TrueClass
def to_i
1
end
end

class FalseClass
def to_i
0
end
end
")
d.h2("Description List")
d.p(
"The description list below has some of the Ruby-related acronyms"
)
d.dl([
[ "DRY", "Don't repeat yourself" ],
[ "IANYM", "I am not Yukihiro Matsumoto" ],
[ "POLS", "Principle of least surprise" ],
[ "YAGNI / YANGI / YANGNI", "You ain't gonna need it" ],
[ "YWFWA", "Yes we freakin' well are" ],
])
d.h2("Table")
d.p(
"The table shows the same as the description list above"
)
d.table([
[ [ "Acronym", "th" ], ["Meaning", "th" ] ],
[ [ "DRY", "th" ], "Don't repeat yourself" ],
[ [ "IANYM", "th" ], "I am not Yukihiro Matsumoto" ],
[ [ "POLS", "th" ], "Principle of least surprise" ],
[ [ "YAGNI/YANGI/YANGNI", "th" ], "You ain't gonna need it" ],
[ [ "YWFWA", "th" ], "Yes we freakin' well are" ],
])
d.h2("Image")
d.p(
"Now it is time for the last element: A picture"
)
d.p(Fmt.img("./rubypower.gif"))
d.h1("Conclusion")
d.p(
"I hope to have shown that it is really easy to write documentations
in Ruby."
)
puts d

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Layout class for HTML

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

#!/usr/bin/env ruby

class HTML
def initialize(title, author)
@date = Time.now.strftime("%Y-%m-%d, %H:%M:%S %Z")
@document = <<-EOF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<title>#{title} by #{author}</title>
<meta name="generator" content="Ruby HTML class"></meta>
</head>
<body>
<hr>
<h1>#{title}</h1>
<h2>#{author}</h2>
<h3>#{@date}</h3>
<hr>
EOF
end

def to_s
<<-EOF
#{@document}
<hr>
<p>
Generated by Ruby HTML class on #{@date}
</p>
</body>
</html>
EOF
end

def h1(text) @document << "<h1>#{text}</h1>\n" end
def h2(text) @document << "<h2>#{text}</h2>\n" end
def h3(text) @document << "<h3>#{text}</h3>\n" end
def h4(text) @document << "<h4>#{text}</h4>\n" end
def h5(text) @document << "<h5>#{text}</h5>\n" end
def h6(text) @document << "<h6>#{text}</h6>\n" end
def p(text) @document << "<p>\n#{text}\n</p>\n" end
def pre(text) @document << "<pre>#{text}</pre>\n" end

def ul(list)
@document << "<ul>\n<li>"
@document << list.join("</li>\n<li>")
@document << "</li>\n</ul>\n"
end

def ol(list)
@document << "<ol>\n<li>"
@document << list.join("</li>\n<li>")
@document << "</li>\n</ol>\n"
end

def dl(list)
@document << "<dl>\n"
list.each { |entry|
@document << "<dt><b>#{entry[0]}</b></dt>\n"
@document << "<dd>#{entry[1]}</dd>\n"
}
@document << "</dl>\n"
end

def table(list)
@document << "<table border>\n"
list.each { |row|
@document << "<tr>\n"
row.each { |cell|
if cell.class == String
@document << "<td>#{cell}</td>\n"
else
@document << "<th align=\"left\">"
@document << "<b>#{cell.first}</b>"
@document << "</th>\n"
end
}
@document << "</tr>\n"
}
@document << "</table>\n"
end

def HTML.i(text) "<i>#{text}</i>" end
def HTML.b(text) "<b>#{text}</b>" end
def HTML.tt(text) "<code>#{text}</code>\n" end
def HTML.img(url) "<img src=\"#{url}\" alt=\"#{url}\">" end

end

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

That's it for now.

Josef 'Jupp' SCHUGT
 
J

Josef 'Jupp' SCHUGT

Hi!

* Zach Dennis:
What about those who can't read german? Should we send your site to
google to translate? Do you need someone to make an English version
of your example document?

Maybe you misunderstood something:

a) The example document is part of the message I sent and in English.

b) The class that does the HTML representation does not generate a
table of contents because that is a bit more involved.

c) The reference to the Ruby source of the German FAQ[1] is present
because it implements more - like a table of contents and a LaTeX
representation. That would have gone beyond the scope of a message
that is nothing but a suggestion of how something could be done.

d) I would have suggested the text even if it were written in Klingon
because the language uses does not have anything to do with the
layout. At least if the language fits into the usual typographic
scheme. The text could be in Turkish - it simply wouldn't matter.

[1] http://oss.erdfunkstelle.de/ruby/FAQ.rb

Josef 'Jupp' SCHUGT
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top