Hans Petter Langtangen 10 سال پیش
والد
کامیت
78c8bc438f
100فایلهای تغییر یافته به همراه8837 افزوده شده و 1653 حذف شده
  1. 128 73
      doc/pub/tutorial/._pysketcher000.html
  2. 118 83
      doc/pub/tutorial/._pysketcher001.html
  3. 165 112
      doc/pub/tutorial/._pysketcher002.html
  4. 117 72
      doc/pub/tutorial/._pysketcher003.html
  5. BIN
      doc/pub/tutorial/fig-tut/Arc.pdf
  6. BIN
      doc/pub/tutorial/fig-tut/Arc.png
  7. BIN
      doc/pub/tutorial/fig-tut/Axis.pdf
  8. BIN
      doc/pub/tutorial/fig-tut/Axis.png
  9. BIN
      doc/pub/tutorial/fig-tut/Dashpot.pdf
  10. BIN
      doc/pub/tutorial/fig-tut/Dashpot.png
  11. BIN
      doc/pub/tutorial/fig-tut/Distance_wText.pdf
  12. BIN
      doc/pub/tutorial/fig-tut/Distance_wText.png
  13. BIN
      doc/pub/tutorial/fig-tut/Rectangle.pdf
  14. BIN
      doc/pub/tutorial/fig-tut/Rectangle.png
  15. BIN
      doc/pub/tutorial/fig-tut/Shape_hierarchy_complete.png
  16. BIN
      doc/pub/tutorial/fig-tut/Shape_hierarchy_larger.png
  17. BIN
      doc/pub/tutorial/fig-tut/Shape_hierarchy_small.png
  18. BIN
      doc/pub/tutorial/fig-tut/Spring.pdf
  19. BIN
      doc/pub/tutorial/fig-tut/Spring.png
  20. BIN
      doc/pub/tutorial/fig-tut/StochasticWavyCurve.pdf
  21. BIN
      doc/pub/tutorial/fig-tut/StochasticWavyCurve.png
  22. BIN
      doc/pub/tutorial/fig-tut/Triangle.pdf
  23. BIN
      doc/pub/tutorial/fig-tut/Triangle.png
  24. BIN
      doc/pub/tutorial/fig-tut/Vehicle0_hier2.pdf
  25. BIN
      doc/pub/tutorial/fig-tut/Vehicle0_hier2.png
  26. BIN
      doc/pub/tutorial/fig-tut/Wavy.pdf
  27. BIN
      doc/pub/tutorial/fig-tut/Wavy.png
  28. BIN
      doc/pub/tutorial/fig-tut/beam_mid_support_deflection.png
  29. BIN
      doc/pub/tutorial/fig-tut/beam_mid_support_math.png
  30. BIN
      doc/pub/tutorial/fig-tut/beam_mid_support_raw.png
  31. 794 0
      doc/pub/tutorial/fig-tut/mpl_code_Arc.py
  32. 122 0
      doc/pub/tutorial/fig-tut/mpl_code_Axis.py
  33. 195 0
      doc/pub/tutorial/fig-tut/mpl_code_Dashpot.py
  34. 149 0
      doc/pub/tutorial/fig-tut/mpl_code_Distance_wText.py
  35. 66 0
      doc/pub/tutorial/fig-tut/mpl_code_Rectangle.py
  36. 2219 0
      doc/pub/tutorial/fig-tut/mpl_code_Spring.py
  37. 30 0
      doc/pub/tutorial/fig-tut/mpl_code_Triangle.py
  38. 4025 0
      doc/pub/tutorial/fig-tut/mpl_code_Wavy.py
  39. BIN
      doc/pub/tutorial/fig-tut/pendulum.png
  40. BIN
      doc/pub/tutorial/fig-tut/vehicle0.pdf
  41. BIN
      doc/pub/tutorial/fig-tut/vehicle0.png
  42. BIN
      doc/pub/tutorial/fig-tut/vehicle0_dim.pdf
  43. BIN
      doc/pub/tutorial/fig-tut/vehicle0_dim.png
  44. BIN
      doc/pub/tutorial/fig-tut/vehicle0_hier1.pdf
  45. BIN
      doc/pub/tutorial/fig-tut/vehicle0_hier1.png
  46. BIN
      doc/pub/tutorial/fig-tut/vehicle0a.png
  47. BIN
      doc/pub/tutorial/fig-tut/vehicle0a_c.png
  48. BIN
      doc/pub/tutorial/fig-tut/vehicle0b.png
  49. BIN
      doc/pub/tutorial/fig-tut/vehicle0b_c.png
  50. BIN
      doc/pub/tutorial/fig-tut/vehicle1.pdf
  51. BIN
      doc/pub/tutorial/fig-tut/vehicle1.png
  52. BIN
      doc/pub/tutorial/fig-tut/vehicle_v1.pdf
  53. BIN
      doc/pub/tutorial/fig-tut/vehicle_v1.png
  54. BIN
      doc/pub/tutorial/fig-tut/vehicle_v2.pdf
  55. BIN
      doc/pub/tutorial/fig-tut/vehicle_v2.png
  56. BIN
      doc/pub/tutorial/fig-tut/vehicle_v23.pdf
  57. BIN
      doc/pub/tutorial/fig-tut/vehicle_v23.png
  58. BIN
      doc/pub/tutorial/fig-tut/vehicle_v3.pdf
  59. BIN
      doc/pub/tutorial/fig-tut/vehicle_v3.png
  60. BIN
      doc/pub/tutorial/fig-tut/wheel_on_inclined_plane.pdf
  61. BIN
      doc/pub/tutorial/fig-tut/wheel_on_inclined_plane.png
  62. 1 1
      doc/pub/tutorial/html/.buildinfo
  63. 6 7
      doc/pub/tutorial/html/_sources/index.txt
  64. 82 16
      doc/pub/tutorial/html/_static/basic.css
  65. BIN
      doc/pub/tutorial/html/_static/dialog-note.png
  66. BIN
      doc/pub/tutorial/html/_static/dialog-seealso.png
  67. BIN
      doc/pub/tutorial/html/_static/dialog-topic.png
  68. BIN
      doc/pub/tutorial/html/_static/dialog-warning.png
  69. 36 20
      doc/pub/tutorial/html/_static/doctools.js
  70. BIN
      doc/pub/tutorial/html/_static/down-pressed.png
  71. BIN
      doc/pub/tutorial/html/_static/down.png
  72. 0 310
      doc/pub/tutorial/html/_static/epub.css
  73. BIN
      doc/pub/tutorial/html/_static/file.png
  74. BIN
      doc/pub/tutorial/html/_static/footerbg.png
  75. BIN
      doc/pub/tutorial/html/_static/headerbg.png
  76. 0 7
      doc/pub/tutorial/html/_static/ie6.css
  77. 4 154
      doc/pub/tutorial/html/_static/jquery.js
  78. BIN
      doc/pub/tutorial/html/_static/middlebg.png
  79. BIN
      doc/pub/tutorial/html/_static/minus.png
  80. BIN
      doc/pub/tutorial/html/_static/plus.png
  81. 0 367
      doc/pub/tutorial/html/_static/pyramid.css
  82. 219 152
      doc/pub/tutorial/html/_static/searchtools.js
  83. BIN
      doc/pub/tutorial/html/_static/transparent.gif
  84. 31 16
      doc/pub/tutorial/html/_static/underscore.js
  85. BIN
      doc/pub/tutorial/html/_static/up-pressed.png
  86. BIN
      doc/pub/tutorial/html/_static/up.png
  87. 17 17
      doc/pub/tutorial/html/_static/websupport.js
  88. 29 38
      doc/pub/tutorial/html/genindex.html
  89. 53 80
      doc/pub/tutorial/html/index.html
  90. BIN
      doc/pub/tutorial/html/objects.inv
  91. 29 35
      doc/pub/tutorial/html/search.html
  92. 1 1
      doc/pub/tutorial/html/searchindex.js
  93. 128 73
      doc/pub/tutorial/pysketcher.html
  94. BIN
      doc/pub/tutorial/pysketcher.pdf
  95. 2 0
      doc/src/tut/basics.do.txt
  96. 7 7
      doc/src/tut/classes.do.txt
  97. 5 0
      doc/src/tut/main_sketcher.do.txt
  98. 20 12
      doc/src/tut/make.sh
  99. 39 0
      doc/web/index.html
  100. 0 0
      index.html

+ 128 - 73
doc/pub/tutorial/._pysketcher000.html

@@ -11,31 +11,20 @@ Automatically generated HTML file from DocOnce source
 
 <title>Using Pysketcher to Create Principal Sketches of Physics Problems</title>
 
+<!-- Bootstrap style: bootswatch_readable -->
+<link href="http://netdna.bootstrapcdn.com/bootswatch/3.1.1/readable/bootstrap.min.css" rel="stylesheet">
+<!-- not necessary
+<link href="http://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
+-->
 
 <style type="text/css">
-/* blueish style */
-
-/* Color definitions:  http://www.december.com/html/spec/color0.html
-   CSS examples:       http://www.w3schools.com/css/css_examples.asp */
 
