tag:blogger.com,1999:blog-2838195841516422742024-03-05T02:23:30.398-08:00Theorem Linkernlefebvrhttp://www.blogger.com/profile/01090240818209312853noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-283819584151642274.post-34126026980213072772012-07-30T14:24:00.000-07:002012-07-30T14:24:33.042-07:00(v0.8) Cleaner searches, better error handling<h2>
<span style="font-size: medium;">THEOREM LINKER </span></h2>
<a href="https://www.dropbox.com/s/3ovrsqrfl7a1256/thmlink0.8.zip">v0.8</a> <br />
<br />
<br />
Version 0.8 of the Theorem Linker has been updated with the following:<br />
<ul>
<li><a href="http://www.personal.ceu.hu/tex/docclass.htm" target="_blank">Built-in</a> document styles(article, letter, report, etc.) are no longer searched for theorem definitions.</li>
<li>When a syntactical error is found, Theorem Linker will notify the user instead of simply closing.</li>
<li>Both <span style="font-family: "Courier New",Courier,monospace;">\input{anexamplepaper.tex}</span> and <span style="font-family: "Courier New",Courier,monospace;">\input{anexamplepaper}</span> will find the file named "anexamplepaper.tex"</li>
</ul>
<br />
<a href="https://www.dropbox.com/s/3ovrsqrfl7a1256/thmlink0.8.zip" target="_blank">Download version 0.8 </a>nlefebvrhttp://www.blogger.com/profile/01090240818209312853noreply@blogger.com1tag:blogger.com,1999:blog-283819584151642274.post-86728365578033064812012-07-20T16:01:00.006-07:002012-07-23T15:31:45.799-07:00(v0.7) Added .cls searching<h2>
<span style="font-size: large;">THEOREM LINKER </span></h2>
<a href="https://www.dropbox.com/s/hjcx4tigxwyfc6e/thmlink0.7.zip">v0.7</a><br />
<br />
(More notes to be added later)<br />
<br />
<ul>
<li>Theorem linker will now check for a .cls file, if any theorems are defined inside this class file, they can also be found inside the LaTeX file.</li>
<li>Reordered Verex names in graphs (theorem followed by label, previously it was the reverse).</li>
<li>Fixed error using -p where if "end of proof" always ended with newline</li>
</ul>
<a href="https://www.dropbox.com/s/hjcx4tigxwyfc6e/thmlink0.7.zip" target="_blank">Download v0.7 </a>nlefebvrhttp://www.blogger.com/profile/01090240818209312853noreply@blogger.com0tag:blogger.com,1999:blog-283819584151642274.post-8037184293930342622012-06-18T15:53:00.001-07:002012-07-05T12:45:00.316-07:00Changed folder names.<h2>
<span style="font-size: large;">
THEOREM LINKER </span></h2>
<a href="https://www.dropbox.com/s/zozdbp999npaiz1/thmlink0.6.zip" target="_blank">v 0.6</a><br />
<br />
<ul>
<li>Folders now are named after .tex paper name (eg: for paper.tex: paper-MultiLevel) </li>
<li>Folers are deleted, remade if run multiple times (old theorems that no longer exist will be deleted)</li>
<li>Single-level and multi-level .dot files are now named with their theorem name and number, along with the label.</li>
</ul>
<a href="https://www.dropbox.com/s/zozdbp999npaiz1/thmlink0.6.zip" target="_blank">Download v 0.6</a>nlefebvrhttp://www.blogger.com/profile/01090240818209312853noreply@blogger.com0tag:blogger.com,1999:blog-283819584151642274.post-78427088075344879892012-06-15T12:44:00.003-07:002012-07-30T14:25:22.935-07:00Theorem linker<h2>
</h2>
<h2>
<span style="font-size: large;">
THEOREM LINKER </span></h2>
v 0.5<br />
<h3>
Description</h3>
Theorem Linker creates graphs to depict dependencies between theorems in papers.<br />
<br />
With a paper written using LaTeX, Theorem Linker will:<br />
<ol>
<li>Find all theorem types (ex: lemma, corollary, theorem, or anything using the \newtheorem{} command)</li>
<li>Find all theorems and their respective proofs in the paper</li>
<li>Inside each proof, find all references to other theorems</li>
<li>Create a graph with vertices to represent all the different theorems, and directed edges to represent all references. </li>
</ol>
A path highlighted in <span style="color: red;">red </span>describes the longest path in the graph.<br />
Two folders are created:<br />
<ul>
<li>SingleLevel, which contains a graph for each theorem in the paper, each graph displaying only the direct references to and from the specific theorem </li>
<li>MultiLevel, also containing one graph for each theorem, and each graph showing all ancestor and descendant theorems of the specific theorem.</li>
</ul>
<br />
All graphs are files written in a .dot file (to be opened with programs such as <a href="http://www.graphviz.org/Download..php" target="_blank">Graphviz</a> or <a href="http://www.omnigroup.com/products/omnigraffle/" target="_blank">OmniGraffle</a>) that will display each theorem as a node, with directed edges to describe the relations between the theorems.<br />
<br />
There is a package (thmlinker.sty) available for download to be used alongside a LaTeX paper. The package allows two commands and an environment to be used when writing a paper.<br />
<ul>
<li><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;">\noref{} </span>is used for making references in a proof, where a reference shouldn't be explicitly written out, for stylistic or other reasons</span></li>
<li><span style="font-family: "Courier New",Courier,monospace; font-size: small;">\delref{}</span><span style="font-size: small;"> </span><span style="font-size: small;"><span style="font-family: inherit;">is similar to \noref, only with delref, references are checked by the LaTeX compiler. Using delref ensures that there are no typos in silent references, however its disadvantage is sometimes it can cause formatting errors when not being used in a paragraph of text</span></span></li>
<li><span style="font-family: "Courier New",Courier,monospace; font-size: small;">\begin{proofblock} </span><span style="font-family: inherit; font-size: small;">and <span style="font-family: "Courier New",Courier,monospace;">\end{proofblock}</span> can be put around any block of text to create a "proof" environment for a</span><span style="font-size: small;"> theorem. This is useful for wrapping previous proofs in a paper that did not use \</span><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;">begin{proof}</span> or did not have it defined. It can also be use to designate what a theorem a proof is referring to if they are not in order. Simply use </span><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;">\begin{proofblock}[label]</span>, where "label" is the label of the theorem you wish the proof to belong to</span>.<br /><span style="font-family: Georgia,"Times New Roman",serif; font-size: x-small;"><b>NOTE</b></span><span style="font-size: x-small;"> </span><span style="font-family: inherit; font-size: x-small;"><span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">\begin{proofblock}</span></span> does not provide any formatting at the beginning or ends of a proof. This allows it to be used easily in conjunction with other pre-existing environments.</span></li>
</ul>
<h3>
</h3>
<h3>
Source code </h3>
<a href="http://thmlink.blogspot.ca/2012/07/v08-cleaner-searches-better-error.html" target="_blank">Download Latest Version of Theorem Linker!</a> <br />
<a href="https://www.dropbox.com/s/lp4vyhzlwc7cs2f/thmlinker.sty" target="_blank">thmlinker.sty package for tex documents</a><br />
<span style="font-size: x-small;">thmlink is a program written in C, and is compiled with gcc </span> <br />
<h3>
</h3>
<h3>
License </h3>
Theorem Linker is distributed under the <a href="http://www.gnu.org/licenses/gpl-3.0.txt" target="_blank">GPL v3.0</a>.<br />
Feel free to use this program on any papers you have written, or alongside with any you will write.<br />
<h3>
</h3>
<h3>
Directions</h3>
<ol>
<li>Compile .tex paper using a LaTeX compiler (so that .aux file will be produced)</li>
<li>Compile thmlink program if it hasn't been done already (see readme file)</li>
<li>run thmlink with the .tex paper as an argument (see readme file)</li>
<li>Open .dot graph file (with Graphviz or OmniGraffle) to see produced graph.</li>
</ol>
<h3>
</h3>
<h3>
Notes</h3>
While Theorem Linker can handle many different papers, they should be written similar to the outline seen in 'Example Usage' to guarantee that it will work.<br />
All theorems should have a label. A label is needed when making a reference, however it should be there even when there is no reference to a theorem. It will help make the graph more understandable to anyone reading it.<br />
<h3>
</h3>
<h3>
Example Usage<br />
</h3>
Here is an <a href="https://www.dropbox.com/s/pezcqtq2z48hysb/ExampleDoc.tex" target="_blank">example document</a> (be sure to download thmlinker.sty and put it in the same folder) to try to use thmlink on. In the end, a graph such as this should be produced:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxIgy2ZG6uOoBdd2iMLIZO6h6winTQHb-nvj2Dn6sQC3xY7FBqkaYPJeq_6D5n9wn2bCs1OecqQ5rJUbGEeUM77tCjtoA3tKxXEh_GGrBqMMjnT4bfTBxi9WnoiRkIT5v0YV4CSXi6LAk/s1600/graph.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxIgy2ZG6uOoBdd2iMLIZO6h6winTQHb-nvj2Dn6sQC3xY7FBqkaYPJeq_6D5n9wn2bCs1OecqQ5rJUbGEeUM77tCjtoA3tKxXEh_GGrBqMMjnT4bfTBxi9WnoiRkIT5v0YV4CSXi6LAk/s320/graph.jpg" width="281" /></a></div>
<br />
<br />
A document can be written in a form like this to work:<br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;">\newtheorem{theorem}{Theorem}</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;">\newtheorem{lemma}[theorem]{Lemma}</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;">...</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;">
</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;">
\begin{document} </span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;">... </span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;">\begin{lemma} \label{firstlem} </span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;"><i>Lemma description</i></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;">\end{lemma}</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;"><i> </i></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;"><i>...</i></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;">\begin{proof}</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;"><i>proof of the previous lemma</i></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;">\end{proof}<i> </i></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;">\begin{thm}</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;">\label{theoremA} </span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;"><i>Theorem description</i></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;">\end{thm} </span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;">\begin{proof}</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;"><i>proof of theorem, with references </i>\ref{firstlem}<i> </i></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;">\end{proof}</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;">...</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: small;"><br /></span></div>
<span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;">\end{document}</span></span><br />
<br />
<h4 style="font-family: inherit;">
<span style="font-size: small;">Contact</span></h4>
<div style="font-family: inherit;">
<span style="font-size: small;">Nicolas Lefebvre </span></div>
<div style="font-family: inherit;">
<span style="font-size: small;">Email: <a href="mailto:nlefebvr@ualberta.ca" target="_blank">nlefebvr@ualberta.ca</a></span></div>nlefebvrhttp://www.blogger.com/profile/01090240818209312853noreply@blogger.com0