TeXmacs: Thermodynamics and Chemistry by Howard DeVoe - done
Created by Steven Baltakatei Sandoval on 2022-03-17T02:21+00 under a CC BY-SA 4.0 license and last updated on 2023-05-31T19:14+00.
Edit(2023-05-31):Add reboil.com wiki links.
Summary
Thermodynamics and Chemistry by Howard DeVoe, Version 10, Transcribed to TeXmacs. It's done. See the repository for the source code. Compare to the original compiled from LaTeX here.
This past week I've made an effort to finish off the Bibliography and citations of the thermodynamics textbook transcription job I assigned myself over a year ago.
Bibliography wrangling
I had to figure out how exactly TeXmacs processes bibtex
data. It's
complicated and usage isn't well-documented but I found a way that
works (when inserting an automatically-updating bibliography section
via "Insert -> Automatic -> Bibliography", it is possible to specify a
file as well as a bibliography style if you examine the
<bibliography>
tag that is created; the file must be a bibtex
file; then, a tag like <cite|author-1999>
will trigger the
bibliography section to read the file and populate itself with a new
bibliography entry and assign the <cite>
tag a reference number).
One of DeVoe's bibtex
entries kept causing crashes in
TeXmacs whenever I tried to update the bibliography. It was the only
one of its kind.
@incollection{
clapeyron-1834,
Author = {Clapeyron, \'{E}.},
Title = {Memoir on the Motive Power of Heat},
BookTitle = {Reflections on the Motive Power of Fire: Sadi Carnot and other Papers on the Second Law of Thermodynamics by \'{E}.\ Clapeyron and R.\ Clausius},
Editor = {Mendoza, E.},
Publisher = {Dover},
Address = {Mineola, New York},
Pages = {71-105},
Note = {Translation by E.\ Mendoza of ``M\'{e}moire sur la Puissance Motrice de la Chaleur,'' \emph{J.\ de l'\'{E}cole Polytechnique}, \textbf {14}, 153--190 (1834).},
Year = {1988} }
The problem is with the Note
value. There's a lot of what looks like
LaTeX code (which I'm not familiar with). I'm using the tm-plain
style which seems to be okay with processing some LaTeX'isms in these
bibliographical entries (a lot of the markup seems to be used to
effect diacritical marks which could be handled by use of UTF-8
characters, but I wasn't about to go down the rabbit hole of figuring
out how TeXmacs handles Unicode points in its bibliography processing
code). I switched out the Note
value to something simpler (that
references the title's OCLC code) and now book.tm
compiles
(clapeyron-1834
was used in a citation in bio-CLAPEYRON.tm
).
Note = {See OCLC 559435201; 153--190.},
Two columns in one column document
I also figured out that its possible to get two-column pages in an
otherwise single-column TeXmacs document. Basically, you create a
two-column page (single page only) in one TeXmacs document (.tm
)
then <include>
it in another document (via "Insert -> Link ->
Include"). I'm pretty sure this is stretching what the original
developer intended but it seems to work well enough for the
single-page biographical sketches that DeVoe included in his book.
Disappearing Dotted Line
A few months into the transcription project, I emailed Howard DeVoe a
PDF of a draft. He noted that some figures had dashed lines that
changed depending on how far you were zoomed in. Eventually I
concluded the cause of that problem was some error / wrong assumption
made by either Inkscape, ghostscript, or some converter in between the
source Encapsulated Post Script (EPS or .eps
) file that DeVoe had
emailed me and the .eps
file that I got to work when inserted into
the TeXmacs documents. Instead of trying to hunt down the cause, I
decided to try and fix each issue in each .svg
file that Inkscape
could produce from each .eps
file.
SVG is an XML-like format that I can easily parse with grep
, sed
,
and other command line tools that I'm familiar with; in contrast, EPS
is compiled output not meant for direct editing (perhaps decades ago
it was meant to be human-editable but SVG seems to be the standard
now). So, I converted every EPS file I received from DeVoe into an SVG
master file from which I would export EPS or whatever format I needed
to make the book work (see ink_export_to_eps.sh
). I found that each
image with the dynamically chnanging dashed line issue also had a
"stroke-dasharray" key value pair; so, I wrote ink_convert_dash.sh
(in ref/notes/baltakatei/bash/
in the repository), a script to
convert each dashed path object into a path object in which each dash
is a subpath; it greatly increases the amount of information requried
to define the dashed line but the benefit is that the dashed line
appears the same no matter the zoom level; in other words, every
single dash is converted into a static object instead of letting
whatever vector renderer decide how to draw a dashed line.
While I was patting myself on the back for figuring out how to
automatically get Inkscape to process the many SVG files I had, I
noticed that some of the images lost some dotted lines. I eventually
discovered that some dashed lines had dashes with dash lengths
specified so short (zero length), that the Inkscape extension I was
using (org.inkscape.filter.dashit.noprefs
) was encountering a
"divide by zero" error and deleting the path partially or entirely.
Soooooo, I had to write ink_stroke-dasharray_zerofix.sh
to run
before I ran ink_convert_dash.sh
. ink_stroke-dasharray_zerofix.sh
would change all the 0
's in each stroke-dasharray
to something
small. I also filed a bug report (which led to a fix that was merged
by a Jonathan Neuhauser; thanks!). Testing showed me that a value too
close to zero would be the same as if zero were still present. I had
to use a relative value of nearby non-zero values in the
stroke-dasharray
and my code is super brittle (it probably wouldn't
work for all dashed paths encoding all possible morse code sequences,
but my problem was just with simple dotted lines
disappearing). … — …
I debugged the scripts so they'd do what I wanted (fix the dashed
paths into paths with static subpaths for each dash/dot). I definitely
couldn't do what I did with earlier versions of Inkscape; I downloaded
and ran the latest Inkscape version (inkscape 1.2
); its command line
interface is super slick (although it would be nice if there were a
sleep
command to let me get a peek at changes).
Long story short, I think I've resolved the dashed line issue,
Professor DeVoe. ^^;;
Next steps
The core reason I transcribed the textbook in the first place was so that when I completed the problem sets for my own review and education, I'd be able to have a digital document that I could link to and share with others. That means the next step, now that transcription is done, is to create my own solutions to the problem sets and record them in TeXmacs.
This means I will probably need to use DWSIM more in order to cross-check my thermodynamic calculations and create illustrations / diagrams relevant to each solution. Again, I want to be able to hand someone a ZIP file containing everything they need to learn Chemical Engineering; that means not only textbooks and problem sets, but also simulation software that they might use when applying this knowledge in industry. A ZIP file that I could in good conscience send to the people on the ISS should everyone on the planet's surface be doomed.