-body {
-  margin-top: 1.0em;
-  background-color: #ffffff;
-  font-family: Helvetica, Arial, FreeSans, san-serif;
-  color: #000000;
+/* Add scrollbar to dropdown menus in bootstrap navigation bar */
+.dropdown-menu {
+   height: auto;
+   max-height: 400px;
+   overflow-x: hidden;
 }
-h1 { font-size: 1.8em; color: #1e36ce; }
-h2 { font-size: 1.6em; color: #1e36ce; }
-h3 { font-size: 1.4em; color: #1e36ce; }
-a { color: #1e36ce; text-decoration:none; }
-tt { font-family: "Courier New", Courier; }
-/* pre style removed because it will interfer with pygments */
-p { text-indent: 0px; }
-hr { border: 0; width: 80%; border-bottom: 1px solid #aaa}
-p.caption { width: 80%; font-style: normal; text-align: left; }
-hr.figure { border: 0; width: 80%; border-bottom: 1px solid #aaa}
-
-div { text-align: justify; text-justify: inter-word; }
 </style>
 
 
@@ -43,51 +32,48 @@ div { text-align: justify; text-justify: inter-word; }
 
 <!-- tocinfo
 {'highest level': 1,
- 'sections': [(' A First Glimpse of Pysketcher ', 1, None, '___sec0'),
-              (' Basic Construction of Sketches ', 2, None, '___sec1'),
-              (' Basic Drawing ', 3, None, '___sec2'),
-              (' Groups of Objects ', 3, None, '___sec3'),
-              (' Changing Line Styles and Colors ', 3, None, '___sec4'),
-              (' The Figure Composition as an Object Hierarchy ',
+ 'sections': [('A First Glimpse of Pysketcher', 1, None, '___sec0'),
+              ('Basic Construction of Sketches', 2, None, '___sec1'),
+              ('Basic Drawing', 3, None, '___sec2'),
+              ('Groups of Objects', 3, None, '___sec3'),
+              ('Changing Line Styles and Colors', 3, None, '___sec4'),
+              ('The Figure Composition as an Object Hierarchy',
                3,
                None,
                '___sec5'),
-              (' Animation: Translating the Vehicle ', 3, None, '___sec6'),
-              (' Animation: Rolling the Wheels ',
+              ('Animation: Translating the Vehicle', 3, None, '___sec6'),
+              ('Animation: Rolling the Wheels',
                3,
                'sketcher:vehicle1:anim',
                'sketcher:vehicle1:anim'),
-              (' Basic Shapes ', 1, None, '___sec8'),
-              (' Axis ', 2, None, '___sec9'),
-              (' Distance with Text ', 2, None, '___sec10'),
-              (' Rectangle ', 2, None, '___sec11'),
-              (' Triangle ', 2, None, '___sec12'),
-              (' Arc ', 2, None, '___sec13'),
-              (' Spring ', 2, None, '___sec14'),
-              (' Dashpot ', 2, None, '___sec15'),
-              (' Wavy ', 2, None, '___sec16'),
-              (' Stochastic curves ', 2, None, '___sec17'),
-              (' Inner Workings of the Pysketcher Tool ',
-               1,
-               None,
-               '___sec18'),
-              (' Example of Classes for Geometric Objects ',
+              ('Basic Shapes', 1, None, '___sec8'),
+              ('Axis', 2, None, '___sec9'),
+              ('Distance with Text', 2, None, '___sec10'),
+              ('Rectangle', 2, None, '___sec11'),
+              ('Triangle', 2, None, '___sec12'),
+              ('Arc', 2, None, '___sec13'),
+              ('Spring', 2, None, '___sec14'),
+              ('Dashpot', 2, None, '___sec15'),
+              ('Wavy', 2, None, '___sec16'),
+              ('Stochastic curves', 2, None, '___sec17'),
+              ('Inner Workings of the Pysketcher Tool', 1, None, '___sec18'),
+              ('Example of Classes for Geometric Objects',
                2,
                None,
                '___sec19'),
-              (' Simple Geometric Objects ', 3, None, '___sec20'),
-              (' Class Curve ', 3, None, '___sec21'),
-              (' Compound Geometric Objects ', 3, None, '___sec22'),
-              (' Adding Functionality via Recursion ', 2, None, '___sec23'),
-              (' Basic Principles of Recursion ', 3, None, '___sec24'),
-              (' Explaining Recursion ', 3, None, '___sec25'),
-              (' Scaling, Translating, and Rotating a Figure ',
+              ('Simple Geometric Objects', 3, None, '___sec20'),
+              ('Class Curve', 3, None, '___sec21'),
+              ('Compound Geometric Objects', 3, None, '___sec22'),
+              ('Adding Functionality via Recursion', 2, None, '___sec23'),
+              ('Basic Principles of Recursion', 3, None, '___sec24'),
+              ('Explaining Recursion', 3, None, '___sec25'),
+              ('Scaling, Translating, and Rotating a Figure',
                2,
                'sketcher:scaling',
                'sketcher:scaling'),
-              (' Scaling ', 3, None, '___sec27'),
-              (' Translation ', 3, None, '___sec28'),
-              (' Rotation ', 3, None, '___sec29')]}
+              ('Scaling', 3, None, '___sec27'),
+              ('Translation', 3, None, '___sec28'),
+              ('Rotation', 3, None, '___sec29')]}
 end of tocinfo -->
 
 <body>
@@ -109,21 +95,70 @@ MathJax.Hub.Config({
 
 
     
-<a name="part0000"></a>
-<p>
-<!-- begin top navigation -->
-<table style="width: 100%"><tr><td>
-</td><td>
-<div style="text-align: right;"><a href="._pysketcher001.html"><img src="http://hplgit.github.io/doconce/bundled/html_images/next1.png" border=0 alt="Next &raquo;"></a></div>
-</td></tr></table>
-<!-- end top navigation -->
-</p>
+<!-- Bootstrap navigation bar -->
+<div class="navbar navbar-default navbar-fixed-top">
+  <div class="navbar-header">
+    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">
+      <span class="icon-bar"></span>
+      <span class="icon-bar"></span>
+      <span class="icon-bar"></span>
+    </button>
+    <a class="navbar-brand" href="pysketcher.html">Using Pysketcher to Create Principal Sketches of Physics Problems</a>
+  </div>
+
+  <div class="navbar-collapse collapse navbar-responsive-collapse">
+    <ul class="nav navbar-nav navbar-right">
+      <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contents <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec0" style="font-size: 80%;"><b>A First Glimpse of Pysketcher</b></a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec1" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Basic Construction of Sketches</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec2" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Basic Drawing</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec3" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Groups of Objects</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec4" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Changing Line Styles and Colors</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec5" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Figure Composition as an Object Hierarchy</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec6" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Animation: Translating the Vehicle</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#sketcher:vehicle1:anim" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Animation: Rolling the Wheels</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec8" style="font-size: 80%;"><b>Basic Shapes</b></a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec9" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Axis</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec10" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Distance with Text</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec11" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Rectangle</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec12" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Triangle</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec13" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Arc</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec14" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Spring</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec15" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Dashpot</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec16" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Wavy</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec17" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Stochastic curves</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec18" style="font-size: 80%;"><b>Inner Workings of the Pysketcher Tool</b></a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec19" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Example of Classes for Geometric Objects</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec20" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Simple Geometric Objects</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec21" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class Curve</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec22" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compound Geometric Objects</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec23" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Adding Functionality via Recursion</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec24" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Basic Principles of Recursion</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec25" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Explaining Recursion</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#sketcher:scaling" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Scaling, Translating, and Rotating a Figure</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec27" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scaling</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec28" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Translation</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec29" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rotation</a></li>
+
+        </ul>
+      </li>
+    </ul>
+  </div>
+</div>
+</div> <!-- end of navigation bar -->
 
-<p>
+<div class="container">
+
+<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p> <!-- add vertical space -->
+
+<a name="part0000"></a>
 <!-- ------------------- main content ---------------------- -->
 
 
 
+<div class="jumbotron">
 <center><h1>Using Pysketcher to Create Principal Sketches of Physics Problems</h1></center>  <!-- document title -->
 
 <p>
@@ -138,8 +173,10 @@ MathJax.Hub.Config({
 
 <center>[1] <b>Center for Biomedical Computing, Simula Research Laboratory</b></center>
 <center>[2] <b>Department of Informatics, University of Oslo</b></center>
+<br>
 <p>
-<center><h4>Apr 27, 2015</h4></center> <!-- date -->
+<center><h4>Dec 22, 2015</h4></center> <!-- date -->
+<br>
 <p>
 
 <!-- begin box -->
@@ -179,17 +216,35 @@ no further background is required.
 <!-- which is just a part of this document... -->
 
 <p>
-<p>
-<!-- begin bottom navigation -->
-<table style="width: 100%"><tr><td>
-</td><td>
-<div style="text-align: right;"><a href="._pysketcher001.html"><img src="http://hplgit.github.io/doconce/bundled/html_images/next1.png" border=0 alt="Next &raquo;"></a></div>
-</td></tr></table>
-<!-- end bottom navigation -->
-</p>
 
+
+<p><a href="._pysketcher001.html" class="btn btn-primary btn-lg">Read &raquo;</a></p>
+
+
+</div> <!-- end jumbotron -->
+
+<p>
+<!-- navigation buttons at the bottom of the page -->
+<ul class="pagination">
+  <li class="active"><a href="._pysketcher000.html">1</a></li>
+  <li><a href="._pysketcher001.html">2</a></li>
+  <li><a href="._pysketcher002.html">3</a></li>
+  <li><a href="._pysketcher003.html">4</a></li>
+  <li><a href="._pysketcher001.html">&raquo;</a></li>
+</ul>
 <!-- ------------------- end of main content --------------- -->
 
+</div>  <!-- end container -->
+<!-- include javascript, jQuery *first* -->
+<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
+<script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
+
+<!-- Bootstrap footer
+<footer>
+<a href="http://..."><img width="250" align=right src="http://..."></a>
+</footer>
+-->
+
 
 </body>
 </html>

+ 118 - 83
doc/pub/tutorial/._pysketcher001.html

@@ -11,31 +11,20 @@ Automatically generated HTML file from DocOnce source
 
 <title>Using Pysketcher to Create Principal Sketches of Physics Problems</title>
 
+<!-- Bootstrap style: bootswatch_readable -->
+<link href="http://netdna.bootstrapcdn.com/bootswatch/3.1.1/readable/bootstrap.min.css" rel="stylesheet">
+<!-- not necessary
+<link href="http://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
+-->
 
 <style type="text/css">
-/* blueish style */
-
-/* Color definitions:  http://www.december.com/html/spec/color0.html
-   CSS examples:       http://www.w3schools.com/css/css_examples.asp */
 
-body {
-  margin-top: 1.0em;
-  background-color: #ffffff;
-  font-family: Helvetica, Arial, FreeSans, san-serif;
-  color: #000000;
+/* Add scrollbar to dropdown menus in bootstrap navigation bar */
+.dropdown-menu {
+   height: auto;
+   max-height: 400px;
+   overflow-x: hidden;
 }
-h1 { font-size: 1.8em; color: #1e36ce; }
-h2 { font-size: 1.6em; color: #1e36ce; }
-h3 { font-size: 1.4em; color: #1e36ce; }
-a { color: #1e36ce; text-decoration:none; }
-tt { font-family: "Courier New", Courier; }
-/* pre style removed because it will interfer with pygments */
-p { text-indent: 0px; }
-hr { border: 0; width: 80%; border-bottom: 1px solid #aaa}
-p.caption { width: 80%; font-style: normal; text-align: left; }
-hr.figure { border: 0; width: 80%; border-bottom: 1px solid #aaa}
-
-div { text-align: justify; text-justify: inter-word; }
 </style>
 
 
@@ -43,51 +32,48 @@ div { text-align: justify; text-justify: inter-word; }
 
 <!-- tocinfo
 {'highest level': 1,
- 'sections': [(' A First Glimpse of Pysketcher ', 1, None, '___sec0'),
-              (' Basic Construction of Sketches ', 2, None, '___sec1'),
-              (' Basic Drawing ', 3, None, '___sec2'),
-              (' Groups of Objects ', 3, None, '___sec3'),
-              (' Changing Line Styles and Colors ', 3, None, '___sec4'),
-              (' The Figure Composition as an Object Hierarchy ',
+ 'sections': [('A First Glimpse of Pysketcher', 1, None, '___sec0'),
+              ('Basic Construction of Sketches', 2, None, '___sec1'),
+              ('Basic Drawing', 3, None, '___sec2'),
+              ('Groups of Objects', 3, None, '___sec3'),
+              ('Changing Line Styles and Colors', 3, None, '___sec4'),
+              ('The Figure Composition as an Object Hierarchy',
                3,
                None,
                '___sec5'),
-              (' Animation: Translating the Vehicle ', 3, None, '___sec6'),
-              (' Animation: Rolling the Wheels ',
+              ('Animation: Translating the Vehicle', 3, None, '___sec6'),
+              ('Animation: Rolling the Wheels',
                3,
                'sketcher:vehicle1:anim',
                'sketcher:vehicle1:anim'),
-              (' Basic Shapes ', 1, None, '___sec8'),
-              (' Axis ', 2, None, '___sec9'),
-              (' Distance with Text ', 2, None, '___sec10'),
-              (' Rectangle ', 2, None, '___sec11'),
-              (' Triangle ', 2, None, '___sec12'),
-              (' Arc ', 2, None, '___sec13'),
-              (' Spring ', 2, None, '___sec14'),
-              (' Dashpot ', 2, None, '___sec15'),
-              (' Wavy ', 2, None, '___sec16'),
-              (' Stochastic curves ', 2, None, '___sec17'),
-              (' Inner Workings of the Pysketcher Tool ',
-               1,
-               None,
-               '___sec18'),
-              (' Example of Classes for Geometric Objects ',
+              ('Basic Shapes', 1, None, '___sec8'),
+              ('Axis', 2, None, '___sec9'),
+              ('Distance with Text', 2, None, '___sec10'),
+              ('Rectangle', 2, None, '___sec11'),
+              ('Triangle', 2, None, '___sec12'),
+              ('Arc', 2, None, '___sec13'),
+              ('Spring', 2, None, '___sec14'),
+              ('Dashpot', 2, None, '___sec15'),
+              ('Wavy', 2, None, '___sec16'),
+              ('Stochastic curves', 2, None, '___sec17'),
+              ('Inner Workings of the Pysketcher Tool', 1, None, '___sec18'),
+              ('Example of Classes for Geometric Objects',
                2,
                None,
                '___sec19'),
-              (' Simple Geometric Objects ', 3, None, '___sec20'),
-              (' Class Curve ', 3, None, '___sec21'),
-              (' Compound Geometric Objects ', 3, None, '___sec22'),
-              (' Adding Functionality via Recursion ', 2, None, '___sec23'),
-              (' Basic Principles of Recursion ', 3, None, '___sec24'),
-              (' Explaining Recursion ', 3, None, '___sec25'),
-              (' Scaling, Translating, and Rotating a Figure ',
+              ('Simple Geometric Objects', 3, None, '___sec20'),
+              ('Class Curve', 3, None, '___sec21'),
+              ('Compound Geometric Objects', 3, None, '___sec22'),
+              ('Adding Functionality via Recursion', 2, None, '___sec23'),
+              ('Basic Principles of Recursion', 3, None, '___sec24'),
+              ('Explaining Recursion', 3, None, '___sec25'),
+              ('Scaling, Translating, and Rotating a Figure',
                2,
                'sketcher:scaling',
                'sketcher:scaling'),
-              (' Scaling ', 3, None, '___sec27'),
-              (' Translation ', 3, None, '___sec28'),
-              (' Rotation ', 3, None, '___sec29')]}
+              ('Scaling', 3, None, '___sec27'),
+              ('Translation', 3, None, '___sec28'),
+              ('Rotation', 3, None, '___sec29')]}
 end of tocinfo -->
 
 <body>
@@ -109,29 +95,67 @@ MathJax.Hub.Config({
 
 
     
-<a name="part0001"></a>
-<p>
-<!-- begin top navigation -->
-<table style="width: 100%"><tr><td>
-<div style="text-align: left;"><a href="._pysketcher000.html"><img src="http://hplgit.github.io/doconce/bundled/html_images/prev1.png" border=0 alt="&laquo; Previous"></a></div>
-</td><td>
-<div style="text-align: right;"><a href="._pysketcher002.html"><img src="http://hplgit.github.io/doconce/bundled/html_images/next1.png" border=0 alt="Next &raquo;"></a></div>
-</td></tr></table>
-<!-- end top navigation -->
-</p>
+<!-- Bootstrap navigation bar -->
+<div class="navbar navbar-default navbar-fixed-top">
+  <div class="navbar-header">
+    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">
+      <span class="icon-bar"></span>
+      <span class="icon-bar"></span>
+      <span class="icon-bar"></span>
+    </button>
+    <a class="navbar-brand" href="pysketcher.html">Using Pysketcher to Create Principal Sketches of Physics Problems</a>
+  </div>
+
+  <div class="navbar-collapse collapse navbar-responsive-collapse">
+    <ul class="nav navbar-nav navbar-right">
+      <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contents <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+     <!-- navigation toc: --> <li><a href="#___sec0" style="font-size: 80%;"><b>A First Glimpse of Pysketcher</b></a></li>
+     <!-- navigation toc: --> <li><a href="#___sec1" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Basic Construction of Sketches</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec2" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Basic Drawing</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec3" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Groups of Objects</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec4" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Changing Line Styles and Colors</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec5" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Figure Composition as an Object Hierarchy</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec6" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Animation: Translating the Vehicle</a></li>
+     <!-- navigation toc: --> <li><a href="#sketcher:vehicle1:anim" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Animation: Rolling the Wheels</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec8" style="font-size: 80%;"><b>Basic Shapes</b></a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec9" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Axis</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec10" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Distance with Text</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec11" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Rectangle</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec12" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Triangle</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec13" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Arc</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec14" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Spring</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec15" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Dashpot</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec16" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Wavy</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec17" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Stochastic curves</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec18" style="font-size: 80%;"><b>Inner Workings of the Pysketcher Tool</b></a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec19" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Example of Classes for Geometric Objects</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec20" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Simple Geometric Objects</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec21" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class Curve</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec22" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compound Geometric Objects</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec23" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Adding Functionality via Recursion</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec24" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Basic Principles of Recursion</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec25" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Explaining Recursion</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#sketcher:scaling" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Scaling, Translating, and Rotating a Figure</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec27" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scaling</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec28" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Translation</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec29" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rotation</a></li>
+
+        </ul>
+      </li>
+    </ul>
+  </div>
+</div>
+</div> <!-- end of navigation bar -->
+
+<div class="container">
+
+<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p> <!-- add vertical space -->
 
-<p>
+<a name="part0001"></a>
 <!-- !split -->
 
-<p>
-2DO:
-
-<ul>
- <li> two wheels of different radii on inclined plane coupled to
-   correct solution</li>
- <li> <a href="http://inventwithpython.com/chapter17.html" target="_self">Pygame backend</a></li>
-</ul>
-
 <h1 id="___sec0">A First Glimpse of Pysketcher </h1>
 
 <p>
@@ -795,17 +819,28 @@ coming from physics simulations of the problem, as shown in the example above.
 
 <p>
 <p>
-<!-- begin bottom navigation -->
-<table style="width: 100%"><tr><td>
-<div style="text-align: left;"><a href="._pysketcher000.html"><img src="http://hplgit.github.io/doconce/bundled/html_images/prev1.png" border=0 alt="&laquo; Previous"></a></div>
-</td><td>
-<div style="text-align: right;"><a href="._pysketcher002.html"><img src="http://hplgit.github.io/doconce/bundled/html_images/next1.png" border=0 alt="Next &raquo;"></a></div>
-</td></tr></table>
-<!-- end bottom navigation -->
-</p>
-
+<!-- navigation buttons at the bottom of the page -->
+<ul class="pagination">
+<li><a href="._pysketcher000.html">&laquo;</a></li>
+  <li><a href="._pysketcher000.html">1</a></li>
+  <li class="active"><a href="._pysketcher001.html">2</a></li>
+  <li><a href="._pysketcher002.html">3</a></li>
+  <li><a href="._pysketcher003.html">4</a></li>
+  <li><a href="._pysketcher002.html">&raquo;</a></li>
+</ul>
 <!-- ------------------- end of main content --------------- -->
 
+</div>  <!-- end container -->
+<!-- include javascript, jQuery *first* -->
+<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
+<script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
+
+<!-- Bootstrap footer
+<footer>
+<a href="http://..."><img width="250" align=right src="http://..."></a>
+</footer>
+-->
+
 
 </body>
 </html>

+ 165 - 112
doc/pub/tutorial/._pysketcher002.html

@@ -11,31 +11,20 @@ Automatically generated HTML file from DocOnce source
 
 <title>Using Pysketcher to Create Principal Sketches of Physics Problems</title>
 
+<!-- Bootstrap style: bootswatch_readable -->
+<link href="http://netdna.bootstrapcdn.com/bootswatch/3.1.1/readable/bootstrap.min.css" rel="stylesheet">
+<!-- not necessary
+<link href="http://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
+-->
 
 <style type="text/css">
-/* blueish style */
-
-/* Color definitions:  http://www.december.com/html/spec/color0.html
-   CSS examples:       http://www.w3schools.com/css/css_examples.asp */
 
-body {
-  margin-top: 1.0em;
-  background-color: #ffffff;
-  font-family: Helvetica, Arial, FreeSans, san-serif;
-  color: #000000;
+/* Add scrollbar to dropdown menus in bootstrap navigation bar */
+.dropdown-menu {
+   height: auto;
+   max-height: 400px;
+   overflow-x: hidden;
 }
-h1 { font-size: 1.8em; color: #1e36ce; }
-h2 { font-size: 1.6em; color: #1e36ce; }
-h3 { font-size: 1.4em; color: #1e36ce; }
-a { color: #1e36ce; text-decoration:none; }
-tt { font-family: "Courier New", Courier; }
-/* pre style removed because it will interfer with pygments */
-p { text-indent: 0px; }
-hr { border: 0; width: 80%; border-bottom: 1px solid #aaa}
-p.caption { width: 80%; font-style: normal; text-align: left; }
-hr.figure { border: 0; width: 80%; border-bottom: 1px solid #aaa}
-
-div { text-align: justify; text-justify: inter-word; }
 </style>
 
 
@@ -43,51 +32,48 @@ div { text-align: justify; text-justify: inter-word; }
 
 <!-- tocinfo
 {'highest level': 1,
- 'sections': [(' A First Glimpse of Pysketcher ', 1, None, '___sec0'),
-              (' Basic Construction of Sketches ', 2, None, '___sec1'),
-              (' Basic Drawing ', 3, None, '___sec2'),
-              (' Groups of Objects ', 3, None, '___sec3'),
-              (' Changing Line Styles and Colors ', 3, None, '___sec4'),
-              (' The Figure Composition as an Object Hierarchy ',
+ 'sections': [('A First Glimpse of Pysketcher', 1, None, '___sec0'),
+              ('Basic Construction of Sketches', 2, None, '___sec1'),
+              ('Basic Drawing', 3, None, '___sec2'),
+              ('Groups of Objects', 3, None, '___sec3'),
+              ('Changing Line Styles and Colors', 3, None, '___sec4'),
+              ('The Figure Composition as an Object Hierarchy',
                3,
                None,
                '___sec5'),
-              (' Animation: Translating the Vehicle ', 3, None, '___sec6'),
-              (' Animation: Rolling the Wheels ',
+              ('Animation: Translating the Vehicle', 3, None, '___sec6'),
+              ('Animation: Rolling the Wheels',
                3,
                'sketcher:vehicle1:anim',
                'sketcher:vehicle1:anim'),
-              (' Basic Shapes ', 1, None, '___sec8'),
-              (' Axis ', 2, None, '___sec9'),
-              (' Distance with Text ', 2, None, '___sec10'),
-              (' Rectangle ', 2, None, '___sec11'),
-              (' Triangle ', 2, None, '___sec12'),
-              (' Arc ', 2, None, '___sec13'),
-              (' Spring ', 2, None, '___sec14'),
-              (' Dashpot ', 2, None, '___sec15'),
-              (' Wavy ', 2, None, '___sec16'),
-              (' Stochastic curves ', 2, None, '___sec17'),
-              (' Inner Workings of the Pysketcher Tool ',
-               1,
-               None,
-               '___sec18'),
-              (' Example of Classes for Geometric Objects ',
+              ('Basic Shapes', 1, None, '___sec8'),
+              ('Axis', 2, None, '___sec9'),
+              ('Distance with Text', 2, None, '___sec10'),
+              ('Rectangle', 2, None, '___sec11'),
+              ('Triangle', 2, None, '___sec12'),
+              ('Arc', 2, None, '___sec13'),
+              ('Spring', 2, None, '___sec14'),
+              ('Dashpot', 2, None, '___sec15'),
+              ('Wavy', 2, None, '___sec16'),
+              ('Stochastic curves', 2, None, '___sec17'),
+              ('Inner Workings of the Pysketcher Tool', 1, None, '___sec18'),
+              ('Example of Classes for Geometric Objects',
                2,
                None,
                '___sec19'),
-              (' Simple Geometric Objects ', 3, None, '___sec20'),
-              (' Class Curve ', 3, None, '___sec21'),
-              (' Compound Geometric Objects ', 3, None, '___sec22'),
-              (' Adding Functionality via Recursion ', 2, None, '___sec23'),
-              (' Basic Principles of Recursion ', 3, None, '___sec24'),
-              (' Explaining Recursion ', 3, None, '___sec25'),
-              (' Scaling, Translating, and Rotating a Figure ',
+              ('Simple Geometric Objects', 3, None, '___sec20'),
+              ('Class Curve', 3, None, '___sec21'),
+              ('Compound Geometric Objects', 3, None, '___sec22'),
+              ('Adding Functionality via Recursion', 2, None, '___sec23'),
+              ('Basic Principles of Recursion', 3, None, '___sec24'),
+              ('Explaining Recursion', 3, None, '___sec25'),
+              ('Scaling, Translating, and Rotating a Figure',
                2,
                'sketcher:scaling',
                'sketcher:scaling'),
-              (' Scaling ', 3, None, '___sec27'),
-              (' Translation ', 3, None, '___sec28'),
-              (' Rotation ', 3, None, '___sec29')]}
+              ('Scaling', 3, None, '___sec27'),
+              ('Translation', 3, None, '___sec28'),
+              ('Rotation', 3, None, '___sec29')]}
 end of tocinfo -->
 
 <body>
@@ -109,18 +95,65 @@ MathJax.Hub.Config({
 
 
     
-<a name="part0002"></a>
-<p>
-<!-- begin top navigation -->
-<table style="width: 100%"><tr><td>
-<div style="text-align: left;"><a href="._pysketcher001.html"><img src="http://hplgit.github.io/doconce/bundled/html_images/prev1.png" border=0 alt="&laquo; Previous"></a></div>
-</td><td>
-<div style="text-align: right;"><a href="._pysketcher003.html"><img src="http://hplgit.github.io/doconce/bundled/html_images/next1.png" border=0 alt="Next &raquo;"></a></div>
-</td></tr></table>
-<!-- end top navigation -->
-</p>
+<!-- Bootstrap navigation bar -->
+<div class="navbar navbar-default navbar-fixed-top">
+  <div class="navbar-header">
+    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">
+      <span class="icon-bar"></span>
+      <span class="icon-bar"></span>
+      <span class="icon-bar"></span>
+    </button>
+    <a class="navbar-brand" href="pysketcher.html">Using Pysketcher to Create Principal Sketches of Physics Problems</a>
+  </div>
+
+  <div class="navbar-collapse collapse navbar-responsive-collapse">
+    <ul class="nav navbar-nav navbar-right">
+      <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contents <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec0" style="font-size: 80%;"><b>A First Glimpse of Pysketcher</b></a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec1" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Basic Construction of Sketches</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec2" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Basic Drawing</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec3" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Groups of Objects</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec4" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Changing Line Styles and Colors</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec5" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Figure Composition as an Object Hierarchy</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec6" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Animation: Translating the Vehicle</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#sketcher:vehicle1:anim" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Animation: Rolling the Wheels</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec8" style="font-size: 80%;"><b>Basic Shapes</b></a></li>
+     <!-- navigation toc: --> <li><a href="#___sec9" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Axis</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec10" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Distance with Text</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec11" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Rectangle</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec12" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Triangle</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec13" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Arc</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec14" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Spring</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec15" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Dashpot</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec16" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Wavy</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec17" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Stochastic curves</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec18" style="font-size: 80%;"><b>Inner Workings of the Pysketcher Tool</b></a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec19" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Example of Classes for Geometric Objects</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec20" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Simple Geometric Objects</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec21" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class Curve</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec22" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compound Geometric Objects</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec23" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Adding Functionality via Recursion</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec24" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Basic Principles of Recursion</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec25" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Explaining Recursion</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#sketcher:scaling" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Scaling, Translating, and Rotating a Figure</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec27" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scaling</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec28" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Translation</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec29" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rotation</a></li>
+
+        </ul>
+      </li>
+    </ul>
+  </div>
+</div>
+</div> <!-- end of navigation bar -->
+
+<div class="container">
+
+<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p> <!-- add vertical space -->
 
-<p>
+<a name="part0002"></a>
 <!-- !split -->
 
 <h1 id="___sec8">Basic Shapes </h1>
@@ -131,6 +164,9 @@ This section presents many of the basic shapes in Pysketcher:
 <code>Spring</code>, <code>Dashpot</code>, and <code>Wavy</code>.
 Each shape is demonstrated with a figure and a
 unit test that shows how the figure is constructed in Python code.
+These demos rely heavily on the method <code>draw_dimensions</code> in
+the shape classes, which annotates the basic drawing of the shape
+with the various geometric parameters that govern the shape.
 
 <h2 id="___sec9">Axis </h2>
 
@@ -226,9 +262,9 @@ was produced by this code:
         <span style="color: #BA2121">&#39;a2&#39;</span>: Distance_wText((<span style="color: #666666">0</span>,<span style="color: #666666">2</span>), (<span style="color: #666666">2</span>, <span style="color: #666666">0</span>), t, fontsize),
         <span style="color: #BA2121">&#39;a3&#39;</span>: Distance_wText((<span style="color: #666666">2</span>,<span style="color: #666666">4.5</span>), (<span style="color: #666666">0</span>, <span style="color: #666666">5.5</span>), t, fontsize),
         <span style="color: #BA2121">&#39;a4&#39;</span>: Distance_wText((<span style="color: #666666">8</span>,<span style="color: #666666">4</span>), (<span style="color: #666666">10</span>, <span style="color: #666666">3</span>), t, fontsize,
-                             text_spacing<span style="color: #666666">=-1./60</span>),
+                             text_spacing<span style="color: #666666">=</span>old_div(<span style="color: #666666">-1.</span>,<span style="color: #666666">60</span>)),
         <span style="color: #BA2121">&#39;a5&#39;</span>: Distance_wText((<span style="color: #666666">8</span>,<span style="color: #666666">2</span>), (<span style="color: #666666">10</span>, <span style="color: #666666">1</span>), t, fontsize,
-                             text_spacing<span style="color: #666666">=-1./40</span>, alignment<span style="color: #666666">=</span><span style="color: #BA2121">&#39;right&#39;</span>),
+                             text_spacing<span style="color: #666666">=</span>old_div(<span style="color: #666666">-1.</span>,<span style="color: #666666">40</span>), alignment<span style="color: #666666">=</span><span style="color: #BA2121">&#39;right&#39;</span>),
         <span style="color: #BA2121">&#39;c1&#39;</span>: Text_wArrow(<span style="color: #BA2121">&#39;text_spacing=-1./60&#39;</span>,
                           (<span style="color: #666666">4</span>, <span style="color: #666666">3.5</span>), (<span style="color: #666666">9</span>, <span style="color: #666666">3.2</span>),
                           fontsize<span style="color: #666666">=10</span>, alignment<span style="color: #666666">=</span><span style="color: #BA2121">&#39;left&#39;</span>),
@@ -265,20 +301,21 @@ The above figure can be produced by the following code.
     W <span style="color: #666666">=</span> <span style="color: #666666">4.0</span>
 
     drawing_tool<span style="color: #666666">.</span>set_coordinate_system(
-        xmin<span style="color: #666666">=0</span>, xmax<span style="color: #666666">=2*</span>W, ymin<span style="color: #666666">=-</span>L<span style="color: #666666">/2</span>, ymax<span style="color: #666666">=2*</span>L,
+        xmin<span style="color: #666666">=0</span>, xmax<span style="color: #666666">=2*</span>W, ymin<span style="color: #666666">=</span>old_div(<span style="color: #666666">-</span>L,<span style="color: #666666">2</span>), ymax<span style="color: #666666">=2*</span>L,
         axis<span style="color: #666666">=</span><span style="color: #008000">True</span>, instruction_file<span style="color: #666666">=</span><span style="color: #BA2121">&#39;tmp_Rectangle.py&#39;</span>)
     drawing_tool<span style="color: #666666">.</span>set_linecolor(<span style="color: #BA2121">&#39;blue&#39;</span>)
     drawing_tool<span style="color: #666666">.</span>set_grid(<span style="color: #008000">True</span>)
 
-    xpos <span style="color: #666666">=</span> W<span style="color: #666666">/2</span>
+    xpos <span style="color: #666666">=</span> old_div(W,<span style="color: #666666">2</span>)
     r <span style="color: #666666">=</span> Rectangle(lower_left_corner<span style="color: #666666">=</span>(xpos,<span style="color: #666666">0</span>), width<span style="color: #666666">=</span>W, height<span style="color: #666666">=</span>L)
     r<span style="color: #666666">.</span>draw()
     r<span style="color: #666666">.</span>draw_dimensions()
     drawing_tool<span style="color: #666666">.</span>display(<span style="color: #BA2121">&#39;Rectangle&#39;</span>)
 </pre></div>
 <p>
-The <code>draw_dimension</code> method adds explanation of dimensions and various
-important argument in the construction of a shape.
+Note that the <code>draw_dimension</code> method adds explanation of dimensions and various
+important argument in the construction of a shape. It adapts the annotations
+to the geometry of the current shape.
 
 <h2 id="___sec12">Triangle </h2>
 
@@ -300,13 +337,13 @@ The code below produces the figure.
     W <span style="color: #666666">=</span> <span style="color: #666666">4.0</span>
 
     drawing_tool<span style="color: #666666">.</span>set_coordinate_system(
-        xmin<span style="color: #666666">=0</span>, xmax<span style="color: #666666">=2*</span>W, ymin<span style="color: #666666">=-</span>L<span style="color: #666666">/2</span>, ymax<span style="color: #666666">=1.2*</span>L,
+        xmin<span style="color: #666666">=0</span>, xmax<span style="color: #666666">=2*</span>W, ymin<span style="color: #666666">=</span>old_div(<span style="color: #666666">-</span>L,<span style="color: #666666">2</span>), ymax<span style="color: #666666">=1.2*</span>L,
         axis<span style="color: #666666">=</span><span style="color: #008000">True</span>, instruction_file<span style="color: #666666">=</span><span style="color: #BA2121">&#39;tmp_Triangle.py&#39;</span>)
     drawing_tool<span style="color: #666666">.</span>set_linecolor(<span style="color: #BA2121">&#39;blue&#39;</span>)
     drawing_tool<span style="color: #666666">.</span>set_grid(<span style="color: #008000">True</span>)
 
     xpos <span style="color: #666666">=</span> <span style="color: #666666">1</span>
-    t <span style="color: #666666">=</span> Triangle(p1<span style="color: #666666">=</span>(W<span style="color: #666666">/2</span>,<span style="color: #666666">0</span>), p2<span style="color: #666666">=</span>(<span style="color: #666666">3*</span>W<span style="color: #666666">/2</span>,W<span style="color: #666666">/2</span>), p3<span style="color: #666666">=</span>(<span style="color: #666666">4*</span>W<span style="color: #666666">/5.</span>,L))
+    t <span style="color: #666666">=</span> Triangle(p1<span style="color: #666666">=</span>(old_div(W,<span style="color: #666666">2</span>),<span style="color: #666666">0</span>), p2<span style="color: #666666">=</span>(<span style="color: #666666">3*</span>W<span style="color: #666666">/2</span>,old_div(W,<span style="color: #666666">2</span>)), p3<span style="color: #666666">=</span>(<span style="color: #666666">4*</span>W<span style="color: #666666">/5.</span>,L))
     t<span style="color: #666666">.</span>draw()
     t<span style="color: #666666">.</span>draw_dimensions()
     drawing_tool<span style="color: #666666">.</span>display(<span style="color: #BA2121">&#39;Triangle&#39;</span>)
@@ -337,45 +374,50 @@ An arc like the one above is produced by
     W <span style="color: #666666">=</span> <span style="color: #666666">4.0</span>
 
     drawing_tool<span style="color: #666666">.</span>set_coordinate_system(
-        xmin<span style="color: #666666">=-</span>W<span style="color: #666666">/2</span>, xmax<span style="color: #666666">=</span>W, ymin<span style="color: #666666">=-</span>L<span style="color: #666666">/2</span>, ymax<span style="color: #666666">=1.5*</span>L,
+        xmin<span style="color: #666666">=</span>old_div(<span style="color: #666666">-</span>W,<span style="color: #666666">2</span>), xmax<span style="color: #666666">=</span>W, ymin<span style="color: #666666">=</span>old_div(<span style="color: #666666">-</span>L,<span style="color: #666666">2</span>), ymax<span style="color: #666666">=1.5*</span>L,
         axis<span style="color: #666666">=</span><span style="color: #008000">True</span>, instruction_file<span style="color: #666666">=</span><span style="color: #BA2121">&#39;tmp_Arc.py&#39;</span>)
     drawing_tool<span style="color: #666666">.</span>set_linecolor(<span style="color: #BA2121">&#39;blue&#39;</span>)
     drawing_tool<span style="color: #666666">.</span>set_grid(<span style="color: #008000">True</span>)
 
     center <span style="color: #666666">=</span> point(<span style="color: #666666">0</span>,<span style="color: #666666">0</span>)
-    radius <span style="color: #666666">=</span> L<span style="color: #666666">/2</span>
+    radius <span style="color: #666666">=</span> old_div(L,<span style="color: #666666">2</span>)
     start_angle <span style="color: #666666">=</span> <span style="color: #666666">60</span>
     arc_angle <span style="color: #666666">=</span> <span style="color: #666666">45</span>
     a <span style="color: #666666">=</span> Arc(center, radius, start_angle, arc_angle)
-    a<span style="color: #666666">.</span>set_arrow(<span style="color: #BA2121">&#39;-&gt;&#39;</span>)
     a<span style="color: #666666">.</span>draw()
 
     R1 <span style="color: #666666">=</span> <span style="color: #666666">1.25*</span>radius
     R2 <span style="color: #666666">=</span> <span style="color: #666666">1.5*</span>radius
     R <span style="color: #666666">=</span> <span style="color: #666666">2*</span>radius
     a<span style="color: #666666">.</span>dimensions <span style="color: #666666">=</span> {
-        <span style="color: #BA2121">&#39;start_angle&#39;</span>: Arc_wText(
+        <span style="color: #BA2121">&#39;start_angle&#39;</span>:
+        Arc_wText(
             <span style="color: #BA2121">&#39;start_angle&#39;</span>, center, R1, start_angle<span style="color: #666666">=0</span>,
-            arc_angle<span style="color: #666666">=</span>start_angle, text_spacing<span style="color: #666666">=1/10.</span>),
-        <span style="color: #BA2121">&#39;arc_angle&#39;</span>: Arc_wText(
+            arc_angle<span style="color: #666666">=</span>start_angle, text_spacing<span style="color: #666666">=</span>old_div(<span style="color: #666666">1</span>,<span style="color: #666666">10.</span>)),
+        <span style="color: #BA2121">&#39;arc_angle&#39;</span>:
+        Arc_wText(
             <span style="color: #BA2121">&#39;arc_angle&#39;</span>, center, R2, start_angle<span style="color: #666666">=</span>start_angle,
-            arc_angle<span style="color: #666666">=</span>arc_angle, text_spacing<span style="color: #666666">=1/20.</span>),
-        <span style="color: #BA2121">&#39;r=0&#39;</span>: Line(center, center <span style="color: #666666">+</span>
-                    point(R<span style="color: #666666">*</span>cos(radians(start_angle)),
-                          R<span style="color: #666666">*</span>sin(radians(start_angle)))),
-        <span style="color: #BA2121">&#39;r=start_angle&#39;</span>: Line(center, center <span style="color: #666666">+</span>
-                              point(R<span style="color: #666666">*</span>cos(radians(start_angle<span style="color: #666666">+</span>arc_angle)),
-                                    R<span style="color: #666666">*</span>sin(radians(start_angle<span style="color: #666666">+</span>arc_angle)))),
-        <span style="color: #BA2121">&#39;r=start+arc_angle&#39;</span>:  Line(center, center <span style="color: #666666">+</span>
-                                   point(R, <span style="color: #666666">0</span>))<span style="color: #666666">.</span>set_linestyle(<span style="color: #BA2121">&#39;dashed&#39;</span>),
-        <span style="color: #BA2121">&#39;radius&#39;</span>: Distance_wText(center, a(<span style="color: #666666">0</span>), <span style="color: #BA2121">&#39;radius&#39;</span>, text_spacing<span style="color: #666666">=1/40.</span>),
-        <span style="color: #BA2121">&#39;center&#39;</span>: Text(<span style="color: #BA2121">&#39;center&#39;</span>, center<span style="color: #666666">-</span>point(radius<span style="color: #666666">/10.</span>, radius<span style="color: #666666">/10.</span>)),
+            arc_angle<span style="color: #666666">=</span>arc_angle, text_spacing<span style="color: #666666">=</span>old_div(<span style="color: #666666">1</span>,<span style="color: #666666">20.</span>)),
+        <span style="color: #BA2121">&#39;r=0&#39;</span>:
+        Line(center, center <span style="color: #666666">+</span>
+             point(R<span style="color: #666666">*</span>cos(radians(start_angle)),
+                   R<span style="color: #666666">*</span>sin(radians(start_angle)))),
+        <span style="color: #BA2121">&#39;r=start_angle&#39;</span>:
+        Line(center, center <span style="color: #666666">+</span>
+             point(R<span style="color: #666666">*</span>cos(radians(start_angle<span style="color: #666666">+</span>arc_angle)),
+                   R<span style="color: #666666">*</span>sin(radians(start_angle<span style="color: #666666">+</span>arc_angle)))),
+        <span style="color: #BA2121">&#39;r=start+arc_angle&#39;</span>:
+        Line(center, center <span style="color: #666666">+</span>
+             point(R, <span style="color: #666666">0</span>))<span style="color: #666666">.</span>set_linestyle(<span style="color: #BA2121">&#39;dashed&#39;</span>),
+        <span style="color: #BA2121">&#39;radius&#39;</span>: Distance_wText(center, a(<span style="color: #666666">0</span>), <span style="color: #BA2121">&#39;radius&#39;</span>, text_spacing<span style="color: #666666">=</span>old_div(<span style="color: #666666">1</span>,<span style="color: #666666">40.</span>)),
+        <span style="color: #BA2121">&#39;center&#39;</span>: Text(<span style="color: #BA2121">&#39;center&#39;</span>, center<span style="color: #666666">-</span>point(old_div(radius,<span style="color: #666666">10.</span>), old_div(radius,<span style="color: #666666">10.</span>))),
         }
     <span style="color: #008000; font-weight: bold">for</span> dimension <span style="color: #AA22FF; font-weight: bold">in</span> a<span style="color: #666666">.</span>dimensions:
-        dim <span style="color: #666666">=</span> a<span style="color: #666666">.</span>dimensions[dimension]
-        dim<span style="color: #666666">.</span>set_linestyle(<span style="color: #BA2121">&#39;dashed&#39;</span>)
-        dim<span style="color: #666666">.</span>set_linewidth(<span style="color: #666666">1</span>)
-        dim<span style="color: #666666">.</span>set_linecolor(<span style="color: #BA2121">&#39;black&#39;</span>)
+        <span style="color: #008000; font-weight: bold">if</span> dimension<span style="color: #666666">.</span>startswith(<span style="color: #BA2121">&#39;r=&#39;</span>):
+            dim <span style="color: #666666">=</span> a<span style="color: #666666">.</span>dimensions[dimension]
+            dim<span style="color: #666666">.</span>set_linestyle(<span style="color: #BA2121">&#39;dashed&#39;</span>)
+            dim<span style="color: #666666">.</span>set_linewidth(<span style="color: #666666">1</span>)
+            dim<span style="color: #666666">.</span>set_linecolor(<span style="color: #BA2121">&#39;black&#39;</span>)
 
     a<span style="color: #666666">.</span>draw_dimensions()
     drawing_tool<span style="color: #666666">.</span>display(<span style="color: #BA2121">&#39;Arc&#39;</span>)
@@ -391,7 +433,7 @@ An arc like the one above is produced by
 <br />
 
 <p>
-The code for making this spring is
+The code for making these two springs goes like this:
 
 <p>
 
@@ -401,7 +443,7 @@ The code for making this spring is
     W <span style="color: #666666">=</span> <span style="color: #666666">2.0</span>
 
     drawing_tool<span style="color: #666666">.</span>set_coordinate_system(
-        xmin<span style="color: #666666">=0</span>, xmax<span style="color: #666666">=7*</span>W, ymin<span style="color: #666666">=-</span>L<span style="color: #666666">/2</span>, ymax<span style="color: #666666">=1.5*</span>L,
+        xmin<span style="color: #666666">=0</span>, xmax<span style="color: #666666">=7*</span>W, ymin<span style="color: #666666">=</span>old_div(<span style="color: #666666">-</span>L,<span style="color: #666666">2</span>), ymax<span style="color: #666666">=1.5*</span>L,
         axis<span style="color: #666666">=</span><span style="color: #008000">True</span>, instruction_file<span style="color: #666666">=</span><span style="color: #BA2121">&#39;tmp_Spring.py&#39;</span>)
     drawing_tool<span style="color: #666666">.</span>set_linecolor(<span style="color: #BA2121">&#39;blue&#39;</span>)
     drawing_tool<span style="color: #666666">.</span>set_grid(<span style="color: #008000">True</span>)
@@ -409,13 +451,13 @@ The code for making this spring is
     xpos <span style="color: #666666">=</span> W
     s1 <span style="color: #666666">=</span> Spring((W,<span style="color: #666666">0</span>), L, teeth<span style="color: #666666">=</span><span style="color: #008000">True</span>)
     s1_title <span style="color: #666666">=</span> Text(<span style="color: #BA2121">&#39;Default Spring&#39;</span>,
-                    s1<span style="color: #666666">.</span>geometric_features()[<span style="color: #BA2121">&#39;end&#39;</span>] <span style="color: #666666">+</span> point(<span style="color: #666666">0</span>,L<span style="color: #666666">/10</span>))
+                    s1<span style="color: #666666">.</span>geometric_features()[<span style="color: #BA2121">&#39;end&#39;</span>] <span style="color: #666666">+</span> point(<span style="color: #666666">0</span>,old_div(L,<span style="color: #666666">10</span>)))
     s1<span style="color: #666666">.</span>draw()
     s1_title<span style="color: #666666">.</span>draw()
     <span style="color: #408080; font-style: italic">#s1.draw_dimensions()</span>
     xpos <span style="color: #666666">+=</span> <span style="color: #666666">3*</span>W
-    s2 <span style="color: #666666">=</span> Spring(start<span style="color: #666666">=</span>(xpos,<span style="color: #666666">0</span>), length<span style="color: #666666">=</span>L, width<span style="color: #666666">=</span>W<span style="color: #666666">/2.</span>,
-                bar_length<span style="color: #666666">=</span>L<span style="color: #666666">/6.</span>, teeth<span style="color: #666666">=</span><span style="color: #008000">False</span>)
+    s2 <span style="color: #666666">=</span> Spring(start<span style="color: #666666">=</span>(xpos,<span style="color: #666666">0</span>), length<span style="color: #666666">=</span>L, width<span style="color: #666666">=</span>old_div(W,<span style="color: #666666">2.</span>),
+                bar_length<span style="color: #666666">=</span>old_div(L,<span style="color: #666666">6.</span>), teeth<span style="color: #666666">=</span><span style="color: #008000">False</span>)
     s2<span style="color: #666666">.</span>draw()
     s2<span style="color: #666666">.</span>draw_dimensions()
     drawing_tool<span style="color: #666666">.</span>display(<span style="color: #BA2121">&#39;Spring&#39;</span>)
@@ -442,7 +484,7 @@ This dashpot is produced by
     xpos <span style="color: #666666">=</span> <span style="color: #666666">0</span>
 
     drawing_tool<span style="color: #666666">.</span>set_coordinate_system(
-        xmin<span style="color: #666666">=</span>xpos, xmax<span style="color: #666666">=</span>xpos<span style="color: #666666">+5.5*</span>W, ymin<span style="color: #666666">=-</span>L<span style="color: #666666">/2</span>, ymax<span style="color: #666666">=1.5*</span>L,
+        xmin<span style="color: #666666">=</span>xpos, xmax<span style="color: #666666">=</span>xpos<span style="color: #666666">+5.5*</span>W, ymin<span style="color: #666666">=</span>old_div(<span style="color: #666666">-</span>L,<span style="color: #666666">2</span>), ymax<span style="color: #666666">=1.5*</span>L,
         axis<span style="color: #666666">=</span><span style="color: #008000">True</span>, instruction_file<span style="color: #666666">=</span><span style="color: #BA2121">&#39;tmp_Dashpot.py&#39;</span>)
     drawing_tool<span style="color: #666666">.</span>set_linecolor(<span style="color: #BA2121">&#39;blue&#39;</span>)
     drawing_tool<span style="color: #666666">.</span>set_grid(<span style="color: #008000">True</span>)
@@ -451,15 +493,15 @@ This dashpot is produced by
     xpos <span style="color: #666666">=</span> <span style="color: #666666">1.5</span>
     d1 <span style="color: #666666">=</span> Dashpot(start<span style="color: #666666">=</span>(xpos,<span style="color: #666666">0</span>), total_length<span style="color: #666666">=</span>L)
     d1_title <span style="color: #666666">=</span> Text(<span style="color: #BA2121">&#39;Dashpot (default)&#39;</span>,
-                    d1<span style="color: #666666">.</span>geometric_features()[<span style="color: #BA2121">&#39;end&#39;</span>] <span style="color: #666666">+</span> point(<span style="color: #666666">0</span>,L<span style="color: #666666">/10</span>))
+                    d1<span style="color: #666666">.</span>geometric_features()[<span style="color: #BA2121">&#39;end&#39;</span>] <span style="color: #666666">+</span> point(<span style="color: #666666">0</span>,old_div(L,<span style="color: #666666">10</span>)))
     d1<span style="color: #666666">.</span>draw()
     d1_title<span style="color: #666666">.</span>draw()
 
     <span style="color: #408080; font-style: italic"># Dashpot for animation with fixed bar_length, dashpot_length and</span>
     <span style="color: #408080; font-style: italic"># prescribed piston_pos</span>
     xpos <span style="color: #666666">+=</span> <span style="color: #666666">2.5*</span>W
-    d2 <span style="color: #666666">=</span> Dashpot(start<span style="color: #666666">=</span>(xpos,<span style="color: #666666">0</span>), total_length<span style="color: #666666">=1.2*</span>L, width<span style="color: #666666">=</span>W<span style="color: #666666">/2</span>,
-                 bar_length<span style="color: #666666">=</span>W, dashpot_length<span style="color: #666666">=</span>L<span style="color: #666666">/2</span>, piston_pos<span style="color: #666666">=2*</span>W)
+    d2 <span style="color: #666666">=</span> Dashpot(start<span style="color: #666666">=</span>(xpos,<span style="color: #666666">0</span>), total_length<span style="color: #666666">=1.2*</span>L, width<span style="color: #666666">=</span>old_div(W,<span style="color: #666666">2</span>),
+                 bar_length<span style="color: #666666">=</span>W, dashpot_length<span style="color: #666666">=</span>old_div(L,<span style="color: #666666">2</span>), piston_pos<span style="color: #666666">=2*</span>W)
     d2<span style="color: #666666">.</span>draw()
     d2<span style="color: #666666">.</span>draw_dimensions()
 
@@ -505,17 +547,28 @@ are stored in the arrays <code>curve.x[curve_no]</code> and
 
 <p>
 <p>
-<!-- begin bottom navigation -->
-<table style="width: 100%"><tr><td>
-<div style="text-align: left;"><a href="._pysketcher001.html"><img src="http://hplgit.github.io/doconce/bundled/html_images/prev1.png" border=0 alt="&laquo; Previous"></a></div>
-</td><td>
-<div style="text-align: right;"><a href="._pysketcher003.html"><img src="http://hplgit.github.io/doconce/bundled/html_images/next1.png" border=0 alt="Next &raquo;"></a></div>
-</td></tr></table>
-<!-- end bottom navigation -->
-</p>
-
+<!-- navigation buttons at the bottom of the page -->
+<ul class="pagination">
+<li><a href="._pysketcher001.html">&laquo;</a></li>
+  <li><a href="._pysketcher000.html">1</a></li>
+  <li><a href="._pysketcher001.html">2</a></li>
+  <li class="active"><a href="._pysketcher002.html">3</a></li>
+  <li><a href="._pysketcher003.html">4</a></li>
+  <li><a href="._pysketcher003.html">&raquo;</a></li>
+</ul>
 <!-- ------------------- end of main content --------------- -->
 
+</div>  <!-- end container -->
+<!-- include javascript, jQuery *first* -->
+<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
+<script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
+
+<!-- Bootstrap footer
+<footer>
+<a href="http://..."><img width="250" align=right src="http://..."></a>
+</footer>
+-->
+
 
 </body>
 </html>

+ 117 - 72
doc/pub/tutorial/._pysketcher003.html

@@ -11,31 +11,20 @@ Automatically generated HTML file from DocOnce source
 
 <title>Using Pysketcher to Create Principal Sketches of Physics Problems</title>
 
+<!-- Bootstrap style: bootswatch_readable -->
+<link href="http://netdna.bootstrapcdn.com/bootswatch/3.1.1/readable/bootstrap.min.css" rel="stylesheet">
+<!-- not necessary
+<link href="http://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
+-->
 
 <style type="text/css">
-/* blueish style */
-
-/* Color definitions:  http://www.december.com/html/spec/color0.html
-   CSS examples:       http://www.w3schools.com/css/css_examples.asp */
 
-body {
-  margin-top: 1.0em;
-  background-color: #ffffff;
-  font-family: Helvetica, Arial, FreeSans, san-serif;
-  color: #000000;
+/* Add scrollbar to dropdown menus in bootstrap navigation bar */
+.dropdown-menu {
+   height: auto;
+   max-height: 400px;
+   overflow-x: hidden;
 }
-h1 { font-size: 1.8em; color: #1e36ce; }
-h2 { font-size: 1.6em; color: #1e36ce; }
-h3 { font-size: 1.4em; color: #1e36ce; }
-a { color: #1e36ce; text-decoration:none; }
-tt { font-family: "Courier New", Courier; }
-/* pre style removed because it will interfer with pygments */
-p { text-indent: 0px; }
-hr { border: 0; width: 80%; border-bottom: 1px solid #aaa}
-p.caption { width: 80%; font-style: normal; text-align: left; }
-hr.figure { border: 0; width: 80%; border-bottom: 1px solid #aaa}
-
-div { text-align: justify; text-justify: inter-word; }
 </style>
 
 
@@ -43,51 +32,48 @@ div { text-align: justify; text-justify: inter-word; }
 
 <!-- tocinfo
 {'highest level': 1,
- 'sections': [(' A First Glimpse of Pysketcher ', 1, None, '___sec0'),
-              (' Basic Construction of Sketches ', 2, None, '___sec1'),
-              (' Basic Drawing ', 3, None, '___sec2'),
-              (' Groups of Objects ', 3, None, '___sec3'),
-              (' Changing Line Styles and Colors ', 3, None, '___sec4'),
-              (' The Figure Composition as an Object Hierarchy ',
+ 'sections': [('A First Glimpse of Pysketcher', 1, None, '___sec0'),
+              ('Basic Construction of Sketches', 2, None, '___sec1'),
+              ('Basic Drawing', 3, None, '___sec2'),
+              ('Groups of Objects', 3, None, '___sec3'),
+              ('Changing Line Styles and Colors', 3, None, '___sec4'),
+              ('The Figure Composition as an Object Hierarchy',
                3,
                None,
                '___sec5'),
-              (' Animation: Translating the Vehicle ', 3, None, '___sec6'),
-              (' Animation: Rolling the Wheels ',
+              ('Animation: Translating the Vehicle', 3, None, '___sec6'),
+              ('Animation: Rolling the Wheels',
                3,
                'sketcher:vehicle1:anim',
                'sketcher:vehicle1:anim'),
-              (' Basic Shapes ', 1, None, '___sec8'),
-              (' Axis ', 2, None, '___sec9'),
-              (' Distance with Text ', 2, None, '___sec10'),
-              (' Rectangle ', 2, None, '___sec11'),
-              (' Triangle ', 2, None, '___sec12'),
-              (' Arc ', 2, None, '___sec13'),
-              (' Spring ', 2, None, '___sec14'),
-              (' Dashpot ', 2, None, '___sec15'),
-              (' Wavy ', 2, None, '___sec16'),
-              (' Stochastic curves ', 2, None, '___sec17'),
-              (' Inner Workings of the Pysketcher Tool ',
-               1,
-               None,
-               '___sec18'),
-              (' Example of Classes for Geometric Objects ',
+              ('Basic Shapes', 1, None, '___sec8'),
+              ('Axis', 2, None, '___sec9'),
+              ('Distance with Text', 2, None, '___sec10'),
+              ('Rectangle', 2, None, '___sec11'),
+              ('Triangle', 2, None, '___sec12'),
+              ('Arc', 2, None, '___sec13'),
+              ('Spring', 2, None, '___sec14'),
+              ('Dashpot', 2, None, '___sec15'),
+              ('Wavy', 2, None, '___sec16'),
+              ('Stochastic curves', 2, None, '___sec17'),
+              ('Inner Workings of the Pysketcher Tool', 1, None, '___sec18'),
+              ('Example of Classes for Geometric Objects',
                2,
                None,
                '___sec19'),
-              (' Simple Geometric Objects ', 3, None, '___sec20'),
-              (' Class Curve ', 3, None, '___sec21'),
-              (' Compound Geometric Objects ', 3, None, '___sec22'),
-              (' Adding Functionality via Recursion ', 2, None, '___sec23'),
-              (' Basic Principles of Recursion ', 3, None, '___sec24'),
-              (' Explaining Recursion ', 3, None, '___sec25'),
-              (' Scaling, Translating, and Rotating a Figure ',
+              ('Simple Geometric Objects', 3, None, '___sec20'),
+              ('Class Curve', 3, None, '___sec21'),
+              ('Compound Geometric Objects', 3, None, '___sec22'),
+              ('Adding Functionality via Recursion', 2, None, '___sec23'),
+              ('Basic Principles of Recursion', 3, None, '___sec24'),
+              ('Explaining Recursion', 3, None, '___sec25'),
+              ('Scaling, Translating, and Rotating a Figure',
                2,
                'sketcher:scaling',
                'sketcher:scaling'),
-              (' Scaling ', 3, None, '___sec27'),
-              (' Translation ', 3, None, '___sec28'),
-              (' Rotation ', 3, None, '___sec29')]}
+              ('Scaling', 3, None, '___sec27'),
+              ('Translation', 3, None, '___sec28'),
+              ('Rotation', 3, None, '___sec29')]}
 end of tocinfo -->
 
 <body>
@@ -109,17 +95,65 @@ MathJax.Hub.Config({
 
 
     
-<a name="part0003"></a>
-<p>
-<!-- begin top navigation -->
-<table style="width: 100%"><tr><td>
-<div style="text-align: left;"><a href="._pysketcher002.html"><img src="http://hplgit.github.io/doconce/bundled/html_images/prev1.png" border=0 alt="&laquo; Previous"></a></div>
-</td><td>
-</td></tr></table>
-<!-- end top navigation -->
-</p>
+<!-- Bootstrap navigation bar -->
+<div class="navbar navbar-default navbar-fixed-top">
+  <div class="navbar-header">
+    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">
+      <span class="icon-bar"></span>
+      <span class="icon-bar"></span>
+      <span class="icon-bar"></span>
+    </button>
+    <a class="navbar-brand" href="pysketcher.html">Using Pysketcher to Create Principal Sketches of Physics Problems</a>
+  </div>
+
+  <div class="navbar-collapse collapse navbar-responsive-collapse">
+    <ul class="nav navbar-nav navbar-right">
+      <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contents <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec0" style="font-size: 80%;"><b>A First Glimpse of Pysketcher</b></a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec1" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Basic Construction of Sketches</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec2" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Basic Drawing</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec3" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Groups of Objects</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec4" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Changing Line Styles and Colors</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec5" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Figure Composition as an Object Hierarchy</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec6" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Animation: Translating the Vehicle</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#sketcher:vehicle1:anim" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Animation: Rolling the Wheels</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec8" style="font-size: 80%;"><b>Basic Shapes</b></a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec9" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Axis</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec10" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Distance with Text</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec11" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Rectangle</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec12" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Triangle</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec13" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Arc</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec14" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Spring</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec15" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Dashpot</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec16" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Wavy</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec17" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Stochastic curves</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec18" style="font-size: 80%;"><b>Inner Workings of the Pysketcher Tool</b></a></li>
+     <!-- navigation toc: --> <li><a href="#___sec19" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Example of Classes for Geometric Objects</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec20" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Simple Geometric Objects</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec21" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class Curve</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec22" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compound Geometric Objects</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec23" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Adding Functionality via Recursion</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec24" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Basic Principles of Recursion</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec25" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Explaining Recursion</a></li>
+     <!-- navigation toc: --> <li><a href="#sketcher:scaling" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Scaling, Translating, and Rotating a Figure</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec27" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scaling</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec28" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Translation</a></li>
+     <!-- navigation toc: --> <li><a href="#___sec29" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rotation</a></li>
+
+        </ul>
+      </li>
+    </ul>
+  </div>
+</div>
+</div> <!-- end of navigation bar -->
+
+<div class="container">
+
+<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p> <!-- add vertical space -->
 
-<p>
+<a name="part0003"></a>
 <!-- !split -->
 
 <h1 id="___sec18">Inner Workings of the Pysketcher Tool </h1>
@@ -879,16 +913,27 @@ We have already seen the <code>rotate</code> method in action when animating the
 rolling wheel at the end of the section <a href="._pysketcher001.html#sketcher:vehicle1:anim">Animation: Rolling the Wheels</a>.
 
 <p>
-<!-- begin bottom navigation -->
-<table style="width: 100%"><tr><td>
-<div style="text-align: left;"><a href="._pysketcher002.html"><img src="http://hplgit.github.io/doconce/bundled/html_images/prev1.png" border=0 alt="&laquo; Previous"></a></div>
-</td><td>
-</td></tr></table>
-<!-- end bottom navigation -->
-</p>
-
+<!-- navigation buttons at the bottom of the page -->
+<ul class="pagination">
+<li><a href="._pysketcher002.html">&laquo;</a></li>
+  <li><a href="._pysketcher000.html">1</a></li>
+  <li><a href="._pysketcher001.html">2</a></li>
+  <li><a href="._pysketcher002.html">3</a></li>
+  <li class="active"><a href="._pysketcher003.html">4</a></li>
+</ul>
 <!-- ------------------- end of main content --------------- -->
 
+</div>  <!-- end container -->
+<!-- include javascript, jQuery *first* -->
+<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
+<script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
+
+<!-- Bootstrap footer
+<footer>
+<a href="http://..."><img width="250" align=right src="http://..."></a>
+</footer>
+-->
+
 
 </body>
 </html>

BIN
doc/pub/tutorial/fig-tut/Arc.pdf


BIN
doc/pub/tutorial/fig-tut/Arc.png


BIN
doc/pub/tutorial/fig-tut/Axis.pdf


BIN
doc/pub/tutorial/fig-tut/Axis.png


BIN
doc/pub/tutorial/fig-tut/Dashpot.pdf


BIN
doc/pub/tutorial/fig-tut/Dashpot.png


BIN
doc/pub/tutorial/fig-tut/Distance_wText.pdf


BIN
doc/pub/tutorial/fig-tut/Distance_wText.png


BIN
doc/pub/tutorial/fig-tut/Rectangle.pdf


BIN
doc/pub/tutorial/fig-tut/Rectangle.png


BIN
doc/pub/tutorial/fig-tut/Shape_hierarchy_complete.png


BIN
doc/pub/tutorial/fig-tut/Shape_hierarchy_larger.png


BIN
doc/pub/tutorial/fig-tut/Shape_hierarchy_small.png


BIN
doc/pub/tutorial/fig-tut/Spring.pdf


BIN
doc/pub/tutorial/fig-tut/Spring.png


BIN
doc/pub/tutorial/fig-tut/StochasticWavyCurve.pdf


BIN
doc/pub/tutorial/fig-tut/StochasticWavyCurve.png


BIN
doc/pub/tutorial/fig-tut/Triangle.pdf


BIN
doc/pub/tutorial/fig-tut/Triangle.png


BIN
doc/pub/tutorial/fig-tut/Vehicle0_hier2.pdf


BIN
doc/pub/tutorial/fig-tut/Vehicle0_hier2.png


BIN
doc/pub/tutorial/fig-tut/Wavy.pdf


BIN
doc/pub/tutorial/fig-tut/Wavy.png


BIN
doc/pub/tutorial/fig-tut/beam_mid_support_deflection.png


BIN
doc/pub/tutorial/fig-tut/beam_mid_support_math.png


BIN
doc/pub/tutorial/fig-tut/beam_mid_support_raw.png


+ 794 - 0
doc/pub/tutorial/fig-tut/mpl_code_Arc.py

@@ -0,0 +1,794 @@
+import matplotlib.pyplot as mpl
+import matplotlib.transforms as transforms
+
+mpl.ion()  # for interactive drawing
+fig = mpl.figure()
+
+ax = fig.gca()
+xmin, xmax, ymin, ymax = -2.0, 4.0, -2.0, 6.0
+ax.set_xlim(xmin, xmax)
+ax.set_ylim(ymin, ymax)
+ax.set_aspect('equal')
+
+
+
+mpl.grid(True)
+
+# arc
+mpl.arrow(x=-0.509204, y=1.93409, dx=-0.00843419, dy=-0.00224023,
+          facecolor='b', edgecolor='b',
+          linestyle='solid',
+          linewidth=2, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+ax.text(-0.2, -0.2, 'center',
+        horizontalalignment='center', fontsize=14)
+ax.text(2.68468, 1.55, 'start_angle',
+        horizontalalignment='center', fontsize=14)
+
+# arc
+x = [2.5,
+ 2.4999576921443607,
+ 2.4998307700094053,
+ 2.499619237890978,
+ 2.4993231029486545,
+ 2.4989423752055013,
+ 2.4984770675477392,
+ 2.497927195724303,
+ 2.4972927783463112,
+ 2.4965738368864345,
+ 2.4957703956781705,
+ 2.4948824819150186,
+ 2.4939101256495606,
+ 2.4928533597924436,
+ 2.491712220111265,
+ 2.4904867452293638,
+ 2.489176976624511,
+ 2.4877829586275078,
+ 2.4863047384206833,
+ 2.4847423660362997,
+ 2.4830958943548573,
+ 2.481365379103305,
+ 2.4795508788531544,
+ 2.4776524550184966,
+ 2.475670171853926,
+ 2.473604096452361,
+ 2.4714542987427794,
+ 2.4692208514878446,
+ 2.466903830281448,
+ 2.464503313546149,
+ 2.46201938253052,
+ 2.4594521213063967,
+ 2.4568016167660334,
+ 2.45406795861916,
+ 2.4512512393899484,
+ 2.4483515544138785,
+ 2.4453690018345142,
+ 2.442303682600177,
+ 2.4391557004605358,
+ 2.435925161963088,
+ 2.4326121764495596,
+ 2.4292168560522005,
+ 2.425739315689991,
+ 2.422179673064752,
+ 2.41853804865716,
+ 2.4148145657226707,
+ 2.411009350287347,
+ 2.407122531143594,
+ 2.4031542398457972,
+ 2.3991046107058733,
+ 2.3949737807887224,
+ 2.390761889907589,
+ 2.38646908061933,
+ 2.38209549821959,
+ 2.377641290737884,
+ 2.3731066089325847,
+ 2.3684916062858234,
+ 2.363796438998292,
+ 2.359021265983959,
+ 2.354166248864688,
+ 2.3492315519647713,
+ 2.3442173423053623,
+ 2.339123789598829,
+ 2.3339510662430043,
+ 2.328699347315356,
+ 2.323368810567056,
+ 2.3179596364169686,
+ 2.3124720079455403,
+ 2.306906110888606,
+ 2.3012621336311008,
+ 2.295540267200685,
+ 2.289740705261278,
+ 2.2838636441065026,
+ 2.2779092826530425,
+ 2.2718778224339107,
+ 2.2657694675916247,
+ 2.2595844248713015,
+ 2.2533229036136557,
+ 2.2469851157479175,
+ 2.2405712757846583,
+ 2.2340816008085307,
+ 2.2275163104709197,
+ 2.2208756269825103,
+ 2.214159775105765,
+ 2.2073689821473175,
+ 2.200503477950278,
+ 2.193563494886455,
+ 2.1865492678484895,
+ 2.179461034241906,
+ 2.1722990339770756,
+ 2.165063509461097,
+ 2.157754705589591,
+ 2.1503728697384137,
+ 2.142918251755281,
+ 2.135391103951314,
+ 2.1277916810924995,
+ 2.1201202403910653,
+ 2.1123770414967753,
+ 2.104562346488144,
+ 2.0966764198635603,
+ 2.088719528532341,
+ 2.0806919418056946,
+ 2.0725939313876043,
+ 2.0644257713656353,
+ 2.056187738201656,
+ 2.0478801107224793,
+ 2.03950317011043,
+ 2.031057199893823,
+ 2.0225424859373686,
+ 2.0139593164324983,
+ 2.0053079818876096,
+ 1.9965887751182323,
+ 1.9878019912371194,
+ 1.9789479276442588,
+ 1.970026884016805,
+ 1.9610391622989396,
+ 1.9519850666916483,
+ 1.9428649036424273,
+ 1.93367898183491,
+ 1.9244276121784196,
+ 1.9151111077974452,
+ 1.905729784021045,
+ 1.8962839583721727,
+ 1.8867739505569303,
+ 1.877200082453748,
+ 1.86756267810249,
+ 1.857862063693486,
+ 1.8480985675564905,
+ 1.8382725201495718,
+ 1.8283842540479265,
+ 1.8184341039326222,
+ 1.80842240657927,
+ 1.7983495008466281,
+ 1.788215727665129,
+ 1.778021430025343,
+ 1.7677669529663689,
+ 1.7574526435641544,
+ 1.7470788509197501,
+ 1.7366459261474934,
+ 1.7261542223631243,
+ 1.7156040946718343,
+ 1.7049959001562465,
+ 1.694329997864331,
+ 1.683606748797251,
+ 1.6728265158971458,
+ 1.6619896640348446,
+ 1.6510965599975194,
+ 1.6401475724762684,
+ 1.6291430720536382,
+ 1.6180834311910814,
+ 1.6069690242163488,
+ 1.595800227310821,
+ 1.5845774184967758,
+ 1.5733009776245939,
+ 1.561971286359901,
+ 1.5505887281706503,
+ 1.539153688314146,
+ 1.5276665538239997,
+ 1.516127713497034,
+ 1.504537557880121,
+ 1.4928964792569657,
+ 1.4812048716348272,
+ 1.4694631307311832,
+ 1.4576716539603372,
+ 1.4458308404199665,
+ 1.4339410908776153,
+ 1.4220028077571298,
+ 1.4100163951250364,
+ 1.3979822586768675,
+ 1.385900805723429,
+ 1.3737724451770152,
+ 1.361597587537568,
+ 1.3493766448787827,
+ 1.337110030834161,
+ 1.3247981605830128,
+ 1.312441450836401,
+ 1.3000403198230388,
+ 1.2875951872751359,
+ 1.2751064744141885,
+ 1.2625746039367256,
+ 1.2500000000000002]
+y = [0.0,
+ 0.014544328387484583,
+ 0.029088164503492532,
+ 0.04363101609320877,
+ 0.058172390935140796,
+ 0.07271179685777851,
+ 0.08724874175625241,
+ 0.10178273360898957,
+ 0.11631328049436661,
+ 0.13083989060735957,
+ 0.14536207227618955,
+ 0.1598793339789641,
+ 0.17439118436031323,
+ 0.18889713224802018,
+ 0.2033966866696457,
+ 0.21788935686914537,
+ 0.23237465232348048,
+ 0.24685208275921977,
+ 0.2613211581691336,
+ 0.27578138882877923,
+ 0.29023228531307554,
+ 0.30467335851286864,
+ 0.3191041196514865,
+ 0.3335240803012817,
+ 0.3479327524001635,
+ 0.3623296482681168,
+ 0.37671428062370776,
+ 0.3910861626005771,
+ 0.40544480776391856,
+ 0.41978973012694265,
+ 0.43412044416732576,
+ 0.4484364648436434,
+ 0.46273730761178644,
+ 0.47702248844136197,
+ 0.49129152383207525,
+ 0.5055439308300947,
+ 0.5197792270443982,
+ 0.5339969306631001,
+ 0.5481965604697582,
+ 0.5623776358596624,
+ 0.5765396768561003,
+ 0.5906822041266032,
+ 0.6048047389991692,
+ 0.618906803478465,
+ 0.6329879202620043,
+ 0.6470476127563018,
+ 0.6610854050930054,
+ 0.6751008221450018,
+ 0.6890933895424978,
+ 0.7030626336890764,
+ 0.7170080817777256,
+ 0.7309292618068418,
+ 0.7448257025962048,
+ 0.7586969338029265,
+ 0.7725424859373684,
+ 0.7863618903790339,
+ 0.8001546793924288,
+ 0.8139203861428916,
+ 0.8276585447123951,
+ 0.8413686901153157,
+ 0.8550503583141716,
+ 0.8687030862353283,
+ 0.8823264117846721,
+ 0.8959198738632506,
+ 0.9094830123828785,
+ 0.9230153682817109,
+ 0.9365164835397799,
+ 0.9499859011944972,
+ 0.9634231653561207,
+ 0.9768278212231842,
+ 0.9901994150978919,
+ 1.0035374944014728,
+ 1.0168416076895004,
+ 1.0301113046671708,
+ 1.0433461362045446,
+ 1.0565456543517484,
+ 1.0697094123541355,
+ 1.0828369646674074,
+ 1.0959278669726933,
+ 1.1089816761915896,
+ 1.1219979505011553,
+ 1.1349762493488669,
+ 1.147916133467529,
+ 1.1608171648901422,
+ 1.1736789069647267,
+ 1.186500924369101,
+ 1.1992827831256152,
+ 1.2120240506158424,
+ 1.2247242955952173,
+ 1.237383088207635,
+ 1.2499999999999998,
+ 1.2625746039367247,
+ 1.275106474414188,
+ 1.287595187275135,
+ 1.3000403198230384,
+ 1.3124414508364004,
+ 1.3247981605830121,
+ 1.3371100308341606,
+ 1.3493766448787818,
+ 1.3615975875375674,
+ 1.373772445177015,
+ 1.3859008057234283,
+ 1.3979822586768669,
+ 1.4100163951250357,
+ 1.4220028077571292,
+ 1.4339410908776151,
+ 1.445830840419966,
+ 1.4576716539603365,
+ 1.4694631307311825,
+ 1.4812048716348267,
+ 1.4928964792569652,
+ 1.5045375578801203,
+ 1.5161277134970332,
+ 1.527666553823999,
+ 1.5391536883141455,
+ 1.5505887281706499,
+ 1.5619712863599002,
+ 1.5733009776245934,
+ 1.5845774184967754,
+ 1.5958002273108205,
+ 1.6069690242163481,
+ 1.6180834311910808,
+ 1.6291430720536377,
+ 1.640147572476268,
+ 1.6510965599975191,
+ 1.6619896640348442,
+ 1.6728265158971454,
+ 1.6836067487972506,
+ 1.6943299978643305,
+ 1.7049959001562462,
+ 1.7156040946718338,
+ 1.726154222363124,
+ 1.736645926147493,
+ 1.74707885091975,
+ 1.7574526435641542,
+ 1.7677669529663687,
+ 1.7780214300253427,
+ 1.7882157276651283,
+ 1.7983495008466277,
+ 1.8084224065792696,
+ 1.8184341039326215,
+ 1.828384254047926,
+ 1.8382725201495713,
+ 1.8480985675564898,
+ 1.8578620636934853,
+ 1.8675626781024899,
+ 1.8772000824537476,
+ 1.8867739505569299,
+ 1.8962839583721722,
+ 1.9057297840210445,
+ 1.9151111077974448,
+ 1.924427612178419,
+ 1.9336789818349098,
+ 1.942864903642427,
+ 1.9519850666916478,
+ 1.961039162298939,
+ 1.9700268840168045,
+ 1.9789479276442585,
+ 1.9878019912371192,
+ 1.9965887751182319,
+ 2.005307981887609,
+ 2.0139593164324983,
+ 2.022542485937368,
+ 2.0310571998938225,
+ 2.03950317011043,
+ 2.0478801107224793,
+ 2.0561877382016553,
+ 2.064425771365635,
+ 2.072593931387604,
+ 2.080691941805694,
+ 2.0887195285323408,
+ 2.09667641986356,
+ 2.104562346488143,
+ 2.1123770414967753,
+ 2.1201202403910644,
+ 2.127791681092499,
+ 2.1353911039513136,
+ 2.1429182517552805,
+ 2.1503728697384132,
+ 2.1577547055895905,
+ 2.1650635094610964]
+[line] = ax.plot(x, y, 'k', linewidth=1, linestyle='dashed')
+
+# line
+x = [0.0, 4.0]
+y = [0.0, 0.0]
+[line] = ax.plot(x, y, 'k', linewidth=1, linestyle='dashed')
+
+# line
+x = [0.0, 2.0000000000000004]
+y = [0.0, 3.4641016151377544]
+[line] = ax.plot(x, y, 'k', linewidth=1, linestyle='dashed')
+ax.text(0.629904, 0.791025, 'radius',
+        horizontalalignment='left', fontsize=14)
+
+# line
+mpl.arrow(x=1, y=1.73205, dx=-1, dy=-1.73205,
+          facecolor='k', edgecolor='k',
+          linestyle='dashed',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.arrow(x=0, y=0, dx=1, dy=1.73205,
+          facecolor='k', edgecolor='k',
+          linestyle='dashed',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+
+# line
+x = [0.0, -1.0352761804100834]
+y = [0.0, 3.8637033051562732]
+[line] = ax.plot(x, y, 'k', linewidth=1, linestyle='dashed')
+ax.text(0.430736, 3.27177, 'arc_angle',
+        horizontalalignment='center', fontsize=14)
+
+# arc
+x = [1.5000000000000004,
+ 1.488649511025625,
+ 1.477270680310402,
+ 1.4658637244908648,
+ 1.4544288607390112,
+ 1.4429663067581633,
+ 1.4314762807788257,
+ 1.4199590015545303,
+ 1.4084146883576727,
+ 1.3968435609753347,
+ 1.3852458397051022,
+ 1.3736217453508708,
+ 1.3619714992186405,
+ 1.3502953231123052,
+ 1.3385934393294268,
+ 1.3268660706570043,
+ 1.3151134403672324,
+ 1.3033357722132515,
+ 1.2915332904248857,
+ 1.2797062197043756,
+ 1.2678547852220987,
+ 1.2559792126122844,
+ 1.2440797279687175,
+ 1.2321565578404323,
+ 1.2202099292274011,
+ 1.2082400695762117,
+ 1.1962472067757388,
+ 1.184231569152802,
+ 1.1721933854678217,
+ 1.1601328849104626,
+ 1.1480502970952695,
+ 1.1359458520572991,
+ 1.1238197802477365,
+ 1.1116723125295092,
+ 1.099503680172892,
+ 1.0873141148511052,
+ 1.075103848635901,
+ 1.062873113993148,
+ 1.0506221437784022,
+ 1.038351171232479,
+ 1.0260604299770064,
+ 1.0137501540099814,
+ 1.0014205777013134,
+ 0.9890719357883619,
+ 0.9767044633714703,
+ 0.9643183959094851,
+ 0.9519139692152769,
+ 0.9394914194512493,
+ 0.9270509831248424,
+ 0.9145928970840327,
+ 0.9021173985128199,
+ 0.8896247249267135,
+ 0.8771151141682103,
+ 0.8645888044022682,
+ 0.8520460341117683,
+ 0.8394870420929765,
+ 0.8269120674509975,
+ 0.814321349595223,
+ 0.8017151282347709,
+ 0.7890936433739248,
+ 0.7764571353075629,
+ 0.7638058446165829,
+ 0.7511400121633245,
+ 0.7384598790869795,
+ 0.7257656867990037,
+ 0.71305767697852,
+ 0.7003360915677164,
+ 0.6876011727672428,
+ 0.6748531630315955,
+ 0.6620923050645039,
+ 0.6493188418143094,
+ 0.636533016469339,
+ 0.6237350724532784,
+ 0.6109252534205329,
+ 0.5981038032515915,
+ 0.585270966048385,
+ 0.5724269861296347,
+ 0.5595721080262044,
+ 0.5467065764764429,
+ 0.5338306364215253,
+ 0.5209445330007912,
+ 0.5080485115470743,
+ 0.4951428175820335,
+ 0.482227696811479,
+ 0.46930339512069275,
+ 0.4563701585697504,
+ 0.4434282333888323,
+ 0.43047786597353854,
+ 0.41751930288019706,
+ 0.40455279082116924,
+ 0.39157857666015516,
+ 0.37859690740748986,
+ 0.36560803021544247,
+ 0.3526121923735131,
+ 0.3396096413037205,
+ 0.3266006245558942,
+ 0.313585389802961,
+ 0.30056418483622893,
+ 0.28753725756067217,
+ 0.2745048559902076,
+ 0.2614672282429751,
+ 0.24842462253661374,
+ 0.235377287183535,
+ 0.22232547058619806,
+ 0.20926942123237635,
+ 0.19620938769042914,
+ 0.1831456186045714,
+ 0.17007836269013277,
+ 0.1570078687288319,
+ 0.14393438556403237,
+ 0.13085816209600803,
+ 0.11777944727720599,
+ 0.10469849010750323,
+ 0.09161553962946846,
+ 0.07853084492362009,
+ 0.06544465510368347,
+ 0.05235721931185079,
+ 0.03926878671403372,
+ 0.026179606495121688,
+ 0.013089927854240412,
+ 1.8369701987210297e-16,
+ -0.01308992785423938,
+ -0.026179606495121327,
+ -0.03926878671403335,
+ -0.052357219311849765,
+ -0.06544465510368311,
+ -0.07853084492361906,
+ -0.09161553962946742,
+ -0.10469849010750287,
+ -0.11777944727720498,
+ -0.13085816209600767,
+ -0.14393438556403138,
+ -0.15700786872883085,
+ -0.1700783626901324,
+ -0.18314561860457035,
+ -0.19620938769042878,
+ -0.209269421232376,
+ -0.222325470586197,
+ -0.23537728718353462,
+ -0.24842462253661268,
+ -0.261467228242974,
+ -0.2745048559902072,
+ -0.28753725756067117,
+ -0.3005641848362286,
+ -0.31358538980296,
+ -0.32660062455589317,
+ -0.3396096413037201,
+ -0.35261219237351205,
+ -0.3656080302154421,
+ -0.37859690740748875,
+ -0.39157857666015417,
+ -0.4045527908211689,
+ -0.41751930288019606,
+ -0.43047786597353743,
+ -0.44342823338883197,
+ -0.4563701585697494,
+ -0.4693033951206924,
+ -0.482227696811478,
+ -0.4951428175820325,
+ -0.5080485115470739,
+ -0.5209445330007902,
+ -0.5338306364215251,
+ -0.5467065764764419,
+ -0.5595721080262033,
+ -0.5724269861296344,
+ -0.5852709660483839,
+ -0.5981038032515912,
+ -0.6109252534205319,
+ -0.6237350724532773,
+ -0.6365330164693387,
+ -0.6493188418143083,
+ -0.6620923050645029,
+ -0.674853163031595,
+ -0.6876011727672418,
+ -0.700336091567716,
+ -0.713057676978519,
+ -0.7257656867990027,
+ -0.7384598790869792,
+ -0.7511400121633235,
+ -0.7638058446165825,
+ -0.7764571353075619]
+y = [2.598076211353316,
+ 2.6045964434674262,
+ 2.611067087819699,
+ 2.6174880212183913,
+ 2.623859121418187,
+ 2.630180267122523,
+ 2.636451337985896,
+ 2.6426722146161565,
+ 2.6488427785767805,
+ 2.6549629123891254,
+ 2.661032499534665,
+ 2.6670514244572088,
+ 2.6730195725651034,
+ 2.6789368302334107,
+ 2.684803084806075,
+ 2.6906182245980648,
+ 2.6963821388975013,
+ 2.7020947179677637,
+ 2.7077558530495818,
+ 2.7133654363631035,
+ 2.7189233611099493,
+ 2.7244295214752436,
+ 2.7298838126296294,
+ 2.7352861307312653,
+ 2.7406363729278027,
+ 2.745934437358341,
+ 2.751180223155372,
+ 2.756373630446695,
+ 2.7615145603573206,
+ 2.766602915011355,
+ 2.77163859753386,
+ 2.7766215120526994,
+ 2.781551563700362,
+ 2.7864286586157725,
+ 2.791252703946074,
+ 2.7960236078483955,
+ 2.8007412794916053,
+ 2.805405629058035,
+ 2.8100165677451927,
+ 2.8145740077674524,
+ 2.819077862357725,
+ 2.8235280457691116,
+ 2.8279244732765347,
+ 2.8322670611783525,
+ 2.8365557267979504,
+ 2.840790388485317,
+ 2.844970965618598,
+ 2.849097378605631,
+ 2.8531695488854605,
+ 2.857187398929835,
+ 2.8611508522446805,
+ 2.86505983337156,
+ 2.868914267889106,
+ 2.8727140824144435,
+ 2.876459204604579,
+ 2.8801495631577856,
+ 2.8837850878149567,
+ 2.887365709360942,
+ 2.890891359625869,
+ 2.894361971486439,
+ 2.8977774788672046,
+ 2.901137816741829,
+ 2.904442921134323,
+ 2.907692729120263,
+ 2.9108871788279895,
+ 2.9140262094397844,
+ 2.9171097611930294,
+ 2.9201377753813453,
+ 2.9231101943557056,
+ 2.926026961525538,
+ 2.9288880213598,
+ 2.9316933193880366,
+ 2.9344428022014166,
+ 2.9371364174537513,
+ 2.9397741138624887,
+ 2.9423558412096913,
+ 2.944881550342992,
+ 2.9473511931765293,
+ 2.9497647226918637,
+ 2.9521220929388727,
+ 2.954423259036624,
+ 2.956668177174233,
+ 2.958856804611694,
+ 2.9609890996806953,
+ 2.9630650217854133,
+ 2.965084531403282,
+ 2.9670475900857505,
+ 2.9689541604590106,
+ 2.970804206224711,
+ 2.9725976921606465,
+ 2.974334584121431,
+ 2.976014849039145,
+ 2.977638454923966,
+ 2.9792053708647788,
+ 2.9807155670297623,
+ 2.982169014666959,
+ 2.9835656861048196,
+ 2.9849055547527352,
+ 2.9861885951015363,
+ 2.9874147827239854,
+ 2.988584094275237,
+ 2.989696507493284,
+ 2.990752001199384,
+ 2.991750555298457,
+ 2.9926921507794724,
+ 2.99357676971581,
+ 2.994404395265601,
+ 2.995175011672046,
+ 2.9958886042637216,
+ 2.9965451594548522,
+ 2.9971446647455733,
+ 2.9976871087221686,
+ 2.998172481057287,
+ 2.9986007725101387,
+ 2.998971974926672,
+ 2.9992860812397275,
+ 2.999543085469174,
+ 2.999742982722021,
+ 2.999885769192514,
+ 2.9999714421622032,
+ 3.0,
+ 2.9999714421622032,
+ 2.999885769192514,
+ 2.999742982722021,
+ 2.999543085469174,
+ 2.9992860812397275,
+ 2.998971974926672,
+ 2.998600772510139,
+ 2.998172481057287,
+ 2.9976871087221686,
+ 2.9971446647455733,
+ 2.9965451594548522,
+ 2.9958886042637216,
+ 2.995175011672046,
+ 2.994404395265601,
+ 2.99357676971581,
+ 2.9926921507794724,
+ 2.991750555298457,
+ 2.990752001199384,
+ 2.989696507493284,
+ 2.988584094275237,
+ 2.9874147827239854,
+ 2.9861885951015363,
+ 2.9849055547527352,
+ 2.98356568610482,
+ 2.982169014666959,
+ 2.9807155670297623,
+ 2.9792053708647788,
+ 2.9776384549239663,
+ 2.976014849039145,
+ 2.9743345841214315,
+ 2.9725976921606465,
+ 2.9708042062247113,
+ 2.9689541604590106,
+ 2.9670475900857505,
+ 2.9650845314032823,
+ 2.9630650217854133,
+ 2.960989099680696,
+ 2.9588568046116945,
+ 2.956668177174233,
+ 2.9544232590366244,
+ 2.9521220929388727,
+ 2.9497647226918637,
+ 2.9473511931765293,
+ 2.944881550342992,
+ 2.9423558412096917,
+ 2.9397741138624887,
+ 2.9371364174537513,
+ 2.934442802201417,
+ 2.9316933193880366,
+ 2.9288880213598,
+ 2.9260269615255385,
+ 2.9231101943557056,
+ 2.9201377753813453,
+ 2.91710976119303,
+ 2.9140262094397844,
+ 2.9108871788279895,
+ 2.907692729120263,
+ 2.9044429211343235,
+ 2.9011378167418296,
+ 2.897777478867205]
+[line] = ax.plot(x, y, 'k', linewidth=1, linestyle='dashed')
+mpl.title("Arc")
+mpl.draw()
+mpl.savefig("tmp_Arc.png", dpi=None)
+mpl.savefig("tmp_Arc.pdf")

+ 122 - 0
doc/pub/tutorial/fig-tut/mpl_code_Axis.py

@@ -0,0 +1,122 @@
+import matplotlib.pyplot as mpl
+import matplotlib.transforms as transforms
+
+mpl.ion()  # for interactive drawing
+fig = mpl.figure()
+
+ax = fig.gca()
+xmin, xmax, ymin, ymax = 0.0, 15.0, -7.0, 8.0
+ax.set_xlim(xmin, xmax)
+ax.set_ylim(ymin, ymax)
+ax.set_aspect('equal')
+
+
+
+# line
+x = [12.240192378864668, 12.5]
+y = [2.150000000000001, 2.0000000000000004]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='solid')
+
+# line
+x = [7.5, 12.5]
+y = [2.0, 2.0000000000000004]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='solid')
+
+# line
+x = [12.240192378864668, 12.5]
+y = [1.8499999999999999, 2.0000000000000004]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='solid')
+ax.text(12.8333, 2, 'x',
+        horizontalalignment='center', fontsize=14)
+
+# line
+x = [7.35, 7.5]
+y = [6.740192378864668, 7.0]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='solid')
+
+# line
+x = [7.5, 7.5]
+y = [2.0, 7.0]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='solid')
+
+# line
+x = [7.65, 7.5]
+y = [6.740192378864668, 7.0]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='solid')
+ax.text(7.5, 7.33333, 'y',
+        horizontalalignment='center', fontsize=14)
+mpl.draw()
+
+# line
+x = [11.034779889691228, 11.33022221559489]
+y = [5.161843595132618, 5.213938048432697]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='dashed')
+
+# line
+x = [7.5, 11.33022221559489]
+y = [2.0, 5.213938048432697]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='dashed')
+
+# line
+x = [11.22761617259719, 11.33022221559489]
+y = [4.932030262196924, 5.213938048432697]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='dashed')
+ax.text(11.5856, 5.4282, 'x',
+        horizontalalignment='center', fontsize=14)
+
+# line
+x = [4.338156404867384, 4.286061951567303]
+y = [5.534779889691228, 5.83022221559489]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='dashed')
+
+# line
+x = [7.5, 4.286061951567303]
+y = [2.0, 5.83022221559489]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='dashed')
+
+# line
+x = [4.567969737803077, 4.286061951567303]
+y = [5.727616172597189, 5.83022221559489]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='dashed')
+ax.text(4.0718, 6.08557, 'y',
+        horizontalalignment='center', fontsize=14)
+mpl.draw()
+
+# line
+x = [6.824595394571309, 6.631759111665348]
+y = [-2.694225432125347, -2.92403876506104]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='dotted')
+
+# line
+x = [7.5, 6.631759111665348]
+y = [2.0, -2.92403876506104]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='dotted')
+
+# line
+x = [6.5291530686676476, 6.631759111665348]
+y = [-2.642130978825267, -2.92403876506104]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='dotted')
+ax.text(6.57388, -3.25231, 'x',
+        horizontalalignment='center', fontsize=14)
+
+# line
+x = [12.194225432125346, 12.424038765061042]
+y = [1.3245953945713098, 1.1317591116653478]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='dotted')
+
+# line
+x = [7.5, 12.424038765061042]
+y = [2.0, 1.1317591116653478]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='dotted')
+
+# line
+x = [12.142130978825266, 12.424038765061042]
+y = [1.029153068667647, 1.1317591116653478]
+[line] = ax.plot(x, y, 'r', linewidth=2, linestyle='dotted')
+ax.text(12.7523, 1.07388, 'y',
+        horizontalalignment='center', fontsize=14)
+mpl.draw()
+mpl.title("Axis")
+mpl.draw()
+mpl.savefig("tmp_Axis.png", dpi=None)
+mpl.savefig("tmp_Axis.pdf")

+ 195 - 0
doc/pub/tutorial/fig-tut/mpl_code_Dashpot.py

@@ -0,0 +1,195 @@
+import matplotlib.pyplot as mpl
+import matplotlib.transforms as transforms
+
+mpl.ion()  # for interactive drawing
+fig = mpl.figure()
+
+ax = fig.gca()
+xmin, xmax, ymin, ymax = 0.0, 11.0, -2.5, 7.5
+ax.set_xlim(xmin, xmax)
+ax.set_ylim(ymin, ymax)
+ax.set_aspect('equal')
+
+
+
+mpl.grid(True)
+
+# line
+x = [1.5, 1.5]
+y = [0.0, 1.25]
+[line] = ax.plot(x, y, 'b', linewidth=2, linestyle='solid')
+
+# line
+x = [1.5, 1.5]
+y = [5.0, 2.395833333333333]
+[line] = ax.plot(x, y, 'b', linewidth=2, linestyle='solid')
+
+# rectangle
+x = [1.0833333333333333,
+ 1.9166666666666665,
+ 1.9166666666666665,
+ 1.0833333333333333,
+ 1.0833333333333333]
+y = [2.083333333333333,
+ 2.083333333333333,
+ 2.395833333333333,
+ 2.395833333333333,
+ 2.083333333333333]
+[line] = ax.fill(x, y, 'white', edgecolor='b', linewidth=2, hatch='X')
+
+# pot
+x = [1.0, 1.0, 2.0, 2.0]
+y = [3.75, 1.25, 1.25, 3.75]
+[line] = ax.plot(x, y, 'b', linewidth=2, linestyle='solid')
+ax.text(1.5, 5.5, 'Dashpot (default)',
+        horizontalalignment='center', fontsize=14)
+
+# line
+x = [6.5, 6.5]
+y = [0.0, 2.0]
+[line] = ax.plot(x, y, 'b', linewidth=2, linestyle='solid')
+
+# line
+x = [6.5, 6.5]
+y = [6.0, 4.5]
+[line] = ax.plot(x, y, 'b', linewidth=2, linestyle='solid')
+
+# rectangle
+x = [6.083333333333333,
+ 6.916666666666666,
+ 6.916666666666666,
+ 6.083333333333333,
+ 6.083333333333333]
+y = [4.1875, 4.1875, 4.5, 4.5, 4.1875]
+[line] = ax.fill(x, y, 'white', edgecolor='b', linewidth=2, hatch='X')
+
+# pot
+x = [6.0, 6.0, 7.0, 7.0]
+y = [4.5, 2.0, 2.0, 4.5]
+[line] = ax.plot(x, y, 'b', linewidth=2, linestyle='solid')
+ax.text(6.5, -1.56667, 'width',
+        horizontalalignment='center', fontsize=14)
+
+# line
+mpl.arrow(x=6, y=-1.75, dx=1, dy=0,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.arrow(x=7, y=-1.75, dx=-1, dy=0,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+ax.annotate('start', xy=(6.5, 0), xycoords='data',
+            textcoords='data', xytext=(5.75, -0.75),
+            horizontalalignment='center',
+            verticalalignment='top',
+            fontsize=14,
+            arrowprops=dict(arrowstyle='->',
+                            facecolor='black',
+                            linewidth=2,
+                            shrinkA=5,
+                            shrinkB=5))
+ax.annotate('bar_length', xy=[ 5.5  1. ], xycoords='data',
+            textcoords='data', xytext=(3.5, 1.5),
+            horizontalalignment='left',
+            verticalalignment='top',
+            fontsize=14,
+            arrowprops=dict(arrowstyle='->',
+                            facecolor='black',
+                            linewidth=2,
+                            shrinkA=5,
+                            shrinkB=5))
+
+# line
+mpl.arrow(x=5.5, y=2, dx=0, dy=-2,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.arrow(x=5.5, y=0, dx=0, dy=2,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+ax.annotate('total_length', xy=[ 8.5  3. ], xycoords='data',
+            textcoords='data', xytext=(8.75, 5.0),
+            horizontalalignment='left',
+            verticalalignment='top',
+            fontsize=14,
+            arrowprops=dict(arrowstyle='->',
+                            facecolor='black',
+                            linewidth=2,
+                            shrinkA=5,
+                            shrinkB=5))
+
+# line
+mpl.arrow(x=8.5, y=6, dx=0, dy=-6,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.arrow(x=8.5, y=0, dx=0, dy=6,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+ax.annotate('dashpot_length', xy=[ 7.5   3.25], xycoords='data',
+            textcoords='data', xytext=(7.0, -0.5),
+            horizontalalignment='left',
+            verticalalignment='top',
+            fontsize=14,
+            arrowprops=dict(arrowstyle='->',
+                            facecolor='black',
+                            linewidth=2,
+                            shrinkA=5,
+                            shrinkB=5))
+
+# line
+mpl.arrow(x=7.5, y=4.5, dx=0, dy=-2.5,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.arrow(x=7.5, y=2, dx=0, dy=2.5,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+ax.annotate('piston_pos', xy=[ 5.5      3.09375], xycoords='data',
+            textcoords='data', xytext=(3.5, 3.6875),
+            horizontalalignment='left',
+            verticalalignment='top',
+            fontsize=14,
+            arrowprops=dict(arrowstyle='->',
+                            facecolor='black',
+                            linewidth=2,
+                            shrinkA=5,
+                            shrinkB=5))
+
+# line
+mpl.arrow(x=5.5, y=4.1875, dx=0, dy=-2.1875,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.arrow(x=5.5, y=2, dx=0, dy=2.1875,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.title("Dashpot")
+mpl.draw()
+mpl.savefig("tmp_Dashpot.png", dpi=None)
+mpl.savefig("tmp_Dashpot.pdf")

+ 149 - 0
doc/pub/tutorial/fig-tut/mpl_code_Distance_wText.py

@@ -0,0 +1,149 @@
+import matplotlib.pyplot as mpl
+import matplotlib.transforms as transforms
+
+mpl.ion()  # for interactive drawing
+fig = mpl.figure()
+
+ax = fig.gca()
+xmin, xmax, ymin, ymax = 0.0, 10.0, 0.0, 6.0
+ax.set_xlim(xmin, xmax)
+ax.set_ylim(ymin, ymax)
+ax.set_aspect('equal')
+
+
+ax.text(1.13014, 3.14588, '$ 2\\pi R^2 $',
+        horizontalalignment='left', fontsize=14)
+
+# line
+mpl.arrow(x=2, y=4.5, dx=-2, dy=-2.5,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.arrow(x=0, y=2, dx=2, dy=2.5,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+ax.text(6, 5.16667, '$ 2\\pi R^2 $',
+        horizontalalignment='center', fontsize=14)
+
+# line
+mpl.arrow(x=4, y=5, dx=4, dy=0,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.arrow(x=8, y=5, dx=-4, dy=0,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+ax.text(1.07454, 5.14907, '$ 2\\pi R^2 $',
+        horizontalalignment='center', fontsize=14)
+
+# line
+mpl.arrow(x=0, y=5.5, dx=2, dy=-1,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.arrow(x=2, y=4.5, dx=-2, dy=1,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+ax.text(1.11785, 1.11785, '$ 2\\pi R^2 $',
+        horizontalalignment='left', fontsize=14)
+
+# line
+mpl.arrow(x=0, y=2, dx=2, dy=-2,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.arrow(x=2, y=0, dx=-2, dy=2,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+ax.text(8.8882, 1.27639, '$ 2\\pi R^2 $',
+        horizontalalignment='right', fontsize=14)
+
+# line
+mpl.arrow(x=8, y=2, dx=2, dy=-1,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.arrow(x=10, y=1, dx=-2, dy=1,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+ax.text(8.92546, 3.35093, '$ 2\\pi R^2 $',
+        horizontalalignment='center', fontsize=14)
+
+# line
+mpl.arrow(x=8, y=4, dx=2, dy=-1,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.arrow(x=10, y=3, dx=-2, dy=1,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+ax.text(4.16667, 4.5, '$ 2\\pi R^2 $',
+        horizontalalignment='left', fontsize=14)
+
+# line
+mpl.arrow(x=4, y=5, dx=0, dy=-1,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.arrow(x=4, y=4, dx=0, dy=1,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+ax.annotate('text_spacing=-1./40, alignment="right"', xy=(9, 1.2), xycoords='data',
+            textcoords='data', xytext=(4, 0.5),
+            horizontalalignment='left',
+            verticalalignment='top',
+            fontsize=10,
+            arrowprops=dict(arrowstyle='->',
+                            facecolor='black',
+                            linewidth=2,
+                            shrinkA=5,
+                            shrinkB=5))
+ax.annotate('text_spacing=-1./60', xy=(9, 3.2), xycoords='data',
+            textcoords='data', xytext=(4, 3.5),
+            horizontalalignment='left',
+            verticalalignment='top',
+            fontsize=10,
+            arrowprops=dict(arrowstyle='->',
+                            facecolor='black',
+                            linewidth=2,
+                            shrinkA=5,
+                            shrinkB=5))
+mpl.title("Distance_wText and text positioning")
+mpl.draw()
+mpl.savefig("tmp_Distance_wText.png", dpi=None)
+mpl.savefig("tmp_Distance_wText.pdf")

+ 66 - 0
doc/pub/tutorial/fig-tut/mpl_code_Rectangle.py

@@ -0,0 +1,66 @@
+import matplotlib.pyplot as mpl
+import matplotlib.transforms as transforms
+
+mpl.ion()  # for interactive drawing
+fig = mpl.figure()
+
+ax = fig.gca()
+xmin, xmax, ymin, ymax = 0.0, 8.0, -1.5, 6.0
+ax.set_xlim(xmin, xmax)
+ax.set_ylim(ymin, ymax)
+ax.set_aspect('equal')
+
+
+
+mpl.grid(True)
+
+# rectangle
+x = [2.0, 6.0, 6.0, 2.0, 2.0]
+y = [0.0, 0.0, 3.0, 3.0, 0.0]
+[line] = ax.plot(x, y, 'b', linewidth=2, linestyle='solid')
+ax.text(4, -0.466667, 'width',
+        horizontalalignment='center', fontsize=14)
+
+# line
+mpl.arrow(x=2, y=-0.6, dx=4, dy=0,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.arrow(x=6, y=-0.6, dx=-4, dy=0,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+ax.annotate('lower_left_corner', xy=[ 2.  0.], xycoords='data',
+            textcoords='data', xytext=[ 1.2 -0.6],
+            horizontalalignment='center',
+            verticalalignment='top',
+            fontsize=14,
+            arrowprops=dict(arrowstyle='->',
+                            facecolor='black',
+                            linewidth=2,
+                            shrinkA=5,
+                            shrinkB=5))
+ax.text(6.93333, 1.5, 'height',
+        horizontalalignment='left', fontsize=14)
+
+# line
+mpl.arrow(x=6.8, y=3, dx=0, dy=-3,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.arrow(x=6.8, y=0, dx=0, dy=3,
+          facecolor='k', edgecolor='k',
+          linestyle='solid',
+          linewidth=1, head_width=0.1,
+          length_includes_head=True,
+          shape='full')
+mpl.title("Rectangle")
+mpl.draw()
+mpl.savefig("tmp_Rectangle.png", dpi=None)
+mpl.savefig("tmp_Rectangle.pdf")

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 2219 - 0
doc/pub/tutorial/fig-tut/mpl_code_Spring.py


+ 30 - 0
doc/pub/tutorial/fig-tut/mpl_code_Triangle.py

@@ -0,0 +1,30 @@
+import matplotlib.pyplot as mpl
+import matplotlib.transforms as transforms
+
+mpl.ion()  # for interactive drawing
+fig = mpl.figure()
+
+ax = fig.gca()
+xmin, xmax, ymin, ymax = 0.0, 8.0, -1.5, 3.6
+ax.set_xlim(xmin, xmax)
+ax.set_ylim(ymin, ymax)
+ax.set_aspect('equal')
+
+
+
+mpl.grid(True)
+
+# triangle
+x = [2.0, 6.0, 3.2, 2.0]
+y = [0.0, 2.0, 3.0, 0.0]
+[line] = ax.plot(x, y, 'b', linewidth=2, linestyle='solid')
+ax.text(6, 2, 'p2',
+        horizontalalignment='center', fontsize=14)
+ax.text(3.2, 3, 'p3',
+        horizontalalignment='center', fontsize=14)
+ax.text(2, 0, 'p1',
+        horizontalalignment='center', fontsize=14)
+mpl.title("Triangle")
+mpl.draw()
+mpl.savefig("tmp_Triangle.png", dpi=None)
+mpl.savefig("tmp_Triangle.pdf")

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 4025 - 0
doc/pub/tutorial/fig-tut/mpl_code_Wavy.py


BIN
doc/pub/tutorial/fig-tut/pendulum.png


BIN
doc/pub/tutorial/fig-tut/vehicle0.pdf


BIN
doc/pub/tutorial/fig-tut/vehicle0.png


BIN
doc/pub/tutorial/fig-tut/vehicle0_dim.pdf


BIN
doc/pub/tutorial/fig-tut/vehicle0_dim.png


BIN
doc/pub/tutorial/fig-tut/vehicle0_hier1.pdf


BIN
doc/pub/tutorial/fig-tut/vehicle0_hier1.png


BIN
doc/pub/tutorial/fig-tut/vehicle0a.png


BIN
doc/pub/tutorial/fig-tut/vehicle0a_c.png


BIN
doc/pub/tutorial/fig-tut/vehicle0b.png


BIN
doc/pub/tutorial/fig-tut/vehicle0b_c.png


BIN
doc/pub/tutorial/fig-tut/vehicle1.pdf


BIN
doc/pub/tutorial/fig-tut/vehicle1.png


BIN
doc/pub/tutorial/fig-tut/vehicle_v1.pdf


BIN
doc/pub/tutorial/fig-tut/vehicle_v1.png


BIN
doc/pub/tutorial/fig-tut/vehicle_v2.pdf


BIN
doc/pub/tutorial/fig-tut/vehicle_v2.png


BIN
doc/pub/tutorial/fig-tut/vehicle_v23.pdf


BIN
doc/pub/tutorial/fig-tut/vehicle_v23.png


BIN
doc/pub/tutorial/fig-tut/vehicle_v3.pdf


BIN
doc/pub/tutorial/fig-tut/vehicle_v3.png


BIN
doc/pub/tutorial/fig-tut/wheel_on_inclined_plane.pdf


BIN
doc/pub/tutorial/fig-tut/wheel_on_inclined_plane.png


+ 1 - 1
doc/pub/tutorial/html/.buildinfo

@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: b6bd8de86073aa5742bf9e821e0b3d8a
+config: f332c418da3afe723da879dfd84452f7
 tags: 645f666f9bcd5a90fca523b33c5a78b7

+ 6 - 7
doc/pub/tutorial/html/_sources/index.txt

@@ -1,20 +1,19 @@
 
 .. Master file automatically created by doconce sphinx_dir
 
-Using Pysketcher to Create Principal Sketches of Physics Problems
-=================================================================
+
+Pysketcher: Create Principal Sketches of Physics Problems
+=========================================================
 
 Contents:
 
 .. toctree::
-   :maxdepth: 3
+   :maxdepth: 2
 
    main_sketcher
 
 
-Indices and tables
-==================
+Index
+=====
 
 * :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`

+ 82 - 16
doc/pub/tutorial/html/_static/basic.css

@@ -4,11 +4,9 @@
  *
  * Sphinx stylesheet -- basic theme.
  *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
- * Adjustments by Hans Petter Langtangen <hpl@simula.no>
- * (added admonition border)
  */
 
 /* -- main layout ----------------------------------------------------------- */
@@ -81,8 +79,17 @@ div.sphinxsidebar input {
     font-size: 1em;
 }
 
+div.sphinxsidebar #searchbox input[type="text"] {
+    width: 170px;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+    width: 30px;
+}
+
 img {
     border: 0;
+    max-width: 100%;
 }
 
 /* -- search page ----------------------------------------------------------- */
@@ -190,7 +197,10 @@ h3:hover > a.headerlink,
 h4:hover > a.headerlink,
 h5:hover > a.headerlink,
 h6:hover > a.headerlink,
-dt:hover > a.headerlink {
+dt:hover > a.headerlink,
+caption:hover > a.headerlink,
+p.caption:hover > a.headerlink,
+div.code-block-caption:hover > a.headerlink {
     visibility: visible;
 }
 
@@ -238,7 +248,6 @@ img.align-center, .figure.align-center, object.align-center {
 }
 
 .align-center {
-    clear: both;
     text-align: center;
 }
 
@@ -278,9 +287,6 @@ p.topic-title {
 /* -- admonitions ----------------------------------------------------------- */
 
 div.admonition {
-    /* Added border and gray background color, hpl */
-    border: 1px solid;
-    background-color: #f2f2f2;
     margin-top: 10px;
     margin-bottom: 10px;
     padding: 7px;
@@ -311,6 +317,13 @@ table.docutils {
     border-collapse: collapse;
 }
 
+table caption span.caption-number {
+    font-style: italic;
+}
+
+table caption span.caption-text {
+}
+
 table.docutils td, table.docutils th {
     padding: 1px 8px 1px 5px;
     border-top: 0;
@@ -341,6 +354,25 @@ table.citation td {
     border-bottom: none;
 }
 
+/* -- figures --------------------------------------------------------------- */
+
+div.figure {
+    margin: 0.5em;
+    padding: 0.5em;
+}
+
+div.figure p.caption {
+    padding: 0.3em;
+}
+
+div.figure p.caption span.caption-number {
+    font-style: italic;
+}
+
+div.figure p.caption span.caption-text {
+}
+
+
 /* -- other body styles ----------------------------------------------------- */
 
 ol.arabic {
@@ -399,14 +431,14 @@ dl.glossary dt {
     margin: 0;
 }
 
-.refcount {
-    color: #060;
-}
-
 .optional {
     font-size: 1.3em;
 }
 
+.sig-paren {
+    font-size: larger;
+}
+
 .versionmodified {
     font-style: italic;
 }
@@ -445,6 +477,11 @@ dl.glossary dt {
     font-style: oblique;
 }
 
+abbr, acronym {
+    border-bottom: dotted 1px;
+    cursor: help;
+}
+
 /* -- code displays --------------------------------------------------------- */
 
 pre {
@@ -467,22 +504,51 @@ table.highlighttable td {
     padding: 0 0.5em 0 0.5em;
 }
 
-tt.descname {
+div.code-block-caption {
+    padding: 2px 5px;
+    font-size: small;
+}
+
+div.code-block-caption code {
+    background-color: transparent;
+}
+
+div.code-block-caption + div > div.highlight > pre {
+    margin-top: 0;
+}
+
+div.code-block-caption span.caption-number {
+    padding: 0.1em 0.3em;
+    font-style: italic;
+}
+
+div.code-block-caption span.caption-text {
+}
+
+div.literal-block-wrapper {
+    padding: 1em 1em 0;
+}
+
+div.literal-block-wrapper div.highlight {
+    margin: 0;
+}
+
+code.descname {
     background-color: transparent;
     font-weight: bold;
     font-size: 1.2em;
 }
 
-tt.descclassname {
+code.descclassname {
     background-color: transparent;
 }
 
-tt.xref, a tt {
+code.xref, a code {
     background-color: transparent;
     font-weight: bold;
 }
 
-h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
     background-color: transparent;
 }
 

BIN
doc/pub/tutorial/html/_static/dialog-note.png


BIN
doc/pub/tutorial/html/_static/dialog-seealso.png


BIN
doc/pub/tutorial/html/_static/dialog-topic.png


BIN
doc/pub/tutorial/html/_static/dialog-warning.png


+ 36 - 20
doc/pub/tutorial/html/_static/doctools.js

@@ -2,9 +2,9 @@
  * doctools.js
  * ~~~~~~~~~~~
  *
- * Sphinx JavaScript utilties for all documentation.
+ * Sphinx JavaScript utilities for all documentation.
  *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -32,7 +32,7 @@ if (!window.console || !console.firebug) {
  */
 jQuery.urldecode = function(x) {
   return decodeURIComponent(x).replace(/\+/g, ' ');
-}
+};
 
 /**
  * small helper function to urlencode strings
@@ -61,18 +61,6 @@ jQuery.getQueryParameters = function(s) {
   return result;
 };
 
-/**
- * small function to check if an array contains
- * a given item.
- */
-jQuery.contains = function(arr, item) {
-  for (var i = 0; i < arr.length; i++) {
-    if (arr[i] == item)
-      return true;
-  }
-  return false;
-};
-
 /**
  * highlight a given string on a jquery object by wrapping it in
  * span elements with the given class name.
@@ -103,6 +91,30 @@ jQuery.fn.highlightText = function(text, className) {
   });
 };
 
+/*
+ * backward compatibility for jQuery.browser
+ * This will be supported until firefox bug is fixed.
+ */
+if (!jQuery.browser) {
+  jQuery.uaMatch = function(ua) {
+    ua = ua.toLowerCase();
+
+    var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
+      /(webkit)[ \/]([\w.]+)/.exec(ua) ||
+      /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
+      /(msie) ([\w.]+)/.exec(ua) ||
+      ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
+      [];
+
+    return {
+      browser: match[ 1 ] || "",
+      version: match[ 2 ] || "0"
+    };
+  };
+  jQuery.browser = {};
+  jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
+}
+
 /**
  * Small JavaScript module for the documentation.
  */
@@ -164,9 +176,10 @@ var Documentation = {
 
   /**
    * workaround a firefox stupidity
+   * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
    */
   fixFirefoxAnchorBug : function() {
-    if (document.location.hash && $.browser.mozilla)
+    if (document.location.hash)
       window.setTimeout(function() {
         document.location.href += '';
       }, 10);
@@ -180,14 +193,17 @@ var Documentation = {
     var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
     if (terms.length) {
       var body = $('div.body');
+      if (!body.length) {
+        body = $('body');
+      }
       window.setTimeout(function() {
         $.each(terms, function() {
           body.highlightText(this.toLowerCase(), 'highlighted');
         });
       }, 10);
-      $('<li class="highlight-link"><a href="javascript:Documentation.' +
-        'hideSearchWords()">' + _('Hide Search Matches') + '</a></li>')
-          .appendTo($('.sidebar .this-page-menu'));
+      $('<p class="highlight-link"><a href="javascript:Documentation.' +
+        'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
+          .appendTo($('#searchbox'));
     }
   },
 
@@ -213,7 +229,7 @@ var Documentation = {
    * helper function to hide the search marks again
    */
   hideSearchWords : function() {
-    $('.sidebar .this-page-menu li.highlight-link').fadeOut(300);
+    $('#searchbox .highlight-link').fadeOut(300);
     $('span.highlighted').removeClass('highlighted');
   },
 

BIN
doc/pub/tutorial/html/_static/down-pressed.png


BIN
doc/pub/tutorial/html/_static/down.png


+ 0 - 310
doc/pub/tutorial/html/_static/epub.css

@@ -1,310 +0,0 @@
-/*
- * default.css_t
- * ~~~~~~~~~~~~~
- *
- * Sphinx stylesheet -- default theme.
- *
- * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-@import url("basic.css");
-
-/* -- page layout ----------------------------------------------------------- */
-
-body {
-    font-family: {{ theme_bodyfont }};
-    font-size: 100%;
-    background-color: {{ theme_footerbgcolor }};
-    color: #000;
-    margin: 0;
-    padding: 0;
-}
-
-div.document {
-    background-color: {{ theme_sidebarbgcolor }};
-}
-
-div.documentwrapper {
-    float: left;
-    width: 100%;
-}
-
-div.bodywrapper {
-    margin: 0 0 0 230px;
-}
-
-div.body {
-    background-color: {{ theme_bgcolor }};
-    color: {{ theme_textcolor }};
-    padding: 0 20px 30px 20px;
-}
-
-{%- if theme_rightsidebar|tobool %}
-div.bodywrapper {
-    margin: 0 230px 0 0;
-}
-{%- endif %}
-
-div.footer {
-    color: {{ theme_footertextcolor }};
-    width: 100%;
-    padding: 9px 0 9px 0;
-    text-align: center;
-    font-size: 75%;
-}
-
-div.footer a {
-    color: {{ theme_footertextcolor }};
-    text-decoration: underline;
-}
-
-div.related {
-    background-color: {{ theme_relbarbgcolor }};
-    line-height: 30px;
-    color: {{ theme_relbartextcolor }};
-}
-
-div.related a {
-    color: {{ theme_relbarlinkcolor }};
-}
-
-div.sphinxsidebar {
-    {%- if theme_stickysidebar|tobool %}
-    top: 30px;
-    bottom: 0;
-    margin: 0;
-    position: fixed;
-    overflow: auto;
-    height: auto;
-    {%- endif %}
-    {%- if theme_rightsidebar|tobool %}
-    float: right;
-    {%- if theme_stickysidebar|tobool %}
-    right: 0;
-    {%- endif %}
-    {%- endif %}
-}
-
-{%- if theme_stickysidebar|tobool %}
-/* this is nice, but it it leads to hidden headings when jumping
-   to an anchor */
-/*
-div.related {
-    position: fixed;
-}
-
-div.documentwrapper {
-    margin-top: 30px;
-}
-*/
-{%- endif %}
-
-div.sphinxsidebar h3 {
-    font-family: {{ theme_headfont }};
-    color: {{ theme_sidebartextcolor }};
-    font-size: 1.4em;
-    font-weight: normal;
-    margin: 0;
-    padding: 0;
-}
-
-div.sphinxsidebar h3 a {
-    color: {{ theme_sidebartextcolor }};
-}
-
-div.sphinxsidebar h4 {
-    font-family: {{ theme_headfont }};
-    color: {{ theme_sidebartextcolor }};
-    font-size: 1.3em;
-    font-weight: normal;
-    margin: 5px 0 0 0;
-    padding: 0;
-}
-
-div.sphinxsidebar p {
-    color: {{ theme_sidebartextcolor }};
-}
-
-div.sphinxsidebar p.topless {
-    margin: 5px 10px 10px 10px;
-}
-
-div.sphinxsidebar ul {
-    margin: 10px;
-    padding: 0;
-    color: {{ theme_sidebartextcolor }};
-}
-
-div.sphinxsidebar a {
-    color: {{ theme_sidebarlinkcolor }};
-}
-
-div.sphinxsidebar input {
-    border: 1px solid {{ theme_sidebarlinkcolor }};
-    font-family: sans-serif;
-    font-size: 1em;
-}
-
-{% if theme_collapsiblesidebar|tobool %}
-/* for collapsible sidebar */
-div#sidebarbutton {
-    background-color: {{ theme_sidebarbtncolor }};
-}
-{% endif %}
-
-/* -- hyperlink styles ------------------------------------------------------ */
-
-a {
-    color: {{ theme_linkcolor }};
-    text-decoration: none;
-}
-
-a:visited {
-    color: {{ theme_visitedlinkcolor }};
-    text-decoration: none;
-}
-
-a:hover {
-    text-decoration: underline;
-}
-
-{% if theme_externalrefs|tobool %}
-a.external {
-   text-decoration: none;
-   border-bottom: 1px dashed {{ theme_linkcolor }};
-}
-
-a.external:hover {
-   text-decoration: none;
-   border-bottom: none;
-}
-
-a.external:visited {
-    text-decoration: none;
-    border-bottom: 1px dashed {{ theme_visitedlinkcolor }};
-}
-{% endif %}
-
-/* -- body styles ----------------------------------------------------------- */
-
-div.body h1,
-div.body h2,
-div.body h3,
-div.body h4,
-div.body h5,
-div.body h6 {
-    font-family: {{ theme_headfont }};
-    background-color: {{ theme_headbgcolor }};
-    font-weight: normal;
-    color: {{ theme_headtextcolor }};
-    border-bottom: 1px solid #ccc;
-    margin: 20px -20px 10px -20px;
-    padding: 3px 0 3px 10px;
-}
-
-div.body h1 { margin-top: 0; font-size: 200%; }
-div.body h2 { font-size: 160%; }
-div.body h3 { font-size: 140%; }
-div.body h4 { font-size: 120%; }
-div.body h5 { font-size: 110%; }
-div.body h6 { font-size: 100%; }
-
-a.headerlink {
-    color: {{ theme_headlinkcolor }};
-    font-size: 0.8em;
-    padding: 0 4px 0 4px;
-    text-decoration: none;
-}
-
-a.headerlink:hover {
-    background-color: {{ theme_headlinkcolor }};
-    color: white;
-}
-
-div.body p, div.body dd, div.body li {
-    text-align: justify;
-    line-height: 130%;
-}
-
-div.admonition p.admonition-title + p {
-    display: inline;
-}
-
-div.admonition p {
-    margin-bottom: 5px;
-}
-
-div.admonition pre {
-    margin-bottom: 5px;
-}
-
-div.admonition ul, div.admonition ol {
-    margin-bottom: 5px;
-}
-
-div.note {
-    background-color: #eee;
-    border: 1px solid #ccc;
-}
-
-div.seealso {
-    background-color: #ffc;
-    border: 1px solid #ff6;
-}
-
-div.topic {
-    background-color: #eee;
-}
-
-div.warning {
-    background-color: #ffe4e4;
-    border: 1px solid #f66;
-}
-
-p.admonition-title {
-    display: inline;
-}
-
-p.admonition-title:after {
-    content: ":";
-}
-
-pre {
-    padding: 5px;
-    background-color: {{ theme_codebgcolor }};
-    color: {{ theme_codetextcolor }};
-    line-height: 120%;
-    border: 1px solid #ac9;
-    border-left: none;
-    border-right: none;
-}
-
-tt {
-    background-color: #ecf0f3;
-    padding: 0 1px 0 1px;
-    font-size: 0.95em;
-}
-
-th {
-    background-color: #ede;
-}
-
-.warning tt {
-    background: #efc2c2;
-}
-
-.note tt {
-    background: #d6d6d6;
-}
-
-.viewcode-back {
-    font-family: {{ theme_bodyfont }};
-}
-
-div.viewcode-block:target {
-    background-color: #f4debf;
-    border-top: 1px solid #ac9;
-    border-bottom: 1px solid #ac9;
-}

BIN
doc/pub/tutorial/html/_static/file.png


BIN
doc/pub/tutorial/html/_static/footerbg.png


BIN
doc/pub/tutorial/html/_static/headerbg.png


+ 0 - 7
doc/pub/tutorial/html/_static/ie6.css

@@ -1,7 +0,0 @@
-* html img,
-* html .png{position:relative;behavior:expression((this.runtimeStyle.behavior="none")&&(this.pngSet?this.pngSet=true:(this.nodeName == "IMG" && this.src.toLowerCase().indexOf('.png')>-1?(this.runtimeStyle.backgroundImage = "none",
-this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.src + "',sizingMethod='image')",
-this.src = "_static/transparent.gif"):(this.origBg = this.origBg? this.origBg :this.currentStyle.backgroundImage.toString().replace('url("','').replace('")',''),
-this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.origBg + "',sizingMethod='crop')",
-this.runtimeStyle.backgroundImage = "none")),this.pngSet=true)
-);}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 4 - 154
doc/pub/tutorial/html/_static/jquery.js


BIN
doc/pub/tutorial/html/_static/middlebg.png


BIN
doc/pub/tutorial/html/_static/minus.png


BIN
doc/pub/tutorial/html/_static/plus.png


+ 0 - 367
doc/pub/tutorial/html/_static/pyramid.css

@@ -1,367 +0,0 @@
-/*
- * pylons.css_t
- * ~~~~~~~~~~~~
- *
- * Sphinx stylesheet -- pylons theme.
- *
- * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- * Adjustments by Hans Petter Langtangen <hpl@simula.no>
- * (admonitions, same as in pylons, fenics, agni)
- */
-
-@import url("basic.css");
-
-/* -- page layout ----------------------------------------------------------- */
-
-body {
-    font-family: "Nobile", sans-serif;
-    font-size: 100%;
-    background-color: #393939;
-    color: #ffffff;
-    margin: 0;
-    padding: 0;
-}
-
-div.documentwrapper {
-    float: left;
-    width: 100%;
-}
-
-div.bodywrapper {
-    margin: 0 0 0 230px;
-}
-
-hr {
-    border: 1px solid #B1B4B6;
-}
-
-div.document {
-    background-color: #eee;
-}
-
-div.header {
-    width:100%;
-    background: #f4ad32 url(headerbg.png) repeat-x 0 top;
-    border-bottom: 2px solid #ffffff;
-}
-
-div.logo {
-    text-align: center;
-    padding-top: 10px;
-}
-
-div.body {
-    background-color: #ffffff;
-    color: #3E4349;
-    padding: 0 30px 30px 30px;
-    font-size: 1em;
-    border: 2px solid #ddd;
-    border-right-style: none;
-    overflow: auto;
-}
-
-div.footer {
-    color: #ffffff;
-    width: 100%;
-    padding: 13px 0;
-    text-align: center;
-    font-size: 75%;
-    background: transparent;
-    clear:both;
-}
-
-div.footer a {
-    color: #ffffff;
-    text-decoration: none;
-}
-
-div.footer a:hover {
-    color: #e88f00;
-    text-decoration: underline;
-}
-
-div.related {
-    line-height: 30px;
-    color: #373839;
-    font-size: 0.8em;
-    background-color: #eee;
-}
-
-div.related a {
-    color: #1b61d6;
-}
-
-div.related ul {
-    padding-left: 240px;
-}
-
-div.sphinxsidebar {
-    font-size: 0.75em;
-    line-height: 1.5em;
-}
-
-div.sphinxsidebarwrapper{
-    padding: 10px 0;
-}
-
-div.sphinxsidebar h3,
-div.sphinxsidebar h4 {
-    font-family: "Neuton", sans-serif;
-    color: #373839;
-    font-size: 1.4em;
-    font-weight: normal;
-    margin: 0;
-    padding: 5px 10px;
-    border-bottom: 2px solid #ddd;
-}
-
-div.sphinxsidebar h4{
-    font-size: 1.3em;
-}
-
-div.sphinxsidebar h3 a {
-    color: #000000;
-}
-
-
-div.sphinxsidebar p {
-    color: #888;
-    padding: 5px 20px;
-}
-
-div.sphinxsidebar p.topless {
-}
-
-div.sphinxsidebar ul {
-    margin: 10px 20px;
-    padding: 0;
-    color: #373839;
-}
-
-div.sphinxsidebar a {
-    color: #444;
-}
-
-div.sphinxsidebar input {
-    border: 1px solid #ccc;
-    font-family: sans-serif;
-    font-size: 1em;
-}
-
-div.sphinxsidebar input[type=text]{
-    margin-left: 20px;
-}
-
-/* -- sidebars -------------------------------------------------------------- */
-
-div.sidebar {
-    margin: 0 0 0.5em 1em;
-    border: 2px solid #c6d880;
-    background-color: #e6efc2;
-    width: 40%;
-    float: right;
-    border-right-style: none;
-    border-left-style: none;
-    padding: 10px 20px;
-}
-
-p.sidebar-title {
-    font-weight: bold;
-}
-
-/* -- body styles ----------------------------------------------------------- */
-
-a, a .pre {
-    color: #1b61d6;
-    text-decoration: none;
-}
-
-a:hover, a:hover .pre {
-    text-decoration: underline;
-}
-
-div.body h1,
-div.body h2,
-div.body h3,
-div.body h4,
-div.body h5,
-div.body h6 {
-    font-family: "Neuton", sans-serif;
-    background-color: #ffffff;
-    font-weight: normal;
-    color: #373839;
-    margin: 30px 0px 10px 0px;
-    padding: 5px 0;
-}
-
-div.body h1 { border-top: 20px solid white; margin-top: 0; font-size: 200%; }
-div.body h2 { font-size: 150%; background-color: #ffffff; }
-div.body h3 { font-size: 120%; background-color: #ffffff; }
-div.body h4 { font-size: 110%; background-color: #ffffff; }
-div.body h5 { font-size: 100%; background-color: #ffffff; }
-div.body h6 { font-size: 100%; background-color: #ffffff; }
-
-a.headerlink {
-    color: #1b61d6;
-    font-size: 0.8em;
-    padding: 0 4px 0 4px;
-    text-decoration: none;
-}
-
-a.headerlink:hover {
-    text-decoration: underline;
-}
-
-div.body p, div.body dd, div.body li {
-    line-height: 1.5em;
-}
-
-/* admonition styles taken from agni theme, sphinxdoc.css */
-div.admonition, div.warning {
-    font-size: 0.9em;
-    margin: 1em 0 1em 0;
-    border: 1px solid #888A85;
-    background-color: #f7f7f7;
-    padding: 0;
-}
-
-div.admonition p, div.warning p {
-    margin: 0.5em 1em 0.5em 1em;
-    padding: 0;
-}
-
-div.admonition pre, div.warning pre {
-    margin: 0.4em 1em 0.4em 1em;
-}
-
-div.admonition p.admonition-title,
-div.warning p.admonition-title {
-    margin: 0;
-    padding: 0.1em 0 0.1em 0.5em;
-    color: white;
-    border-bottom: 1px solid #86989B;
-    font-weight: bold;
-    background-color: #adadad;
-}
-
-div.warning {
-    border: 1px solid #940000;
-}
-
-div.warning p.admonition-title {
-    background-color: #CF0000;
-    border-bottom-color: #940000;
-}
-
-div.admonition ul, div.admonition ol,
-div.warning ul, div.warning ol {
-    margin-top: 1em;
-    margin: 0.1em 0.5em 0.5em 3em;
-    padding: 0;
-}
-
-div.highlight{
-    background-color: white;
-}
-
-div.note {
-    border: 2px solid #7a9eec;
-    border-right-style: none;
-    border-left-style: none;
-    padding: 10px 20px 10px 60px;
-    background: #e1ecfe url(dialog-note.png) no-repeat 10px 8px;
-}
-
-div.seealso {
-    background: #fff6bf url(dialog-seealso.png) no-repeat 10px 8px;
-    border: 2px solid #ffd324;
-    border-left-style: none;
-    border-right-style: none;
-    padding: 10px 20px 10px 60px;
-}
-
-div.topic {
-    background: #eeeeee;
-    border: 2px solid #C6C9CB;
-    padding: 10px 20px;
-    border-right-style: none;
-    border-left-style: none;
-}
-
-div.warning {
-    background: #fbe3e4 url(dialog-warning.png) no-repeat 10px 8px;
-    border: 2px solid #fbc2c4;
-    border-right-style: none;
-    border-left-style: none;
-    padding: 10px 20px 10px 60px;
-}
-
-/*
-p.admonition-title {
-    display: none;
-}
-*/
-
-p.admonition-title:after {
-    content: ":";
-}
-
-pre {
-    padding: 10px;
-    background-color: #fafafa;
-    color: #222;
-    line-height: 1.2em;
-    border: 2px solid #C6C9CB;
-    font-size: 1.1em;
-    margin: 1.5em 0 1.5em 0;
-    border-right-style: none;
-    border-left-style: none;
-}
-
-tt {
-    background-color: transparent;
-    color: #222;
-    font-size: 1.1em;
-    font-family: monospace;
-}
-
-.viewcode-back {
-    font-family: "Nobile", sans-serif;
-}
-
-div.viewcode-block:target {
-    background-color: #fff6bf;
-    border: 2px solid #ffd324;
-    border-left-style: none;
-    border-right-style: none;
-    padding: 10px 20px;
-}
-
-table.highlighttable {
-    width: 100%;
-}
-
-table.highlighttable td {
-    padding: 0;
-}
-
-a em.std-term {
-   color: #007f00;
-}
-
-a:hover em.std-term {
-    text-decoration: underline;
-}
-
-.download {
-    font-family: "Nobile", sans-serif;
-    font-weight: normal;
-    font-style: normal;
-}
-
-tt.xref {
-    font-weight: normal;
-    font-style: normal;
-}

+ 219 - 152
doc/pub/tutorial/html/_static/searchtools.js

@@ -2,41 +2,15 @@
  * searchtools.js_t
  * ~~~~~~~~~~~~~~~~
  *
- * Sphinx JavaScript utilties for the full-text search.
+ * Sphinx JavaScript utilities for the full-text search.
  *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
 
-/**
- * helper function to return a node containing the
- * search summary for a given text. keywords is a list
- * of stemmed words, hlwords is the list of normal, unstemmed
- * words. the first one is used to find the occurance, the
- * latter for highlighting it.
- */
-
-jQuery.makeSearchSummary = function(text, keywords, hlwords) {
-  var textLower = text.toLowerCase();
-  var start = 0;
-  $.each(keywords, function() {
-    var i = textLower.indexOf(this.toLowerCase());
-    if (i > -1)
-      start = i;
-  });
-  start = Math.max(start - 120, 0);
-  var excerpt = ((start > 0) ? '...' : '') +
-  $.trim(text.substr(start, 240)) +
-  ((start + 240 - text.length) ? '...' : '');
-  var rv = $('<div class="context"></div>').text(excerpt);
-  $.each(hlwords, function() {
-    rv = rv.highlightText(this, 'highlighted');
-  });
-  return rv;
-}
-
 
+/* Non-minified version JS is _stemmer.js if file is provided */ 
 /**
  * Porter Stemmer
  */
@@ -220,6 +194,38 @@ var Stemmer = function() {
 }
 
 
+
+/**
+ * Simple result scoring code.
+ */
+var Scorer = {
+  // Implement the following function to further tweak the score for each result
+  // The function takes a result array [filename, title, anchor, descr, score]
+  // and returns the new score.
+  /*
+  score: function(result) {
+    return result[4];
+  },
+  */
+
+  // query matches the full name of an object
+  objNameMatch: 11,
+  // or matches in the last dotted part of the object name
+  objPartialMatch: 6,
+  // Additive scores depending on the priority of the object
+  objPrio: {0:  15,   // used to be importantResults
+            1:  5,   // used to be objectResults
+            2: -5},  // used to be unimportantResults
+  //  Used when the priority is not in the mapping.
+  objPrioDefault: 0,
+
+  // query found in title
+  title: 15,
+  // query found in terms
+  term: 5
+};
+
+
 /**
  * Search Module
  */
@@ -239,8 +245,13 @@ var Search = {
   },
 
   loadIndex : function(url) {
-    $.ajax({type: "GET", url: url, data: null, success: null,
-            dataType: "script", cache: true});
+    $.ajax({type: "GET", url: url, data: null,
+            dataType: "script", cache: true,
+            complete: function(jqxhr, textstatus) {
+              if (textstatus != "success") {
+                document.getElementById("searchindexloader").src = url;
+              }
+            }});
   },
 
   setIndex : function(index) {
@@ -268,19 +279,20 @@ var Search = {
     if (this._pulse_status >= 0)
         return;
     function pulse() {
+      var i;
       Search._pulse_status = (Search._pulse_status + 1) % 4;
       var dotString = '';
-      for (var i = 0; i < Search._pulse_status; i++)
+      for (i = 0; i < Search._pulse_status; i++)
         dotString += '.';
       Search.dots.text(dotString);
       if (Search._pulse_status > -1)
         window.setTimeout(pulse, 500);
-    };
+    }
     pulse();
   },
 
   /**
-   * perform a search for something
+   * perform a search for something (or wait until index is loaded)
    */
   performSearch : function(query) {
     // create the required interface elements
@@ -300,41 +312,46 @@ var Search = {
       this.deferQuery(query);
   },
 
+  /**
+   * execute search (requires search index to be loaded)
+   */
   query : function(query) {
+    var i;
     var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
 
-    // Stem the searchterms and add them to the correct list
+    // stem the searchterms and add them to the correct list
     var stemmer = new Stemmer();
     var searchterms = [];
     var excluded = [];
     var hlterms = [];
     var tmp = query.split(/\s+/);
     var objectterms = [];
-    for (var i = 0; i < tmp.length; i++) {
-      if (tmp[i] != "") {
+    for (i = 0; i < tmp.length; i++) {
+      if (tmp[i] !== "") {
           objectterms.push(tmp[i].toLowerCase());
       }
 
-      if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
-          tmp[i] == "") {
+      if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
+          tmp[i] === "") {
         // skip this "word"
         continue;
       }
       // stem the word
-      var word = stemmer.stemWord(tmp[i]).toLowerCase();
+      var word = stemmer.stemWord(tmp[i].toLowerCase());
+      var toAppend;
       // select the correct list
       if (word[0] == '-') {
-        var toAppend = excluded;
+        toAppend = excluded;
         word = word.substr(1);
       }
       else {
-        var toAppend = searchterms;
+        toAppend = searchterms;
         hlterms.push(tmp[i].toLowerCase());
       }
       // only add if not already in the list
-      if (!$.contains(toAppend, word))
+      if (!$u.contains(toAppend, word))
         toAppend.push(word);
-    };
+    }
     var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
 
     // console.debug('SEARCH: searching for:');
@@ -342,89 +359,51 @@ var Search = {
     // console.info('excluded: ', excluded);
 
     // prepare search
-    var filenames = this._index.filenames;
-    var titles = this._index.titles;
     var terms = this._index.terms;
-    var fileMap = {};
-    var files = null;
-    // different result priorities
-    var importantResults = [];
-    var objectResults = [];
-    var regularResults = [];
-    var unimportantResults = [];
+    var titleterms = this._index.titleterms;
+
+    // array of [filename, title, anchor, descr, score]
+    var results = [];
     $('#search-progress').empty();
 
     // lookup as object
-    for (var i = 0; i < objectterms.length; i++) {
-      var others = Array.concat(objectterms.slice(0,i),
-                                objectterms.slice(i+1, objectterms.length))
-      var results = this.performObjectSearch(objectterms[i], others);
-      // Assume first word is most likely to be the object,
-      // other words more likely to be in description.
-      // Therefore put matches for earlier words first.
-      // (Results are eventually used in reverse order).
-      objectResults = results[0].concat(objectResults);
-      importantResults = results[1].concat(importantResults);
-      unimportantResults = results[2].concat(unimportantResults);
+    for (i = 0; i < objectterms.length; i++) {
+      var others = [].concat(objectterms.slice(0, i),
+                             objectterms.slice(i+1, objectterms.length));
+      results = results.concat(this.performObjectSearch(objectterms[i], others));
     }
 
-    // perform the search on the required terms
-    for (var i = 0; i < searchterms.length; i++) {
-      var word = searchterms[i];
-      // no match but word was a required one
-      if ((files = terms[word]) == null)
-        break;
-      if (files.length == undefined) {
-        files = [files];
-      }
-      // create the mapping
-      for (var j = 0; j < files.length; j++) {
-        var file = files[j];
-        if (file in fileMap)
-          fileMap[file].push(word);
-        else
-          fileMap[file] = [word];
-      }
-    }
-
-    // now check if the files don't contain excluded terms
-    for (var file in fileMap) {
-      var valid = true;
-
-      // check if all requirements are matched
-      if (fileMap[file].length != searchterms.length)
-        continue;
-
-      // ensure that none of the excluded terms is in the
-      // search result.
-      for (var i = 0; i < excluded.length; i++) {
-        if (terms[excluded[i]] == file ||
-            $.contains(terms[excluded[i]] || [], file)) {
-          valid = false;
-          break;
-        }
-      }
+    // lookup as search terms in fulltext
+    results = results.concat(this.performTermsSearch(searchterms, excluded, terms, Scorer.term))
+                     .concat(this.performTermsSearch(searchterms, excluded, titleterms, Scorer.title));
 
-      // if we have still a valid result we can add it
-      // to the result list
-      if (valid)
-        regularResults.push([filenames[file], titles[file], '', null]);
+    // let the scorer override scores with a custom scoring function
+    if (Scorer.score) {
+      for (i = 0; i < results.length; i++)
+        results[i][4] = Scorer.score(results[i]);
     }
 
-    // delete unused variables in order to not waste
-    // memory until list is retrieved completely
-    delete filenames, titles, terms;
-
-    // now sort the regular results descending by title
-    regularResults.sort(function(a, b) {
-      var left = a[1].toLowerCase();
-      var right = b[1].toLowerCase();
-      return (left > right) ? -1 : ((left < right) ? 1 : 0);
+    // now sort the results by score (in opposite order of appearance, since the
+    // display function below uses pop() to retrieve items) and then
+    // alphabetically
+    results.sort(function(a, b) {
+      var left = a[4];
+      var right = b[4];
+      if (left > right) {
+        return 1;
+      } else if (left < right) {
+        return -1;
+      } else {
+        // same score: sort alphabetically
+        left = a[1].toLowerCase();
+        right = b[1].toLowerCase();
+        return (left > right) ? -1 : ((left < right) ? 1 : 0);
+      }
     });
 
-    // combine all results
-    var results = unimportantResults.concat(regularResults)
-      .concat(objectResults).concat(importantResults);
+    // for debugging
+    //Search.lastresults = results.slice();  // a copy
+    //console.info('search results:', Search.lastresults);
 
     // print the results
     var resultCount = results.length;
@@ -433,7 +412,7 @@ var Search = {
       if (results.length) {
         var item = results.pop();
         var listItem = $('<li style="display:none"></li>');
-        if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
+        if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
           // dirhtml builder
           var dirname = item[0] + '/';
           if (dirname.match(/\/index\/$/)) {
@@ -457,16 +436,18 @@ var Search = {
             displayNextItem();
           });
         } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
-          $.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
-                item[0] + '.txt', function(data) {
-            if (data != '') {
-              listItem.append($.makeSearchSummary(data, searchterms, hlterms));
-              Search.output.append(listItem);
-            }
-            listItem.slideDown(5, function() {
-              displayNextItem();
-            });
-          }, "text");
+          $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt',
+                  dataType: "text",
+                  complete: function(jqxhr, textstatus) {
+                    var data = jqxhr.responseText;
+                    if (data !== '' && data !== undefined) {
+                      listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
+                    }
+                    Search.output.append(listItem);
+                    listItem.slideDown(5, function() {
+                      displayNextItem();
+                    });
+                  }});
         } else {
           // no source available, just display title
           Search.output.append(listItem);
@@ -489,29 +470,42 @@ var Search = {
     displayNextItem();
   },
 
+  /**
+   * search for object names
+   */
   performObjectSearch : function(object, otherterms) {
     var filenames = this._index.filenames;
     var objects = this._index.objects;
     var objnames = this._index.objnames;
     var titles = this._index.titles;
 
-    var importantResults = [];
-    var objectResults = [];
-    var unimportantResults = [];
+    var i;
+    var results = [];
 
     for (var prefix in objects) {
       for (var name in objects[prefix]) {
         var fullname = (prefix ? prefix + '.' : '') + name;
         if (fullname.toLowerCase().indexOf(object) > -1) {
+          var score = 0;
+          var parts = fullname.split('.');
+          // check for different match types: exact matches of full name or
+          // "last name" (i.e. last dotted part)
+          if (fullname == object || parts[parts.length - 1] == object) {
+            score += Scorer.objNameMatch;
+          // matches in last name
+          } else if (parts[parts.length - 1].indexOf(object) > -1) {
+            score += Scorer.objPartialMatch;
+          }
           var match = objects[prefix][name];
-          var objname = objnames[match[1]];
+          var objname = objnames[match[1]][2];
           var title = titles[match[0]];
           // If more than one term searched for, we require other words to be
           // found in the name/title/description
           if (otherterms.length > 0) {
-            var haystack = (prefix + ' ' + name + ' ' + objname + ' ' + title).toLowerCase();
+            var haystack = (prefix + ' ' + name + ' ' +
+                            objname + ' ' + title).toLowerCase();
             var allfound = true;
-            for (var i = 0; i < otherterms.length; i++) {
+            for (i = 0; i < otherterms.length; i++) {
               if (haystack.indexOf(otherterms[i]) == -1) {
                 allfound = false;
                 break;
@@ -522,34 +516,107 @@ var Search = {
             }
           }
           var descr = objname + _(', in ') + title;
-          // XXX the generated anchors are not generally correct
-          // XXX there may be custom prefixes
-          result = [filenames[match[0]], fullname, '#'+fullname, descr];
-          switch (match[2]) {
-          case 1: objectResults.push(result); break;
-          case 0: importantResults.push(result); break;
-          case 2: unimportantResults.push(result); break;
+
+          var anchor = match[3];
+          if (anchor === '')
+            anchor = fullname;
+          else if (anchor == '-')
+            anchor = objnames[match[1]][1] + '-' + fullname;
+          // add custom score for some objects according to scorer
+          if (Scorer.objPrio.hasOwnProperty(match[2])) {
+            score += Scorer.objPrio[match[2]];
+          } else {
+            score += Scorer.objPrioDefault;
           }
+          results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]);
         }
       }
     }
 
-    // sort results descending
-    objectResults.sort(function(a, b) {
-      return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
-    });
+    return results;
+  },
 
-    importantResults.sort(function(a, b) {
-      return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
-    });
+  /**
+   * search for full-text terms in the index
+   */
+  performTermsSearch : function(searchterms, excluded, terms, score) {
+    var filenames = this._index.filenames;
+    var titles = this._index.titles;
 
-    unimportantResults.sort(function(a, b) {
-      return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
-    });
+    var i, j, file, files;
+    var fileMap = {};
+    var results = [];
+
+    // perform the search on the required terms
+    for (i = 0; i < searchterms.length; i++) {
+      var word = searchterms[i];
+      // no match but word was a required one
+      if ((files = terms[word]) === undefined)
+        break;
+      if (files.length === undefined) {
+        files = [files];
+      }
+      // create the mapping
+      for (j = 0; j < files.length; j++) {
+        file = files[j];
+        if (file in fileMap)
+          fileMap[file].push(word);
+        else
+          fileMap[file] = [word];
+      }
+    }
+
+    // now check if the files don't contain excluded terms
+    for (file in fileMap) {
+      var valid = true;
+
+      // check if all requirements are matched
+      if (fileMap[file].length != searchterms.length)
+          continue;
+
+      // ensure that none of the excluded terms is in the search result
+      for (i = 0; i < excluded.length; i++) {
+        if (terms[excluded[i]] == file ||
+          $u.contains(terms[excluded[i]] || [], file)) {
+          valid = false;
+          break;
+        }
+      }
+
+      // if we have still a valid result we can add it to the result list
+      if (valid) {
+        results.push([filenames[file], titles[file], '', null, score]);
+      }
+    }
+    return results;
+  },
 
-    return [importantResults, objectResults, unimportantResults]
+  /**
+   * helper function to return a node containing the
+   * search summary for a given text. keywords is a list
+   * of stemmed words, hlwords is the list of normal, unstemmed
+   * words. the first one is used to find the occurrence, the
+   * latter for highlighting it.
+   */
+  makeSearchSummary : function(text, keywords, hlwords) {
+    var textLower = text.toLowerCase();
+    var start = 0;
+    $.each(keywords, function() {
+      var i = textLower.indexOf(this.toLowerCase());
+      if (i > -1)
+        start = i;
+    });
+    start = Math.max(start - 120, 0);
+    var excerpt = ((start > 0) ? '...' : '') +
+      $.trim(text.substr(start, 240)) +
+      ((start + 240 - text.length) ? '...' : '');
+    var rv = $('<div class="context"></div>').text(excerpt);
+    $.each(hlwords, function() {
+      rv = rv.highlightText(this, 'highlighted');
+    });
+    return rv;
   }
-}
+};
 
 $(document).ready(function() {
   Search.init();

BIN
doc/pub/tutorial/html/_static/transparent.gif


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 31 - 16
doc/pub/tutorial/html/_static/underscore.js


BIN
doc/pub/tutorial/html/_static/up-pressed.png


BIN
doc/pub/tutorial/html/_static/up.png


+ 17 - 17
doc/pub/tutorial/html/_static/websupport.js

@@ -2,9 +2,9 @@
  * websupport.js
  * ~~~~~~~~~~~~~
  *
- * sphinx.websupport utilties for all documentation.
+ * sphinx.websupport utilities for all documentation.
  *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -50,51 +50,51 @@
   }
 
   function initEvents() {
-    $('a.comment-close').live("click", function(event) {
+    $(document).on("click", 'a.comment-close', function(event) {
       event.preventDefault();
       hide($(this).attr('id').substring(2));
     });
-    $('a.vote').live("click", function(event) {
+    $(document).on("click", 'a.vote', function(event) {
       event.preventDefault();
       handleVote($(this));
     });
-    $('a.reply').live("click", function(event) {
+    $(document).on("click", 'a.reply', function(event) {
       event.preventDefault();
       openReply($(this).attr('id').substring(2));
     });
-    $('a.close-reply').live("click", function(event) {
+    $(document).on("click", 'a.close-reply', function(event) {
       event.preventDefault();
       closeReply($(this).attr('id').substring(2));
     });
-    $('a.sort-option').live("click", function(event) {
+    $(document).on("click", 'a.sort-option', function(event) {
       event.preventDefault();
       handleReSort($(this));
     });
-    $('a.show-proposal').live("click", function(event) {
+    $(document).on("click", 'a.show-proposal', function(event) {
       event.preventDefault();
       showProposal($(this).attr('id').substring(2));
     });
-    $('a.hide-proposal').live("click", function(event) {
+    $(document).on("click", 'a.hide-proposal', function(event) {
       event.preventDefault();
       hideProposal($(this).attr('id').substring(2));
     });
-    $('a.show-propose-change').live("click", function(event) {
+    $(document).on("click", 'a.show-propose-change', function(event) {
       event.preventDefault();
       showProposeChange($(this).attr('id').substring(2));
     });
-    $('a.hide-propose-change').live("click", function(event) {
+    $(document).on("click", 'a.hide-propose-change', function(event) {
       event.preventDefault();
       hideProposeChange($(this).attr('id').substring(2));
     });
-    $('a.accept-comment').live("click", function(event) {
+    $(document).on("click", 'a.accept-comment', function(event) {
       event.preventDefault();
       acceptComment($(this).attr('id').substring(2));
     });
-    $('a.delete-comment').live("click", function(event) {
+    $(document).on("click", 'a.delete-comment', function(event) {
       event.preventDefault();
       deleteComment($(this).attr('id').substring(2));
     });
-    $('a.comment-markup').live("click", function(event) {
+    $(document).on("click", 'a.comment-markup', function(event) {
       event.preventDefault();
       toggleCommentMarkupBox($(this).attr('id').substring(2));
     });
@@ -566,7 +566,7 @@
     var context = $.extend({}, opts, comment);
     var div = $(renderTemplate(commentTemplate, context));
 
-    // If the user has voted on this comment, highblight the correct arrow.
+    // If the user has voted on this comment, highlight the correct arrow.
     if (comment.vote) {
       var direction = (comment.vote == 1) ? 'u' : 'd';
       div.find('#' + direction + 'v' + comment.id).hide();
@@ -700,8 +700,8 @@
         (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
       <div class="comment-markup-box" id="mb<%id%>">\
         reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
-        <tt>``code``</tt>, \
-        code blocks: <tt>::</tt> and an indented block after blank line</div>\
+        <code>``code``</code>, \
+        code blocks: <code>::</code> and an indented block after blank line</div>\
       <form method="post" id="cf<%id%>" class="comment-form" action="">\
         <textarea name="comment" cols="80"></textarea>\
         <p class="propose-button">\

+ 29 - 38
doc/pub/tutorial/html/genindex.html

@@ -1,6 +1,4 @@
 
-
-
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
@@ -11,13 +9,13 @@
     
     <title>Index</title>
     
-    <link rel="stylesheet" href="_static/pyramid.css" type="text/css" />
+    <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '0.1',
+        VERSION:     '1.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -26,7 +24,7 @@
     <script type="text/javascript" src="_static/jquery.js"></script>
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
-    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+    <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
 
         <script src="http://sagecell.sagemath.org/static/jquery.min.js"></script>
         <script src="http://sagecell.sagemath.org/static/embedded_sagecell.js"></script>
@@ -44,13 +42,11 @@
         </style>
 
     
-    <link rel="top" title="Using Pysketcher to Create Principal Sketches of Physics Problems" href="index.html" />
+    <link rel="top" title="Pysketcher: Create Principal Sketches of Physics Problems" href="index.html" />
 
-<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neuton&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
-<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Nobile:regular,italic,bold,bolditalic&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
-<!--[if lte IE 6]>
-<link rel="stylesheet" href="_static/ie6.css" type="text/css" media="screen" charset="utf-8" />
-<![endif]-->
+   
+  
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9">
 
   
        <style type="text/css">
@@ -61,22 +57,12 @@
        </style>
       </head>
     
-  <body>
-
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="#" title="General Index"
-             accesskey="I">index</a></li>
-        <li><a href="index.html">Using Pysketcher to Create Principal Sketches of Physics Problems</a> &raquo;</li> 
-      </ul>
-    </div>  
+  <body role="document">  
 
     <div class="document">
       <div class="documentwrapper">
         <div class="bodywrapper">
-          <div class="body">
+          <div class="body" role="main">
             
 
 <h1 id="index">Index</h1>
@@ -111,15 +97,21 @@
           </div>
         </div>
       </div>
-      <div class="sphinxsidebar">
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
         <div class="sphinxsidebarwrapper">
 
-   
+   <div class="relations">
+<h3>Related Topics</h3>
+<ul>
+  <li><a href="index.html">Documentation overview</a><ul>
+  </ul></li>
+</ul>
+</div>
 
-<div id="searchbox" style="display: none">
+<div id="searchbox" style="display: none" role="search">
   <h3>Quick search</h3>
     <form class="search" action="search.html" method="get">
-      <input type="text" name="q" size="18" />
+      <input type="text" name="q" />
       <input type="submit" value="Go" />
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
@@ -133,18 +125,17 @@
       </div>
       <div class="clearer"></div>
     </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="#" title="General Index"
-             >index</a></li>
-        <li><a href="index.html">Using Pysketcher to Create Principal Sketches of Physics Problems</a> &raquo;</li> 
-      </ul>
-    </div>
     <div class="footer">
-        &copy; Copyright 2015, H. P. Langtangen.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.2.3.
+      &copy;2015, Hans Petter Langtangen.
+      
+      |
+      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4a0+</a>
+      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      
     </div>
+
+    
+
+    
   </body>
 </html>

+ 53 - 80
doc/pub/tutorial/html/index.html

@@ -1,4 +1,3 @@
-
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
@@ -7,15 +6,15 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Using Pysketcher to Create Principal Sketches of Physics Problems</title>
+    <title>Pysketcher: Create Principal Sketches of Physics Problems</title>
     
-    <link rel="stylesheet" href="_static/pyramid.css" type="text/css" />
+    <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '0.1',
+        VERSION:     '1.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +23,7 @@
     <script type="text/javascript" src="_static/jquery.js"></script>
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
-    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+    <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
 
         <script src="http://sagecell.sagemath.org/static/jquery.min.js"></script>
         <script src="http://sagecell.sagemath.org/static/embedded_sagecell.js"></script>
@@ -42,14 +41,12 @@
         </style>
 
     
-    <link rel="top" title="Using Pysketcher to Create Principal Sketches of Physics Problems" href="#" />
-    <link rel="next" title="Using Pysketcher to Create Principal Sketches of Physics Problems" href="main_sketcher.html" />
+    <link rel="top" title="Pysketcher: Create Principal Sketches of Physics Problems" href="#" />
+    <link rel="next" title="Pysketcher: Create Principal Sketches of Physics Problems" href="main_sketcher.html" />
 
-<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neuton&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
-<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Nobile:regular,italic,bold,bolditalic&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
-<!--[if lte IE 6]>
-<link rel="stylesheet" href="_static/ie6.css" type="text/css" media="screen" charset="utf-8" />
-<![endif]-->
+   
+  
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9">
 
   
        <style type="text/css">
@@ -60,65 +57,31 @@
        </style>
       </head>
     
-  <body>
-
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="main_sketcher.html" title="Using Pysketcher to Create Principal Sketches of Physics Problems"
-             accesskey="N">next</a> |</li>
-        <li><a href="#">Using Pysketcher to Create Principal Sketches of Physics Problems</a> &raquo;</li> 
-      </ul>
-    </div>  
+  <body role="document">  
 
     <div class="document">
       <div class="documentwrapper">
         <div class="bodywrapper">
-          <div class="body">
+          <div class="body" role="main">
             
-  <div class="section" id="using-pysketcher-to-create-principal-sketches-of-physics-problems">
-<h1>Using Pysketcher to Create Principal Sketches of Physics Problems<a class="headerlink" href="#using-pysketcher-to-create-principal-sketches-of-physics-problems" title="Permalink to this headline">¶</a></h1>
+  <div class="section" id="pysketcher-create-principal-sketches-of-physics-problems">
+<h1>Pysketcher: Create Principal Sketches of Physics Problems<a class="headerlink" href="#pysketcher-create-principal-sketches-of-physics-problems" title="Permalink to this headline">¶</a></h1>
 <p>Contents:</p>
 <div class="toctree-wrapper compound">
 <ul>
-<li class="toctree-l1"><a class="reference internal" href="main_sketcher.html">Using Pysketcher to Create Principal Sketches of Physics Problems</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="main_sketcher.html#a-first-glimpse-of-pysketcher">A First Glimpse of Pysketcher</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="main_sketcher.html#basic-construction-of-sketches">Basic Construction of Sketches</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="main_sketcher.html#basic-shapes">Basic Shapes</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="main_sketcher.html#axis">Axis</a></li>
-<li class="toctree-l3"><a class="reference internal" href="main_sketcher.html#distance-with-text">Distance with Text</a></li>
-<li class="toctree-l3"><a class="reference internal" href="main_sketcher.html#rectangle">Rectangle</a></li>
-<li class="toctree-l3"><a class="reference internal" href="main_sketcher.html#triangle">Triangle</a></li>
-<li class="toctree-l3"><a class="reference internal" href="main_sketcher.html#arc">Arc</a></li>
-<li class="toctree-l3"><a class="reference internal" href="main_sketcher.html#spring">Spring</a></li>
-<li class="toctree-l3"><a class="reference internal" href="main_sketcher.html#dashpot">Dashpot</a></li>
-<li class="toctree-l3"><a class="reference internal" href="main_sketcher.html#wavy">Wavy</a></li>
-<li class="toctree-l3"><a class="reference internal" href="main_sketcher.html#stochastic-curves">Stochastic curves</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="main_sketcher.html#inner-workings-of-the-pysketcher-tool">Inner Workings of the Pysketcher Tool</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="main_sketcher.html#example-of-classes-for-geometric-objects">Example of Classes for Geometric Objects</a></li>
-<li class="toctree-l3"><a class="reference internal" href="main_sketcher.html#adding-functionality-via-recursion">Adding Functionality via Recursion</a></li>
-<li class="toctree-l3"><a class="reference internal" href="main_sketcher.html#scaling-translating-and-rotating-a-figure">Scaling, Translating, and Rotating a Figure</a></li>
-</ul>
-</li>
+<li class="toctree-l1"><a class="reference internal" href="main_sketcher.html">Pysketcher: Create Principal Sketches of Physics Problems</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="main_sketcher.html#a-first-glimpse-of-pysketcher">A First Glimpse of Pysketcher</a></li>
+<li class="toctree-l2"><a class="reference internal" href="main_sketcher.html#basic-shapes">Basic Shapes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="main_sketcher.html#inner-workings-of-the-pysketcher-tool">Inner Workings of the Pysketcher Tool</a></li>
 </ul>
 </li>
 </ul>
 </div>
 </div>
-<div class="section" id="indices-and-tables">
-<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="index">
+<h1>Index<a class="headerlink" href="#index" title="Permalink to this headline">¶</a></h1>
 <ul class="simple">
-<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
-<li><a class="reference internal" href="py-modindex.html"><em>Module Index</em></a></li>
-<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
+<li><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></li>
 </ul>
 </div>
 
@@ -126,21 +89,32 @@
           </div>
         </div>
       </div>
-      <div class="sphinxsidebar">
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
         <div class="sphinxsidebarwrapper">
   <h3><a href="#">Table Of Contents</a></h3>
   <ul>
-<li><a class="reference internal" href="#">Using Pysketcher to Create Principal Sketches of Physics Problems</a></li>
-<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
+<li><a class="reference internal" href="#">Pysketcher: Create Principal Sketches of Physics Problems</a></li>
+<li><a class="reference internal" href="#index">Index</a></li>
 </ul>
-
-  <h4>Next topic</h4>
-  <p class="topless"><a href="main_sketcher.html"
-                        title="next chapter">Using Pysketcher to Create Principal Sketches of Physics Problems</a></p>
-<div id="searchbox" style="display: none">
+<div class="relations">
+<h3>Related Topics</h3>
+<ul>
+  <li><a href="#">Documentation overview</a><ul>
+      <li>Next: <a href="main_sketcher.html" title="next chapter">Pysketcher: Create Principal Sketches of Physics Problems</a></li>
+  </ul></li>
+</ul>
+</div>
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="_sources/index.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<div id="searchbox" style="display: none" role="search">
   <h3>Quick search</h3>
     <form class="search" action="search.html" method="get">
-      <input type="text" name="q" size="18" />
+      <input type="text" name="q" />
       <input type="submit" value="Go" />
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
@@ -154,21 +128,20 @@
       </div>
       <div class="clearer"></div>
     </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="main_sketcher.html" title="Using Pysketcher to Create Principal Sketches of Physics Problems"
-             >next</a> |</li>
-        <li><a href="#">Using Pysketcher to Create Principal Sketches of Physics Problems</a> &raquo;</li> 
-      </ul>
-    </div>
     <div class="footer">
-        &copy; Copyright 2015, H. P. Langtangen.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.2.3.
+      &copy;2015, Hans Petter Langtangen.
+      
+      |
+      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4a0+</a>
+      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      
+      |
+      <a href="_sources/index.txt"
+          rel="nofollow">Page source</a>
     </div>
+
+    
+
+    
   </body>
 </html>

BIN
doc/pub/tutorial/html/objects.inv


+ 29 - 35
doc/pub/tutorial/html/search.html

@@ -1,4 +1,3 @@
-
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
@@ -9,13 +8,13 @@
     
     <title>Search</title>
     
-    <link rel="stylesheet" href="_static/pyramid.css" type="text/css" />
+    <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '0.1',
+        VERSION:     '1.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +23,7 @@
     <script type="text/javascript" src="_static/jquery.js"></script>
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
-    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+    <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
     <script type="text/javascript" src="_static/searchtools.js"></script>
 
         <script src="http://sagecell.sagemath.org/static/jquery.min.js"></script>
@@ -43,17 +42,17 @@
         </style>
 
     
-    <link rel="top" title="Using Pysketcher to Create Principal Sketches of Physics Problems" href="index.html" />
+    <link rel="top" title="Pysketcher: Create Principal Sketches of Physics Problems" href="index.html" />
 
   <script type="text/javascript">
     jQuery(function() { Search.loadIndex("searchindex.js"); });
   </script>
   
-<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neuton&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
-<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Nobile:regular,italic,bold,bolditalic&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
-<!--[if lte IE 6]>
-<link rel="stylesheet" href="_static/ie6.css" type="text/css" media="screen" charset="utf-8" />
-<![endif]-->
+  <script type="text/javascript" id="searchindexloader"></script>
+  
+   
+  
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9">
 
 
   
@@ -65,22 +64,12 @@
        </style>
       </head>
     
-  <body>
-
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li><a href="index.html">Using Pysketcher to Create Principal Sketches of Physics Problems</a> &raquo;</li> 
-      </ul>
-    </div>  
+  <body role="document">  
 
     <div class="document">
       <div class="documentwrapper">
         <div class="bodywrapper">
-          <div class="body">
+          <div class="body" role="main">
             
   <h1 id="search-documentation">Search</h1>
   <div id="fallback" class="admonition warning">
@@ -109,24 +98,29 @@
           </div>
         </div>
       </div>
-      <div class="sphinxsidebar">
-        <div class="sphinxsidebarwrapper">
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+  <li><a href="index.html">Documentation overview</a><ul>
+  </ul></li>
+</ul>
+</div>
         </div>
       </div>
       <div class="clearer"></div>
     </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             >index</a></li>
-        <li><a href="index.html">Using Pysketcher to Create Principal Sketches of Physics Problems</a> &raquo;</li> 
-      </ul>
-    </div>
     <div class="footer">
-        &copy; Copyright 2015, H. P. Langtangen.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.2.3.
+      &copy;2015, Hans Petter Langtangen.
+      
+      |
+      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4a0+</a>
+      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
+      
     </div>
+
+    
+
+    
   </body>
 </html>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 1
doc/pub/tutorial/html/searchindex.js


+ 128 - 73
doc/pub/tutorial/pysketcher.html

@@ -11,31 +11,20 @@ Automatically generated HTML file from DocOnce source
 
 <title>Using Pysketcher to Create Principal Sketches of Physics Problems</title>
 
+<!-- Bootstrap style: bootswatch_readable -->
+<link href="http://netdna.bootstrapcdn.com/bootswatch/3.1.1/readable/bootstrap.min.css" rel="stylesheet">
+<!-- not necessary
+<link href="http://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
+-->
 
 <style type="text/css">
-/* blueish style */
-
-/* Color definitions:  http://www.december.com/html/spec/color0.html
-   CSS examples:       http://www.w3schools.com/css/css_examples.asp */
 
-body {
-  margin-top: 1.0em;
-  background-color: #ffffff;
-  font-family: Helvetica, Arial, FreeSans, san-serif;
-  color: #000000;
+/* Add scrollbar to dropdown menus in bootstrap navigation bar */
+.dropdown-menu {
+   height: auto;
+   max-height: 400px;
+   overflow-x: hidden;
 }
-h1 { font-size: 1.8em; color: #1e36ce; }
-h2 { font-size: 1.6em; color: #1e36ce; }
-h3 { font-size: 1.4em; color: #1e36ce; }
-a { color: #1e36ce; text-decoration:none; }
-tt { font-family: "Courier New", Courier; }
-/* pre style removed because it will interfer with pygments */
-p { text-indent: 0px; }
-hr { border: 0; width: 80%; border-bottom: 1px solid #aaa}
-p.caption { width: 80%; font-style: normal; text-align: left; }
-hr.figure { border: 0; width: 80%; border-bottom: 1px solid #aaa}
-
-div { text-align: justify; text-justify: inter-word; }
 </style>
 
 
@@ -43,51 +32,48 @@ div { text-align: justify; text-justify: inter-word; }
 
 <!-- tocinfo
 {'highest level': 1,
- 'sections': [(' A First Glimpse of Pysketcher ', 1, None, '___sec0'),
-              (' Basic Construction of Sketches ', 2, None, '___sec1'),
-              (' Basic Drawing ', 3, None, '___sec2'),
-              (' Groups of Objects ', 3, None, '___sec3'),
-              (' Changing Line Styles and Colors ', 3, None, '___sec4'),
-              (' The Figure Composition as an Object Hierarchy ',
+ 'sections': [('A First Glimpse of Pysketcher', 1, None, '___sec0'),
+              ('Basic Construction of Sketches', 2, None, '___sec1'),
+              ('Basic Drawing', 3, None, '___sec2'),
+              ('Groups of Objects', 3, None, '___sec3'),
+              ('Changing Line Styles and Colors', 3, None, '___sec4'),
+              ('The Figure Composition as an Object Hierarchy',
                3,
                None,
                '___sec5'),
-              (' Animation: Translating the Vehicle ', 3, None, '___sec6'),
-              (' Animation: Rolling the Wheels ',
+              ('Animation: Translating the Vehicle', 3, None, '___sec6'),
+              ('Animation: Rolling the Wheels',
                3,
                'sketcher:vehicle1:anim',
                'sketcher:vehicle1:anim'),
-              (' Basic Shapes ', 1, None, '___sec8'),
-              (' Axis ', 2, None, '___sec9'),
-              (' Distance with Text ', 2, None, '___sec10'),
-              (' Rectangle ', 2, None, '___sec11'),
-              (' Triangle ', 2, None, '___sec12'),
-              (' Arc ', 2, None, '___sec13'),
-              (' Spring ', 2, None, '___sec14'),
-              (' Dashpot ', 2, None, '___sec15'),
-              (' Wavy ', 2, None, '___sec16'),
-              (' Stochastic curves ', 2, None, '___sec17'),
-              (' Inner Workings of the Pysketcher Tool ',
-               1,
-               None,
-               '___sec18'),
-              (' Example of Classes for Geometric Objects ',
+              ('Basic Shapes', 1, None, '___sec8'),
+              ('Axis', 2, None, '___sec9'),
+              ('Distance with Text', 2, None, '___sec10'),
+              ('Rectangle', 2, None, '___sec11'),
+              ('Triangle', 2, None, '___sec12'),
+              ('Arc', 2, None, '___sec13'),
+              ('Spring', 2, None, '___sec14'),
+              ('Dashpot', 2, None, '___sec15'),
+              ('Wavy', 2, None, '___sec16'),
+              ('Stochastic curves', 2, None, '___sec17'),
+              ('Inner Workings of the Pysketcher Tool', 1, None, '___sec18'),
+              ('Example of Classes for Geometric Objects',
                2,
                None,
                '___sec19'),
-              (' Simple Geometric Objects ', 3, None, '___sec20'),
-              (' Class Curve ', 3, None, '___sec21'),
-              (' Compound Geometric Objects ', 3, None, '___sec22'),
-              (' Adding Functionality via Recursion ', 2, None, '___sec23'),
-              (' Basic Principles of Recursion ', 3, None, '___sec24'),
-              (' Explaining Recursion ', 3, None, '___sec25'),
-              (' Scaling, Translating, and Rotating a Figure ',
+              ('Simple Geometric Objects', 3, None, '___sec20'),
+              ('Class Curve', 3, None, '___sec21'),
+              ('Compound Geometric Objects', 3, None, '___sec22'),
+              ('Adding Functionality via Recursion', 2, None, '___sec23'),
+              ('Basic Principles of Recursion', 3, None, '___sec24'),
+              ('Explaining Recursion', 3, None, '___sec25'),
+              ('Scaling, Translating, and Rotating a Figure',
                2,
                'sketcher:scaling',
                'sketcher:scaling'),
-              (' Scaling ', 3, None, '___sec27'),
-              (' Translation ', 3, None, '___sec28'),
-              (' Rotation ', 3, None, '___sec29')]}
+              ('Scaling', 3, None, '___sec27'),
+              ('Translation', 3, None, '___sec28'),
+              ('Rotation', 3, None, '___sec29')]}
 end of tocinfo -->
 
 <body>
@@ -109,21 +95,70 @@ MathJax.Hub.Config({
 
 
     
-<a name="part0000"></a>
-<p>
-<!-- begin top navigation -->
-<table style="width: 100%"><tr><td>
-</td><td>
-<div style="text-align: right;"><a href="._pysketcher001.html"><img src="http://hplgit.github.io/doconce/bundled/html_images/next1.png" border=0 alt="Next &raquo;"></a></div>
-</td></tr></table>
-<!-- end top navigation -->
-</p>
+<!-- Bootstrap navigation bar -->
+<div class="navbar navbar-default navbar-fixed-top">
+  <div class="navbar-header">
+    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">
+      <span class="icon-bar"></span>
+      <span class="icon-bar"></span>
+      <span class="icon-bar"></span>
+    </button>
+    <a class="navbar-brand" href="pysketcher.html">Using Pysketcher to Create Principal Sketches of Physics Problems</a>
+  </div>
+
+  <div class="navbar-collapse collapse navbar-responsive-collapse">
+    <ul class="nav navbar-nav navbar-right">
+      <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contents <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec0" style="font-size: 80%;"><b>A First Glimpse of Pysketcher</b></a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec1" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Basic Construction of Sketches</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec2" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Basic Drawing</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec3" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Groups of Objects</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec4" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Changing Line Styles and Colors</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec5" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Figure Composition as an Object Hierarchy</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#___sec6" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Animation: Translating the Vehicle</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher001.html#sketcher:vehicle1:anim" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Animation: Rolling the Wheels</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec8" style="font-size: 80%;"><b>Basic Shapes</b></a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec9" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Axis</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec10" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Distance with Text</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec11" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Rectangle</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec12" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Triangle</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec13" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Arc</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec14" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Spring</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec15" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Dashpot</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec16" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Wavy</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher002.html#___sec17" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Stochastic curves</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec18" style="font-size: 80%;"><b>Inner Workings of the Pysketcher Tool</b></a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec19" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Example of Classes for Geometric Objects</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec20" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Simple Geometric Objects</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec21" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class Curve</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec22" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compound Geometric Objects</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec23" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Adding Functionality via Recursion</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec24" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Basic Principles of Recursion</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec25" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Explaining Recursion</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#sketcher:scaling" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;Scaling, Translating, and Rotating a Figure</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec27" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scaling</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec28" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Translation</a></li>
+     <!-- navigation toc: --> <li><a href="._pysketcher003.html#___sec29" style="font-size: 80%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rotation</a></li>
+
+        </ul>
+      </li>
+    </ul>
+  </div>
+</div>
+</div> <!-- end of navigation bar -->
 
-<p>
+<div class="container">
+
+<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p> <!-- add vertical space -->
+
+<a name="part0000"></a>
 <!-- ------------------- main content ---------------------- -->
 
 
 
+<div class="jumbotron">
 <center><h1>Using Pysketcher to Create Principal Sketches of Physics Problems</h1></center>  <!-- document title -->
 
 <p>
@@ -138,8 +173,10 @@ MathJax.Hub.Config({
 
 <center>[1] <b>Center for Biomedical Computing, Simula Research Laboratory</b></center>
 <center>[2] <b>Department of Informatics, University of Oslo</b></center>
+<br>
 <p>
-<center><h4>Apr 27, 2015</h4></center> <!-- date -->
+<center><h4>Dec 22, 2015</h4></center> <!-- date -->
+<br>
 <p>
 
 <!-- begin box -->
@@ -179,17 +216,35 @@ no further background is required.
 <!-- which is just a part of this document... -->
 
 <p>
-<p>
-<!-- begin bottom navigation -->
-<table style="width: 100%"><tr><td>
-</td><td>
-<div style="text-align: right;"><a href="._pysketcher001.html"><img src="http://hplgit.github.io/doconce/bundled/html_images/next1.png" border=0 alt="Next &raquo;"></a></div>
-</td></tr></table>
-<!-- end bottom navigation -->
-</p>
 
+
+<p><a href="._pysketcher001.html" class="btn btn-primary btn-lg">Read &raquo;</a></p>
+
+
+</div> <!-- end jumbotron -->
+
+<p>
+<!-- navigation buttons at the bottom of the page -->
+<ul class="pagination">
+  <li class="active"><a href="._pysketcher000.html">1</a></li>
+  <li><a href="._pysketcher001.html">2</a></li>
+  <li><a href="._pysketcher002.html">3</a></li>
+  <li><a href="._pysketcher003.html">4</a></li>
+  <li><a href="._pysketcher001.html">&raquo;</a></li>
+</ul>
 <!-- ------------------- end of main content --------------- -->
 
+</div>  <!-- end container -->
+<!-- include javascript, jQuery *first* -->
+<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
+<script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
+
+<!-- Bootstrap footer
+<footer>
+<a href="http://..."><img width="250" align=right src="http://..."></a>
+</footer>
+-->
+
 
 </body>
 </html>

BIN
doc/pub/tutorial/pysketcher.pdf


+ 2 - 0
doc/src/tut/basics.do.txt

@@ -11,10 +11,12 @@ of a physics problem, here involving a rolling wheel on an inclined
 plane. The sketch
 # #else
 
+# #ifdef 2DO
 2DO:
  * two wheels of different radii on inclined plane coupled to
    correct solution
  * "Pygame backend": "http://inventwithpython.com/chapter17.html"
+# #endif
 
 ======= A First Glimpse of Pysketcher =======
 

+ 7 - 7
doc/src/tut/classes.do.txt

@@ -27,7 +27,7 @@ FIGURE: [fig-tut/Axis, width=500 frac=0.7]
 
 The corresponding code looks like this:
 
-@@@CODE ../../../pysketcher/shapes.py fromto: def test_Axis@drawing_tool.savefig\('tmp_Axis'\)
+@@@CODE ../../../pysketcher/tests/test_pysketcher.py fromto: def test_Axis@drawing_tool.savefig\('tmp_Axis'\)
 
 ===== Distance with Text =====
 
@@ -48,7 +48,7 @@ FIGURE: [fig-tut/Distance_wText, width=500 frac=0.7]
 
 was produced by this code:
 
-@@@CODE ../../../pysketcher/shapes.py fromto: def test_Distance_wText@drawing_tool.savefig\('tmp_Distance
+@@@CODE ../../../pysketcher/tests/test_pysketcher.py fromto: def test_Distance_wText@drawing_tool.savefig\('tmp_Distance
 Note the use of `Text_wArrow` to write an explaining text with an
 associated arrow, here used to explain how
 the `text_spacing` and `alignment` arguments can be used to adjust
@@ -63,7 +63,7 @@ FIGURE: [fig-tut/Rectangle, width=500 frac=0.7]
 
 The above figure can be produced by the following code.
 
-@@@CODE ../../../pysketcher/shapes.py fromto: def test_Rectangle@drawing_tool.savefig\('tmp_Rectangle
+@@@CODE ../../../pysketcher/tests/test_pysketcher.py fromto: def test_Rectangle@drawing_tool.savefig\('tmp_Rectangle
 
 Note that the `draw_dimension` method adds explanation of dimensions and various
 important argument in the construction of a shape. It adapts the annotations
@@ -78,7 +78,7 @@ FIGURE: [fig-tut/Triangle, width=500 frac=0.7]
 
 The code below produces the figure.
 
-@@@CODE ../../../pysketcher/shapes.py fromto: def test_Triangle@drawing_tool.savefig\('tmp_Triangle
+@@@CODE ../../../pysketcher/tests/test_pysketcher.py fromto: def test_Triangle@drawing_tool.savefig\('tmp_Triangle
 Here, the `draw_dimension` method writes the name of the corners at the
 position of the corners, which does not always look nice (the present figure
 is an example). For a high-quality sketch one would add some spacing
@@ -93,7 +93,7 @@ FIGURE: [fig-tut/Arc, width=400 frac=0.5]
 
 An arc like the one above is produced by
 
-@@@CODE ../../../pysketcher/shapes.py fromto: def test_Arc@drawing_tool.savefig\('tmp_Arc
+@@@CODE ../../../pysketcher/tests/test_pysketcher.py fromto: def test_Arc@drawing_tool.savefig\('tmp_Arc
 
 ===== Spring =====
 
@@ -104,7 +104,7 @@ FIGURE: [fig-tut/Spring, width=800 frac=1]
 
 The code for making these two springs goes like this:
 
-@@@CODE ../../../pysketcher/shapes.py fromto: def test_Spring@drawing_tool.savefig\('tmp_Spring
+@@@CODE ../../../pysketcher/tests/test_pysketcher.py fromto: def test_Spring@drawing_tool.savefig\('tmp_Spring
 
 ===== Dashpot =====
 
@@ -115,7 +115,7 @@ FIGURE: [fig-tut/Dashpot, width=600 frac=0.8]
 
 This dashpot is produced by
 
-@@@CODE ../../../pysketcher/shapes.py fromto: def test_Dashpot@drawing_tool.savefig\('tmp_Dashpot
+@@@CODE ../../../pysketcher/tests/test_pysketcher.py fromto: def test_Dashpot@drawing_tool.savefig\('tmp_Dashpot
 
 ===== Wavy =====
 

+ 5 - 0
doc/src/tut/main_sketcher.do.txt

@@ -1,4 +1,9 @@
+% if FORMAT == 'sphinx':
+# Sphinx can only have title with less than 63 chars...
+TITLE: Pysketcher: Create Principal Sketches of Physics Problems
+% else:
 TITLE: Using Pysketcher to Create Principal Sketches of Physics Problems
+% endif
 AUTHOR: Hans Petter Langtangen at Center for Biomedical Computing, Simula Research Laboratory & Department of Informatics, University of Oslo
 DATE: today
 

+ 20 - 12
doc/src/tut/make.sh

@@ -1,30 +1,37 @@
-#!/bin/sh
+#!/bin/bash
+
+function system {
+  "$@"
+  if [ $? -ne 0 ]; then
+    echo "make.sh: unsuccessful command $@"
+    echo "abort!"
+    exit 1
+  fi
+}
 
 # Run spellcheck
-doconce spellcheck -d .dict4spell.txt *.do.txt
+system doconce spellcheck -d .dict4spell.txt *.do.txt
 if [ $? -ne 0 ]; then
   echo "Abort due to misspellings."
   exit 1
 fi
 
 name=main_sketcher
-doconce format html $name
+system system doconce format html $name --html_output=${name}-draft
 
-#cp .ptex2tex.cfg-minted .ptex2tex.cfg
-doconce format pdflatex $name --skip_inline_comments --latex_code_style=pyg
-#ptex2tex -DMINTED $name
-pdflatex -shell-escape $name
-makeindex $name
+system doconce format pdflatex $name --skip_inline_comments --latex_code_style=pyg
+system pdflatex -shell-escape $name
+system makeindex $name
 pdflatex -shell-escape $name
 pdflatex -shell-escape $name
 cp $name.pdf pysketcher.pdf
 
 html=pysketcher
-doconce format html $name --skip_inline_comments --html_style=boostrap_bluegray --html_output=$html
-doconce split_html ${html}.html
+system doconce format html $name --skip_inline_comments --html_style=bootswatch_readable --html_output=$html
+system doconce split_html ${html}.html --pagination
 
-doconce format sphinx $name --skip_inline_comments
-doconce sphinx_dir copyright="H. P. Langtangen" version=0.1 theme=pyramid $name
+system doconce format sphinx $name --skip_inline_comments
+system doconce sphinx_dir theme=alabaster $name
 python automake_sphinx.py
 
 # Publish
@@ -33,3 +40,4 @@ name=pysketcher
 cp ${name}.html ._${name}*.html ${name}.pdf $dest/
 rm -rf $dest/html
 cp -r sphinx-rootdir/_build/html $dest/html
+cp -r fig-tut $dest

+ 39 - 0
doc/web/index.html

@@ -0,0 +1,39 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="chrome=1">
+    <title>pysketcher by hplgit</title>
+
+    <link rel="stylesheet" href="stylesheets/styles.css">
+    <link rel="stylesheet" href="stylesheets/github-dark.css">
+    <script src="javascripts/scale.fix.js"></script>
+    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+
+    <!--[if lt IE 9]>
+    <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+  </head>
+  <body>
+    <div class="wrapper">
+      <header>
+        <h1>Pysketcher</h1>
+        <p class="view"><a href="https://github.com/hplgit/pysketcher">View the Project on GitHub <small>hplgit/pysketcher</small></a></p>
+      </header>
+      <section>
+        <h1>Tutorial</h1>
+	<ul>
+	  <li><p> <a href="../pub/tutorial/pysketcher.pdf">LaTeX PDF</a>
+	  <li><p> <a href="../pub/tutorial/pysketcher.html">Bootstrap HTML</a>
+	  <li><p> <a href="../pub/tutorial/html/index.html">Sphinx HTML</a>
+	</ul>
+      </section>
+    </div>
+    <footer>
+      <p>Project maintained by <a href="https://github.com/hplgit">hplgit</a></p>
+      <p>Hosted on GitHub Pages &mdash; Theme by <a href="https://github.com/orderedlist">orderedlist</a></p>
+    </footer>
+    <!--[if !IE]><script>fixScale(document);</script><![endif]-->
+
+  </body>
+</html>

+ 0 - 0
index.html


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است