Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
Suggested homework problems are posted at [[Homework]].
*Tuesday, April 01
**Lecture
***[[Section 11.2: Series|lectures/section11-2.html]] [[(pdf)|lectures/section11-2.pdf]]
**Lab
***[[Investigating Sequence Convergence (mws)|labs/Lab - Investigating Sequence Convergence.mws]]
*Wednesday, April 02
**Section 11.2
*Thursday, April 03
**Lecture
***[[Section 11.3: The Integral Test|lectures/section11-3.html]] [[(pdf)|lectures/section11-3.pdf]]
*Friday, April 04
**Lab
***[[Practicing with Integral and Comparison Tests (pdf)|labs/Lab13PracticingWithIntegralAndComparisonTestsWorksheet.pdf]]
*Monday, April 07
**Lecture
***[[Section 11.4: The Comparison Tests|lectures/section11-4.html]] [[(pdf)|lectures/section11-4.pdf]]
*Tuesday, April 08
**Section 11.4
*Wednesday, April 09
**Review
*Thursday, April 10
**Review for Test 3
*Friday, April 11
**Test 3
*Monday, April 14
*Tuesday, April 15
**Debriefing
*Wednesday, April 16
**Lecture
***[[Section 11.5: Alternating Series|lectures/section11-5.html]] [[(pdf)|lectures/section11-5.pdf]]
*Thursday, April 17
**Lecture
***[[Section 11.6: Ratio and Root Tests|lectures/section11-6.html]] [[(pdf)|lectures/section11-6.pdf]]
**Lab
***[[Absolute and Conditional Convergence (pdf)|labs/Lab14AbsoluteConditionalConvergence.pdf]]
*Friday, April 18
**Lab
***[[Ratio and Root Tests (pdf)|labs/Lab14RatioRootTests.pdf]]
*Monday, April 21
**Lecture
***Section 11.7: Strategy for Testing Series
**Lab
***[[Series Test Flowchart (pdf)|labs/SeriesTestFlowChart.pdf]]
***[[Practicing with Series Tests (pdf)|labs/Lab15PracticingWithSeriesTests.pdf]] | [[Brief answers (pdf)|labs/mat162spring08PracticingWithSeriesTestsBriefAnswers.pdf]]
*Tuesday, April 22
**Lecture
***[[Section 11.8: Power Series|lectures/section11-8.html]] [[(pdf)|lectures/section11-8.pdf]]
**Lab
***[[Finding Convergence Sets (pdf)|labs/Lab15FindingConvergenceSets.pdf]]
*Wednesday, April 23
**[[Section 11.9: Representation of Functions as Power Series|lectures/section11-9.html]] [[(pdf)|lectures/section11-9.pdf]]
*Thursday, April 24
**Lecture
***[[Section 11.10: Taylor Polynomials|lectures/section11-10.html]] [[(pdf)|lectures/section11-10.pdf]]
**Lab
***[[Maclaurin Series (mws)|labs/Lab - Maclaurin Series.mws]]
*Friday, April 25
**Review
*Monday, April 28
**Last day of classes
*Tuesday, April 29
**Reading Day
*Friday, May 2
**Final Exam, 8:00-11:00
*Instructor
**Dr. Michael Freeze
*Phone
**910.795.1385
*Email
**freezem at uncw dot edu
!Texts
//Calculus: Early Transcendentals, 5th edition//, by James Stewart.
!Course Content
We will cover Chapters 7 through 11 of the text. The course material is comprised of four major topics: techniques and applications of integration, differential equations, parametric curves and infinite sequences and series.
!Computer Use
This course will make use of the Maple software package as an aid in the visualization and manipulation of calculus concepts. You are not expected to know how to use Maple prior to this course. Some assignments may require use of a computer. A Bear Hall computer lab may be open for student use in the evening; an exact schedule will be announced when available.
!Attendance
You are expected to attend class on time each day. Attendance will be recorded on a regular basis.
!Tests, Homework, and Quizzes
Three classroom tests and a comprehensive final exam will be given. Homework problems will be suggested and short, unannounced quizzes may also be given occasionally. There will be no make-ups for graded assignments without prior permission.
!Grading
Each of your three tests and your final exam will contribute 20% toward your grade. Your combined homework and quiz scores will determine the remaining 20% of your grade. !Plus/Minus Grading
A plus or minus may be used as a possible grade modifier, for final grades only, at the end of the semester. Factors that influence the judgment to assign a + or – (or neither) are: performance on the final exam, consistency of performance throughout the semester, proximity to a grade borderline, class participation and effort.
!Academic Honesty
All students are expected to read and abide by the Academic Honor Code the Student Handbook. Collaborative work is encouraged in general, but all work which is to be handed in must be written up individually. Clear instructions will be given with each assignment. !Incompletes
A grade of I (incomplete) is given only if documented circumstances beyond the student’s control (e.g., medical, legal) render the student unable to complete the course work, and only if there is a reasonable possibility of passing the course. The grade I is not given for simply failing to meet the course requirements.
!Students with Disabilities
If you have a disability and need reasonable accommodation in this course, you should inform the instructor of this fact in writing within the first week of class or as soon as possible. If you have not already done so, you must register with the Office of Disability Services in Westside Hall (extension 7555) and obtain a copy of your Accommodation Letter. You should then meet with your instructor to make mutually agreeable arrangements based on the recommendations of the Accommodation Letter.
*Friday, February 01
**Test 1
*Monday, February 04
**[[Section 7.8: Improper Integrals|lectures/section7-8.html]] [[(pdf)|lectures/section7-8.pdf]]
*Tuesday, February 05
**Section 7.8
*Wednesday, February 06
**Debriefing
*Thursday, February 07
**Lecture
***[[Section 8.1: Arc Length|lectures/section8-1.html]] [[(pdf)|lectures/section8-1.pdf]]
**Lab
***[[Finding Arc Length (mws)|labs/Lab - Arclength.mws]]
*Friday, February 08
**Lecture
***[[Section 8.2: Area of a Surface of Revolution|lectures/section8-2.html]] [[(pdf)|lectures/section8-2.pdf]]
**Lab
***[[Parametric Arc Length and Surface Area (mws)|labs/Lab - Parametric Arclength and Surface Area.mws]]
*Monday, February 11
**Section 8.2
*Tuesday, February 12
**[[Section 8.3: Applications to Physics and Engineering|lectures/section8-3.html]]
*Wednesday, February 13
**Section 8.4: Applications to Economics and Biology
*Thursday, February 14
**Section 8.5: Probability
*Friday, February 15
**Section 8.5
*Monday, February 18
**[[Section 9.1: Modeling with Differential Equations|lectures/section9-1.html]] [[(pdf)|lectures/section9-1.pdf]]
*Tuesday, February 19
**Section 9.1
*Wednesday, February 20
**Lecture
***[[Section 9.2: Direction Fields and Euler's Method|lectures/section9-2.html]] [[(pdf)|lectures/section9-2.pdf]]
**Lab
***[[Euler's Method (mws)|labs/Lab - Eulers Method.mws]]
*Thursday, February 21
**[[Section 9.3: Separable Equations|lectures/section9-3.html]] [[(pdf)|lectures/section9-3.pdf]]
*Friday, February 22
**[[Section 9.4: Exponential Growth and Decay|lectures/section9-4.html]] [[(pdf)|lectures/section9-4.pdf]]
*Monday, February 25
**[[Section 9.5: The Logistic Equation|lectures/section9-5.html]] [[(pdf)|lectures/section9-5.pdf]]
*Tuesday, February 26
**Lecture
***[[Section 9.6: Linear Equations|lectures/section9-6.html]] [[(pdf)|lectures/section9-6.pdf]]
**Lab
***[[First Order Linear Differential Equations (mws)|labs/Lab - First Order Linear Differential Equations.mws]]
***[[Mixture Models (pdf)|labs/Lab9LinearFirstOrderDiffEqAndMixtureModels.pdf]]
*Wednesday, February 27
**Section 9.6
*Thursday, February 28
**Review for Test 2
*Friday, February 29
**Test 2
<<slideShow>>
-s-
!History of Mathematics
Why study the history of mathematics?
-s-
!Pertinence
"It is interesting and pertinent that ... a true appreciation of a branch of mathematics is impossible without some acquaintance with the history of that branch, for mathematics is largely a study of ideas, and a genuine understanding of ideas is not possible without an analysis of origins." (Howard Eves)
"I am sure that no subject loses more than mathematics by any attempt to dissociate it from its history." (J.W.L. Glaisher)
-s-
!Organization of Study
How do we organize our study of the history of mathematics?
*Personalities
*Cultures
*Problems
*Theorems
*Issues
-s-
!Early Mathematical Periods
*Egyptian and Babylonian
**3000 BC - 260 AD
*Greek
**600 BC - 450 AD
*Chinese
**1030 BC - 1644 AD
*Hindu
**200 BC - 1250 AD
*Arabian
**650 - 1200 AD
-s-
!Late Mathematical Periods
*Dark Ages
**450 - 1120 AD
*Middle Ages
**950 - 1500 AD
*Renaissance
**1450 - 1700 AD
*Modern
**1700 AD - present
-s-
!Guidance of Study
What questions should we ask about historical sources?
*Context
**"Where does it come from?"
*Content
**"What is it about?"
*Significance
**"Why is it important?"
-s-
!Context and Content: Egyptian and Babylonian Period
*Practical problems of central government
**Agriculture
**Surveying
**Taxation
**Trade
*Training of leaders
-s-
!Context and Content: Greek Period
*Intellectual interest
**Geometry
**Astronomy
**Mechanics
-s-
!Context and Content: Chinese Period
*Empire administration
**Agriculture
**Business
**Engineering
**Surveying
-s-
!Context and Content: Hindu Period
*Arithmetic algorithms
*Numeral system
*Zero symbol
*Negative numbers
-s-
!Context and Content: Arabian Period
*Astronomy and spherical trigonometry
*Ornamentation
-s-
!Context and Content: Middle Ages
*Cathedral schools
*Trade and arithmetic
-s-
!Context and Content: Renaissance
*Commerce
**Navigation
**Banking
*Symbolism
*Kinematics
-s-
!Context and Content: Modern Period
*Representation
**number
**function
*Foundations
**Construction of real numbers
**Set theory
*Non-Euclidean Geometry
*Abstract spaces
-s-
!Issues of Significance
*Encoding of knowledge
**Short-term
**Mid-term
**Long-term
*Conceptual Framework
**Number
**Approximate versus exact
**Geometry
**Algebra
**Set
*Limits of knowledge
**Algorithm versus demonstration
**Classification and certainty
**Creation versus discovery
*Section 7.1: 3,10,12,34,52,60
*Section 7.2: 1,2,10,14,15
*Section 7.3: 4,5,9
*Section 7.4: 1,4,7,10,12
*Section 7.7: 3,11,21,30
*Section 7.8: 2,5,6,10,14,17,29,49
*Section 8.1: 2,7,24,29
*Section 8.2: 2,5,20,25
*Section 9.1: 1,5,8,9,11,14
*Section 9.2: 1,3,4,5,6,12
*Section 9.3: 4,6,13,22,32,42
*Section 9.4: 4,5,16,22
*Section 9.5: 1,4,5,7,13
*Section 9.6: 8,9,15,29
*Section 9.7: 2,3,4
*Section 17.1: 1,2,5,14,15,17,26
*Section 17.2: 1,2,3,12,20,26
*Section 10.1: 2,3,6,11,24,26,28,44
*Section 10.2: 5,8,13,36,43
*Section 10.3: 9,16,22,29,40,48,54
*Section 11.1: 2,5,7,9,17,24,50,65
*Section 11.2: 1,9,41,43,51,65
*Section 11.3: 3,5,11,28
*Section 11.4: 1,2,3,6,17
*Section 11.5: 7,8,24,35
*Section 11.6: 3,4,8,29
*Section 11.7: 2,3,8,37,38
*Section 11.8: 2,7,12,23,30
*Section 11.9: 3,4,9,13,35
*Section 11.10: 8,9,11,21,37,43
*Section 11.12: 2,5,23,28
/%
*Due Friday, January 18
**Write out the complete set of steps (including choice of u and dv, computation of du and v, and application of parts formula) for problems 8,9,10 in the worksheet [[Integration by Parts|labs/Lab - Integration by Parts.pdf]]
*Due Wednesday, January 16
**Write out the complete set of steps (including the choice of u-substitution, computation of du, and transformation of the x-integral into a u-integral) for each problem in the worksheet [[Integration by Substitution|labs/intsubs.pdf]].
%/
*Wednesday, January 09
**Lecture
***[[Section 3.1: Derivatives of Polynomials and Exponential Functions|lectures/section3-1.html]] [[(pdf)|lectures/section3-1.pdf]]
*Thursday, January 10
**Lecture
***[[Section 3.2: The Product and Quotient Rules|lectures/section3-2.html]] [[(pdf)|lectures/section3-2.pdf]]
**Lab
***[[Introduction to Maple and Symbolic Manipulation (pdf)|labs/Lab0IntroToMaple.pdf]]
*Friday, January 11
**Lecture
***[[Section 5.3: The Fundamental Theorem of Calculus (mws)|lectures/section5-3lec.mws]] [[(pdf)|lectures/ftc.pdf]]
*Monday, January 14
**Lecture
***[[Section 5.5: The Substitution Rule|lectures/section5-5.html]] [[(pdf)|lectures/section5-5.pdf]]
*Tuesday, January 15
**Lecture
***Section 5.5
**Lab
***[[Basic Integral Forms (pdf)|labs/ma162summer06BasicForms.pdf]]
***[[Integration by Substitution (mws)|labs/Lab - Integration by Substitution.mws]] [[(pdf)|labs/intsubs.pdf]]
****[[Integration by Substitution Answers (mws)|labs/Lab - Integration by Substitution Answers.mws]] [[(pdf)|labs/Lab - Integration by Substitution Answers.pdf]]
***[[More Integration by Substitution|labs/IntegrationBySubstitution.html]] [[(pdf)|labs/IntegrationBySubstitutionAgain.pdf]]
*Wednesday, January 16
**Lecture
***[[Section 7.1: Integration by Parts|lectures/section7-1.html]] [[(pdf)|lectures/section7-1.pdf]]
*Thursday, January 17
**Lecture
***[[Section 7.2: Trigonometric Integrals|lectures/section7-2.html]] [[(pdf)|lectures/section7-2.pdf]]
**Lab
***[[Integration by Parts (mws)|labs/Lab - Integration by Parts.mws]] [[(pdf)|labs/Lab - Integration by Parts.pdf]]
*Friday, January 18
**Lecture
***Section 7.2
*Monday, January 21
**Martin Luther King Day
*Tuesday, January 22
**Lecture
***[[Section 7.3: Trigonometric Substitution|lectures/section7-3.html]] [[(pdf)|lectures/section7-3.pdf]]
**Lab
***[[Integrating Quadratic Radical Functions (pdf)|labs/TrigonometricSubstitution.pdf]]
****[[Integrating Quadratic Radical Functions Answers (pdf)|labs/TrigonometricSubstitutionAnswers.pdf]]
*Wednesday, January 23
**Lecture
***Section 7.3
*Thursday, January 24
**Lecture
***[[Section 7.4: Partial Fractions|lectures/section7-4.html]] [[(pdf)|lectures/section7-4.pdf]]
**Lab
***[[Integrating Rational Functions (mws)|labs/Lab - Integrating Rational Functions.mws]] [[(pdf)|labs/Lab - Integrating Rational Functions.pdf]]
*Friday, January 25
**Lecture
***Section 7.4
*Monday, January 28
**Lecture
***[[Section 7.5: Strategy for Integration|lectures/section7-5.html]] [[(pdf)|lectures/section7-5.pdf]]
*Tuesday, January 29
**Lecture
***[[Section 7.7: Approximate Integration|lectures/section7-7.html]] [[(pdf)|lectures/section7-7.pdf]]
**Lab
***[[Integrating Approximately (mws)|labs/Lab - Approximate Integration.mws]]
***[[Comparison of Approximate Integration Methods|labs/ComparisonOfApproximateIntegrationMethodsApplet.html]]
*Wednesday, January 30
**Lecture
***Section 7.7
*Thursday, January 31
**Review for Test 1
*Tuesday, January 15
**[[Integration by Substitution Lab Answers (mws)|labs/Lab - Integration by Substitution Answers.mws]]
The University Learning Center, located on the first floor of Westside Hall, provides tutoring for basic studies mathematics and statistics courses. Math Services also provides course-specific review and problem sessions, and help with math study skills and math anxiety.
No appointment is needed during open lab hours.
Web: [[www.uncw.edu/stuaff/uls|http://www.uncw.edu/stuaff/uls/]]
Phone: 910.962.7857
Email: ULC at uncw dot edu
*Limits and Derivatives
**[[The Limit of a Function|lectures/class/section2-2.html]]
**[[Calculating Limits Using the Limit Laws|lectures/class/section2-3.html]]
**[[The Precise Definition of Limit|lectures/class/section2-4.html]]
**[[Continuity|lectures/class/section2-5.html]]
**[[Limits at Infinity: Horizontal Asymptotes|lectures/class/section2-6.html]]
**[[Tangents, Velocities, and Other Rates of Change|lectures/class/section2-7.html]]
**[[Derivatives|lectures/class/section2-8.html]]
*Differentiation Rules
**[[Derivatives of Polynomials and Exponential Functions|lectures/class/section3-1.html]]
**[[Derivatives of Products, Quotients, and Negative Powers|lectures/class/section3-2.html]]
**[[Rates of Change in the Natural and Social Sciences|lectures/class/section3-3.html]]
**[[Derivatives of Trigonometric Functions|lectures/class/section3-4.html]]
**[[The Chain Rule|lectures/class/section3-5.html]]
**[[Implicit Differentiation|lectures/class/section3-6.html]]
**[[Derivatives of Logarithmic Functions|lectures/class/section3-8.html]]
**[[Related Rates|lectures/class/section3-10.html]]
**[[Linear Approximations and Differentials|lectures/class/section3-11.html]]
*Applications of Differentiation
**[[Maximum and Minimum Values|lectures/class/section4-1.html]]
**[[The Mean Value Theorem|lectures/class/section4-2.html]]
**[[How Derivatives Affect the Shape of a Graph|lectures/class/section4-3.html]]
**[[Indeterminate Forms and L'Hospital's Rule|lectures/class/section4-4.html]]
**[[Summary of Curve Sketching|lectures/class/section4-5.html]]
**[[Optimization Problems|lectures/class/section4-7.html]]
**[[Application to Business and Economics|lectures/class/section4-8.html]]
*Integrals
**[[The Substitution Rule|lectures/class/section5-5.html]]
**[[The Logarithm Defined as an Integral|lectures/class/section5-6.html]]
*Applications of Integration
**[[Areas Between Curves|lectures/class/section6-1.html]]
**[[Volumes|lectures/class/section6-2.html]]
**[[Volumes by Cylindrical Shells|lectures/class/section6-3.html]]
Fonts can be found [[here|http://web.mit.edu/ist/topics/webpublishing/mathml/index.html]].
[[Lecture Notes]]
[[Maple Lectures]]
[[Maple Labs]]
[[Projects]]
[[Practice Tests]]
[[Contact Information]]
[[Learning Center]]
<<toggleSideBar '' '' hide>>
^^TiddlyWiki <<version>>
© 2007 [[UnaMesa|http://www.unamesa.org/]]^^
/%
[[Homework]]
[[Course Policies]]
%/
*Functions and Models
**[[Graphing Functions (mws)|labs/MapleLab-GraphingFunctions.mws]]
*Limits and Derivatives
**[[Limits (mws)|labs/MapleLab-Limits.mws]]
**[[Rational Limits (mws)|labs/MapleLab-RationalLimits.mws]]
**[[The Precise Definition of Limit (mws)|labs/MapleLab-PreciseLimitDefinition.mws]]
**[[Differentiation (mws)|labs/MapleLab-Differentiation.mws]]
*Differentiation Rules
**[[Product Rule (mws)|labs/MapleLab-ProductRule.mws]]
**[[Implicit Differentiation (mws)|labs/MapleLab-ImplicitDifferentiation.mws]]
*Applications of Differentiation
**[[Linear Approximation (mws)|labs/MapleLab-LinearApproximation.mws]]
**[[Mean Value Theorem (mws)|labs/MapleLab-MeanValueTheorem.mws]]
**[[Graphing with Calculus (mws)|labs/MapleLab-GraphingWithCalculus.mws]]
**[[Extreme Values on Closed Intervals (mws)|labs/MapleLab-MaxMinClosedInterval.mws]]
**[[Newton's Method (mws)|labs/MapleLab-NewtonsMethod.mws]]
*Integrals
**[[Riemann Sums (mws)|labs/MapleLab-RiemannSums.mws]]
**[[Fundamental Theorem of Calculus (mws)|labs/MapleLab-FundamentalTheoremOfCalculus.mws]]
*Applications of Integration
**[[Visualizing Volumes of Revolution (mws)|labs/MapleLab-VisualizingVolumesOfRevolution.mws]]
**[[Surfaces of Revolution (mws)|labs/MapleLab-SurfacesOfRevolution.mws]]
**[[Volumes of Revolution (mws)|labs/MapleLab-VolumesOfRevolution.mws]]
**[[Averages (mws)|labs/MapleLab-Averages.mws]]
*Functions and Models
**[[Four Ways to Represent a Function (mws)|lectures/maple/c1s1ver1.mws]]
**[[Mathematical Models (mws)|lectures/maple/c1s2ver1.mws]]
**[[New Functions from Old Functions (mws)|lectures/maple/c1s3ver1.mws]]
**[[Graphing Calculators and Computers (mws)|lectures/maple/c1s4ver1.mws]]
**[[Exponential Functions (mws)|lectures/maple/c1s5ver1.mws]]
**[[Inverse Functions and Logarithms (mws)|lectures/maple/c1s6ver1.mws]]
*Limits and Derivatives
**[[The Tangent and Velocity Problems (mws)|lectures/maple/c2s1ver1.mws]]
**[[The Limit of a Function (mws)|lectures/maple/c2s2ver1.mws]]
**[[Calculating Limits Using the Limit Laws (mws)|lectures/maple/c2s3ver1.mws]]
**[[Continuity (mws)|lectures/maple/c2s5ver1.mws]]
**[[Limits at Infinity; Horizontal Asymptotes (mws)|lectures/maple/c2s6ver1.mws]]
**[[Tangents, Velocities, and Other Rates of Change (mws)|lectures/maple/c2s7ver1.mws]]
**[[Derivatives (mws)|lectures/maple/c2s8ver1.mws]]
**[[The Derivative as a Function (mws)|lectures/maple/c2s9ver1.mws]]
*Differentiation Rules
**[[Related Rates (mws)|lectures/maple/c3s10ver1.mws]]
**[[Derivatives of Polynomials and Exponential Functions (mws)|lectures/maple/c3s1ver1.mws]]
**[[The Product and Quotient Rules (mws)|lectures/maple/c3s2ver1.mws]]
**[[Rates of Change in the Natural and Social Sciences (mws)|lectures/maple/c3s3ver1.mws]]
**[[Derivatives of Trigonometric Functions (mws)|lectures/maple/c3s4ver1.mws]]
**[[The Chain Rule (mws)|lectures/maple/c3s5ver1.mws]]
**[[Implicit Differentiation (mws)|lectures/maple/c3s6ver1.mws]]
**[[Higher Derivatives (mws)|lectures/maple/c3s7ver1.mws]]
**[[Derivatives of Logarithmic Functions (mws)|lectures/maple/c3s8ver1.mws]]
*Applications of Differentiation
**[[Antiderivatives (mws)|lectures/maple/c4s10ver1.mws]]
**[[Maximum and Minimum Values (mws)|lectures/maple/c4s1ver1.mws]]
**[[The Mean Value Theorem (mws)|lectures/maple/c4s2ver1.mws]]
**[[How Derivatives Affect the Shape of a Graph (mws)|lectures/maple/c4s3ver1.mws]]
**[[Indeterminate Forms and L'Hopital's Rule (mws)|lectures/maple/c4s4ver1.mws]]
**[[Summary of Curve Sketching (mws)|lectures/maple/c4s5ver1.mws]]
**[[Graphing with Calculus and Calculators (mws)|lectures/maple/c4s6ver1.mws]]
**[[Optimization Problems (mws)|lectures/maple/c4s7ver1.mws]]
**[[Newton's Method (mws)|lectures/maple/c4s9ver1.mws]]
*Integrals
**[[Areas and Distances (mws)|lectures/maple/c5s1ver1.mws]]
**[[The Definite Integral (mws)|lectures/maple/c5s2ver1.mws]]
**[[The Fundamental Theorem of Calculus (mws)|lectures/maple/c5s3ver1.mws]]
**[[The Substitution Rule (mws)|lectures/maple/c5s5ver1.mws]]
**[[The Logarithm Defined as an Integral (mws)|lectures/maple/c5s6ver1.mws]]
*Applications of Integration
**[[Areas between Curves (mws)|lectures/maple/c6s1ver1.mws]]
**[[Volumes (mws)|lectures/maple/c6s2ver1.mws]]
**[[Volumes by Cylindrical Shells (mws)|lectures/maple/c6s3ver1.mws]]
*Monday, March 03
**Spring Vacation
*Tuesday, March 04
**Spring Vacation
*Wednesday, March 05
**Spring Vacation
*Thursday, March 06
**Spring Vacation
*Friday, March 07
**Spring Vacation
*Monday, March 10
**Debriefing
*Tuesday, March 11
**[[Section 17.1: Second Order Linear Equations|lectures/section17-1.html]] [[(pdf)|lectures/section17-1.pdf]]
*Wednesday, March 12
**Section 17.1
*Thursday, March 13
**Section 17.2: Nonhomogeneous Linear Equations
*Friday, March 14
**Section 17.2
*Monday, March 17
**[[Section 10.1: Parametric Curves|lectures/section10-1.html]] [[(pdf)|lectures/section10-1.pdf]]
*Tuesday, March 18
**Lecture
***Section 10.1
**Lab
***[[Visualization Applet|labs/xfunctions.html]]
***[[Visualizing Parametric Curves (pdf)|labs/LabVisualizingParametricEquations.pdf]]
***[[Sketching Parametric Curves (mws)|labs/Lab - Sketching Parametric Curves.mws]]
*Wednesday, March 19
**Lecture
***[[Section 10.2: Calculus with Parametric Curves|lectures/section10-2.html]] [[(pdf)|lectures/section10-2.pdf]]
**Lab
***[[Parametric Arclength and Surface Area (mws)|labs/Lab - Parametric Arclength and Surface Area.mws]]
*Thursday, March 20
**State Holiday
*Friday, March 21
**Good Friday
*Monday, March 24
**[[Section 10.3: Polar Coordinates|lectures/section10-3.html]] [[(pdf)|lectures/section10-3.pdf]]
*Tuesday, March 25
**Lecture
***Section 10.3
**Lab
***[[Polar Graphs (mws)|labs/Lab - Polar Graphs.mws]]
*Wednesday, March 26
**[[Section 10.4: Areas and Lengths in Polar Coordinates|lectures/section10-4.html]] [[(pdf)|lectures/section10-4.pdf]]
*Thursday, March 27
**Lecture
***Section 10.4
**Lab
***[[Polar Area and Arclength (mws)|labs/Lab - Polar Area and Arclength.mws]] [[(pdf)|labs/PolarAreaAndArclength.pdf]]
*Friday, March 28
**[[Section 11.1: Sequences|lectures/section11-1.html]] [[(pdf)|lectures/section11-1.pdf]]
*Monday, March 31
**Section 11.1
//{{{
window.createTiddlerViewer_original_MathPlugin = window.createTiddlerViewer;
window.createTiddlerViewer=function(title,highlightText,highlightCaseSensitive) {
window.createTiddlerViewer_original_MathPlugin(title,highlightText,highlightCaseSensitive);
var theViewer = document.getElementById("viewer"+title);
if (theViewer) {
if (jsMath.ConvertTeX) {
jsMath.ConvertTeX(theViewer);
jsMath.ProcessBeforeShowing(theViewer);
}
if (AMprocessNode) AMprocessNode(theViewer,false);
if (drawPictures) setTimeout('drawPictures()',100);
}
}
//}}}
*Test 1
**Friday, February 1
*Test 2
**Friday, February 29
*Test 3
**Friday, April 11
*Final Exam
**Friday, May 2, 8:00-11:00a
/***
|Name|Plugin: jsMath|
|Created by|BobMcElrath|
|Email|my first name at my last name dot org|
|Location|http://bob.mcelrath.org/tiddlyjsmath.html|
|Version|1.5.1|
|Requires|[[TiddlyWiki|http://www.tiddlywiki.com]] ≥ 2.0.3, [[jsMath|http://www.math.union.edu/~dpvc/jsMath/]] ≥ 3.0|
!Description
LaTeX is the world standard for specifying, typesetting, and communicating mathematics among scientists, engineers, and mathematicians. For more information about LaTeX itself, visit the [[LaTeX Project|http://www.latex-project.org/]]. This plugin typesets math using [[jsMath|http://www.math.union.edu/~dpvc/jsMath/]], which is an implementation of the TeX math rules and typesetting in javascript, for your browser. Notice the small button in the lower right corner which opens its control panel.
!Installation
In addition to this plugin, you must also [[install jsMath|http://www.math.union.edu/~dpvc/jsMath/download/jsMath.html]] on the same server as your TiddlyWiki html file. If you're using TiddlyWiki without a web server, then the jsMath directory must be placed in the same location as the TiddlyWiki html file.
I also recommend modifying your StyleSheet use serif fonts that are slightly larger than normal, so that the math matches surrounding text, and \\small fonts are not unreadable (as in exponents and subscripts).
{{{
.viewer {
line-height: 125%;
font-family: serif;
font-size: 12pt;
}
}}}
If you had used a previous version of [[Plugin: jsMath]], it is no longer necessary to edit the main tiddlywiki.html file to add the jsMath <script> tag. [[Plugin: jsMath]] now uses ajax to load jsMath.
!History
* 11-Nov-05, version 1.0, Initial release
* 22-Jan-06, version 1.1, updated for ~TW2.0, tested with jsMath 3.1, editing tiddlywiki.html by hand is no longer necessary.
* 24-Jan-06, version 1.2, fixes for Safari, Konqueror
* 27-Jan-06, version 1.3, improved error handling, detect if ajax was already defined (used by ZiddlyWiki)
* 12-Jul-06, version 1.4, fixed problem with not finding image fonts
* 26-Feb-07, version 1.5, fixed problem with Mozilla "unterminated character class".
* 27-Feb-07, version 1.5.1, Runs compatibly with TW 2.1.0+, by Bram Chen
!Examples
|!Source|!Output|h
|{{{The variable $x$ is real.}}}|The variable $x$ is real.|
|{{{The variable \(y\) is complex.}}}|The variable \(y\) is complex.|
|{{{This \[\int_a^b x = \frac{1}{2}(b^2-a^2)\] is an easy integral.}}}|This \[\int_a^b x = \frac{1}{2}(b^2-a^2)\] is an easy integral.|
|{{{This $$\int_a^b \sin x = -(\cos b - \cos a)$$ is another easy integral.}}}|This $$\int_a^b \sin x = -(\cos b - \cos a)$$ is another easy integral.|
|{{{Block formatted equations may also use the 'equation' environment \begin{equation} \int \tan x = -\ln \cos x \end{equation} }}}|Block formatted equations may also use the 'equation' environment \begin{equation} \int \tan x = -\ln \cos x \end{equation}|
|{{{Equation arrays are also supported \begin{eqnarray} a &=& b \\ c &=& d \end{eqnarray} }}}|Equation arrays are also supported \begin{eqnarray} a &=& b \\ c &=& d \end{eqnarray} |
|{{{I spent \$7.38 on lunch.}}}|I spent \$7.38 on lunch.|
|{{{I had to insert a backslash (\\) into my document}}}|I had to insert a backslash (\\) into my document|
!Code
***/
//{{{
// AJAX code adapted from http://timmorgan.org/mini
// This is already loaded by ziddlywiki...
if(typeof(window["ajax"]) == "undefined") {
ajax = {
x: function(){try{return new ActiveXObject('Msxml2.XMLHTTP')}catch(e){try{return new ActiveXObject('Microsoft.XMLHTTP')}catch(e){return new XMLHttpRequest()}}},
gets: function(url){var x=ajax.x();x.open('GET',url,false);x.send(null);return x.responseText}
}
}
// Load jsMath
jsMath = {
Setup: {inited: 1}, // don't run jsMath.Setup.Body() yet
Autoload: {root: new String(document.location).replace(/[^\/]*$/,'jsMath/')} // URL to jsMath directory, change if necessary
};
var jsMathstr;
try {
jsMathstr = ajax.gets(jsMath.Autoload.root+"jsMath.js");
} catch(e) {
alert("jsMath was not found: you must place the 'jsMath' directory in the same place as this file. "
+"The error was:\n"+e.name+": "+e.message);
throw(e); // abort eval
}
try {
window.eval(jsMathstr);
} catch(e) {
alert("jsMath failed to load. The error was:\n"+e.name + ": " + e.message + " on line " + e.lineNumber);
}
jsMath.Setup.inited=0; // allow jsMath.Setup.Body() to run again
// Define wikifers for latex
config.formatterHelpers.mathFormatHelper = function(w) {
var e = document.createElement(this.element);
e.className = this.className;
var endRegExp = new RegExp(this.terminator, "mg");
endRegExp.lastIndex = w.matchStart+w.matchLength;
var matched = endRegExp.exec(w.source);
if(matched) {
var txt = w.source.substr(w.matchStart+w.matchLength,
matched.index-w.matchStart-w.matchLength);
if(this.keepdelim) {
txt = w.source.substr(w.matchStart, matched.index+matched[0].length-w.matchStart);
}
e.appendChild(document.createTextNode(txt));
w.output.appendChild(e);
w.nextMatch = endRegExp.lastIndex;
}
}
config.formatters.push({
name: "displayMath1",
match: "\\\$\\\$",
terminator: "\\\$\\\$\\n?", // 2.0 compatability
termRegExp: "\\\$\\\$\\n?",
element: "div",
className: "math",
handler: config.formatterHelpers.mathFormatHelper
});
config.formatters.push({
name: "inlineMath1",
match: "\\\$",
terminator: "\\\$", // 2.0 compatability
termRegExp: "\\\$",
element: "span",
className: "math",
handler: config.formatterHelpers.mathFormatHelper
});
var backslashformatters = new Array(0);
backslashformatters.push({
name: "inlineMath2",
match: "\\\\\\\(",
terminator: "\\\\\\\)", // 2.0 compatability
termRegExp: "\\\\\\\)",
element: "span",
className: "math",
handler: config.formatterHelpers.mathFormatHelper
});
backslashformatters.push({
name: "displayMath2",
match: "\\\\\\\[",
terminator: "\\\\\\\]\\n?", // 2.0 compatability
termRegExp: "\\\\\\\]\\n?",
element: "div",
className: "math",
handler: config.formatterHelpers.mathFormatHelper
});
backslashformatters.push({
name: "displayMath3",
match: "\\\\begin\\{equation\\}",
terminator: "\\\\end\\{equation\\}\\n?", // 2.0 compatability
termRegExp: "\\\\end\\{equation\\}\\n?",
element: "div",
className: "math",
handler: config.formatterHelpers.mathFormatHelper
});
// These can be nested. e.g. \begin{equation} \begin{array}{ccc} \begin{array}{ccc} ...
backslashformatters.push({
name: "displayMath4",
match: "\\\\begin\\{eqnarray\\}",
terminator: "\\\\end\\{eqnarray\\}\\n?", // 2.0 compatability
termRegExp: "\\\\end\\{eqnarray\\}\\n?",
element: "div",
className: "math",
keepdelim: true,
handler: config.formatterHelpers.mathFormatHelper
});
// The escape must come between backslash formatters and regular ones.
// So any latex-like \commands must be added to the beginning of
// backslashformatters here.
backslashformatters.push({
name: "escape",
match: "\\\\.",
handler: function(w) {
w.output.appendChild(document.createTextNode(w.source.substr(w.matchStart+1,1)));
w.nextMatch = w.matchStart+2;
}
});
config.formatters=backslashformatters.concat(config.formatters);
window.wikify = function(source,output,highlightRegExp,tiddler)
{
if(source && source != "") {
if(version.major == 2 && version.minor > 0) {
var wikifier = new Wikifier(source,getParser(tiddler),highlightRegExp,tiddler);
wikifier.subWikifyUnterm(output);
} else {
var wikifier = new Wikifier(source,formatter,highlightRegExp,tiddler);
wikifier.subWikify(output,null);
}
jsMath.ProcessBeforeShowing();
}
}
//}}}
*Summer 2004
**[[Test 1 (pdf)|tests/mat161summer04PracticeProblemsTest1.pdf]]
**[[Test 2 (pdf)|tests/mat161summer04PracticeProblemsTest2.pdf]]
**[[Test 3 (pdf)|tests/mat161summer04PracticeProblemsTest3.pdf]]
**[[Test 4 (pdf)|tests/mat161summer04PracticeProblemsTest4.pdf]]
**[[Final Exam (pdf)|tests/mat161summer04PracticeProblemsFinalExam.pdf]]
**[[Final Exam Supplement (pdf)|tests/mat161summer04PracticeProblemsFinalExamSupplemental.pdf]]
*Written Projects
**[[Clearing the Hill (pdf)|projects/Project-ClearingTheHill.pdf]]
**[[Consumer Approval (pdf)|projects/Project-ConsumerApproval.pdf]]
**[[Finding Limits (pdf)|projects/Project-FindingLimits.pdf]]
**[[Graphing with the Derivative (pdf)|projects/Project-GraphingWithTheDerivative.pdf]]
**[[Implicit Differentiation (pdf)|projects/Project-ImplicitDifferentiation.pdf]]
**[[Linear Approximation (pdf)|projects/Project-LinearApproximation-B.pdf]]
**[[Maximum and Minimum Values (pdf)|projects/Project-MaximumAndMinimumValues.pdf]]
**[[Practice with Areas (pdf)|projects/Project-PracticeWithAreas.pdf]]
**[[The Twin Problem (pdf)|projects/Project-TheTwinProblem.pdf]]
**[[The Weighty Chain (pdf)|projects/Project-TheWeightyChain.pdf]]
**[[Volumes of Revolution (pdf)|projects/Project-VolumesOfRevolution.pdf]]
*Maple Projects
**[[Differentiation (pdf)|projects/MapleProject-Differentiation.pdf]]
**[[Graphing Functions (pdf)|projects/MapleProject-GraphingFunctions.pdf]]
**[[Linear Approximation (pdf)|projects/MapleProject-LinearApproximation.pdf]]
**[[The Mean Value Theorem (pdf)|projects/MapleProject-MeanValueTheorem.pdf]]
**[[Newton's Method (pdf)|projects/MapleProject-NewtonsMethod.pdf]]
''Acknowledgement:'' Some projects are based on materials prepared by Douglas Shaw at University of Northern Iowa.
/%
<<tabs Schedule
Jan "January" [[January]]
Feb "February" [[February]]
Mar "March" [[March]]
Apr "April" [[April]]
>>
%/
Type the text for 'New Tiddler'
<<slideShow>>
-s-
!Integration by Parts
*Recall that the product rule for differentiation states
<html>
<div class="math">
\frac{d}{dx} [ f(x)g(x) ] = f'(x)g(x) + f(x)g'(x).
</div>
</html>
*Integrating, we find that
<html>
<div class="math">
\int f(x)g'(x)dx = f(x)g(x) - \int g(x)f'(x)dx.
</div>
</html>
*Making the substitutions $u = f(x)$ and $v = g(x)$, we obtain
<html>
<div class="math">
\int u \ dv = uv - \int v \ du.
</div>
</html>
-s-
!Example
*Consider $\int x \ \sin x \ dx$.
*We must choose $u$ and $dv$ appropriately to apply the integration by parts formula.
*In this case, we may choose $u=x$ and $dv=\sin x dx$.
*Then we have
<html>
<div class="math">
\begin{eqnarray} u & = & x & \quad & dv & = & \sin x \ dx \\
du & = & dx & \quad & v & = & -\cos x \end{eqnarray}
</div>
</html>
*It follows that <html>
<div class="math">
\begin{eqnarray} \int x \sin x \ dx & = & x \cdot -\cos x - \int -\cos x \ dx \\
& = & -x \ \cos x + \int \cos x \ dx \\
& = & -x \ \cos x + \sin x + C \end{eqnarray}
</div>
</html>
-s-
!Example
*Consider $\int x^2 \cos x \ dx$.
*In this case, we may choose $u=x^2$ and $dv=\cos x \ dx$.
*We then have
<html>
<div class="math">
\begin{eqnarray} u & = & x^2 & \quad & dv & = & \cos x \ dx \\
du & = & 2x \ dx & \quad & v & = & \sin x \end{eqnarray}
</div>
</html>
*It follows that
<html>
<div class="math">
\begin{eqnarray} \int x^2 \cos x \ dx & = & x^2 \cdot \sin x - \int \sin x \cdot 2x \ dx \\
& = & x^2 \sin x - 2 \int x \sin x \ dx \\
& = & x^2 \sin x - 2 [ -x \ \cos x + \sin x ] + C \\
& = & x^2 \sin x + 2x \ \cos x - 2 \sin x + C \end{eqnarray}
</div>
</html>
-s-
!Choosing Parts
Two criteria to keep in mind as you apply integration by parts:
# $v$ should be easy to find from $dv$
# the integral $\int v \ du$ should be easier to evaluate than $\int u \ dv$.
In general, choosing $u$ according to the acronym LIATE will help to satisfy the second criterion.
-s-
!LIATE
LIATE is an acronym for
<<tiddler LIATE>>
Choose for $u$ the part of the integrand that appears first in LIATE and let $dv$ be whatever is left in the integrand.
Better to choose $u$ LIATE than never!
-s-
!Example
Consider $\int \cos^{-1} x \ dx$.
*Take $u=\cos^{-1} x$.
-s-
!Example
Consider $\int e^x \ \cos x \ dx$.
*Take $u=\cos x$.
-s-
!Example
Consider $\int x \ \ln x \ dx$.
*Take $u=\ln x$.
-s-
!Example
Consider $\displaystyle \int_{0}^{\pi/2} x \ \sin x \ dx$.
<<slideShow>> - A simple slide show that keeps the TW style
<<slideShow style:'MySSStyleSheet' clock:'+'>> - A themed slide show with a clock showing the presentation elapsed time
<<slideShow repeat clock:'-20'>> - A looping slide show with a 20 minutes countdown clock
<<slideShow slidePause:1000>> - A timed slideshow that runs once
<<slideShow slidePause:1000 repeat>> - A timed looping slideshow
-s-
!The [[SlideShowPlugin]]
Press F11 to go fullscreen and adjust the font sizes with Ctrl++ Ctrl+- (or Ctrl+mousewheel).
This plugin was developed by Paulo Soares and Clint Checketts.
{{Comment{This block is not shown in the slide show.
@@Don't show me!!!@@}}}
-s-
!How slides are separated
In a tiddler, you start each slide with the markup {{{-s-}}}
-s-
Slides don't have to have titles like this poor one but can have images.
[img[photos/lisboa-0.jpg]]
-s-
!A slide with subsections and a long title
Check to TOC below to see how this slide title is abbreviated.
!!Section 1
This is a section
!!!Subsection 1.1
This is a subsection
!!!Subsection 1.2
This is another subsection
!!!!Subsubsection 1.2.1
This is a subsubsection
-s-
!Using the keyboard
The following keys are defined:
*Left arrow - previous overlay
*Down arrow - previous slide
*Right arrow - next overlay
*Up arrow - next slide
*Home - first slide
*End - last slide
*Escape - exit slide show
*Spacebar - pause/resume slide show in auto advance mode
-s-
!Slide show parameters
*The slide show can be themed by providing a ~StyleSheet ({{{<<slideShow style:'MyStyleSheet'>>}}})
*By default, there is a clock at bottom of the browser window that displays the current time. This clock can also show the presentation elapsed time with {{{<<slideShow clock:'+'>>}}} or a countdown clock with {{{<<slideShow clock:'-20'>>}}} (for 20 minutes). In these two cases, if you click on the clock display it will be restarted
*The slide show can be set to loop ({{{<<slideShow repeat>>}}})
*You can set it so each slide changes after X milliseconds ({{{<<slideShow slidePause:X>>}}}) (auto advance mode)
*Use auto start mode to begin the slideshow the moment the tiddler is opened ({{{<<slideShow autostart>>>}}})
*You can disable overlays with {{{<<slideShow noOverlays>>}}}
*These parameters can be mixed and matched in any order: {{{<<slideShow slidePause:1000 repeat>>}}} is the same as {{{<<slideShow repeat slidePause:1000>>}}}
-s-
!Overlays
To see how incremental display works use the left and right mouse buttons.
{{Overlay1{You can}}} {{Overlay2{present things}}} {{Overlay1{in an arbitrary order!!!}}}
{{Overlay3{Its a bit harder with lists but it works:}}}
<html>
<ol>
<li class="Overlay4">First item</li>
<li class="Overlay5">Second item</li>
<li class="Overlay4">Last item</li>
</ol>
</html>
{{Comment{You can hide comments on a slide that won't display in the slide show}}}
<!--{{{-->
<div id='displayArea'>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
/***
|''Name:''|SlideShowPlugin|
|''Description:''|Creates a simple slide show type display|
|''Version:''|1.5.1|
|''Date:''|Nov 10, 2006|
|''Source:''|http://www.math.ist.utl.pt/~psoares/addons.html|
|''Author:''|Paulo Soares (psoares (at) math (dot) ist (dot) utl (dot) pt) and [[Clint Checketts|http://www.checkettsweb.com]]|
|''License:''|[[BSD open source license]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
<<tiddler SlideShowPluginDoc>>
!Code
***/
//{{{
config.macros.slideShow = {label: "slide show", maxTOCLength: 30};
config.macros.slideShow.messages = {gotoLabel: "Go to slide:"};
config.views.wikified.slideShow = {text: "slide show", tooltip: "Start slide show"};
config.views.wikified.slideShow.quit = {text: "end", tooltip: "Quit the slide show"};
config.views.wikified.slideShow.firstSlide = {text: "<<", tooltip: "first slide"};
config.views.wikified.slideShow.previousSlide = {text: "<", tooltip: "previous slide"};
config.views.wikified.slideShow.nextSlide = {text: ">", tooltip: "next slide"};
config.views.wikified.slideShow.lastSlide = {text: ">>", tooltip: "last slide"};
config.views.wikified.slideShow.resetClock = {text: " ", tooltip: "reset"};
config.formatters.push( {
name: "SlideSeparator",
match: "^-s-+$\\n?",
handler: function(w)
{
createTiddlyElement(w.output,"hr",null,'slideSeparator');
}
}
)
function changeStyleSheet(tiddlerName) {
if (tiddlerName == null) tiddlerName = "StyleSheet";
setStylesheet(store.getRecursiveTiddlerText("StyleSheetColors"),"StyleSheetColors");
setStylesheet(store.getRecursiveTiddlerText("StyleSheetLayout"),"StyleSheetLayout");
var theCSS = store.getRecursiveTiddlerText(tiddlerName,"");
setStylesheet(theCSS,"StyleSheet");
}
//Excellent (and versatile) reparser created by Paul Petterson for parsing the paramString in a macro
function reparse( params ) {
var re = /([^:\s]+)(?:\:((?:\d+)|(?:["'](?:[^"']+)["']))|\s|$)/g;
var ret = new Array() ;
var m ;
while( (m = re.exec( params )) != null ) ret[ m[1] ] = m[2]?m[2]:true ;
return ret ;
}
function getElementsByClass(searchClass,node,tag) {
var classElements = new Array();
if ( node == null ) node = document;
if ( tag == null ) tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
var j=0;
for (var i = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}
// 'keys' code adapted from S5 which in turn was adapted from MozPoint (http://mozpoint.mozdev.org/)
function keys(key) {
if (document.getElementById('contentWrapper').className == "slideShowMode"){
if (!key) {
key = event;
key.which = key.keyCode;
}
switch (key.which) {
case 32: // spacebar
if(time>0){
if(autoAdvance){
clearInterval(autoAdvance);
autoAdvance = null;
} else {
autoAdvance=setInterval("GoToSlide(1)", time);
}
}
break;
case 34: // page down
case 39: // rightkey
GoToSlide("n");
break;
// case 40: // downkey
GoToSlide(-1);
break;
case 33: // page up
case 37: // leftkey
GoToSlide("p");
break;
// case 38: // upkey
GoToSlide(1);
break;
case 36: // home
GoToSlide("f");
break;
case 35: // end
GoToSlide("l");
break;
case 27: // escape
endSlideShow();
break;
}
}
return false;
}
function clicker(e) {
if (!e) var e = window.event;
var target = resolveTarget(e);
//Whenever something is clicked that won't advance the slide make sure that the table of contents gets hidden
if (target.getAttribute('href') != null || isParentOrSelf(target, 'toc') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object') || isParentOrSelf(target, 'pageFooter') || isParentOrSelf(target, 'navigator')){
//Don't hide the TOC if the indexNumbers (which trigger the index) is clicked
if(isParentOrSelf(target,'indexNumbers') || isParentOrSelf(target,'jumpInput')){
return true;
}
showHideTOC('none');
return true;
}
//Advance a slide if the TOC is visible otherwise make sure that the TOC gets hidden
if ((!e.which && e.button == 1) || e.which == 1) {
if (document.getElementById('toc').style.display != 'block'){
GoToSlide("n");
} else {
showHideTOC('none');
}
}
if ((!e.which && e.button == 2) || e.which == 3) {
if (document.getElementById('toc').style.display != 'block'){
GoToSlide("p");
} else {
showHideTOC('none');
}
return false;
}
}
function isParentOrSelf(element, id) {
if (element == null || element.nodeName=='BODY') return false;
else if (element.id == id) return true;
else return isParentOrSelf(element.parentNode, id);
}
GoToSlide=function(step) {
var new_pos;
var slideHolder = document.getElementById('slideContainer');
//The parse float ensures that the attribute is returned as a number and not a string.
var cur_pos = parseFloat(slideHolder.getAttribute('currentslide'));
var numberSlides = parseFloat(slideHolder.getAttribute('numberSlides'));
switch (step) {
case "f":
new_pos=0;
break;
case "l":
new_pos=numberSlides-1;
break;
case "n":
var numberOverlays = parseFloat(slideHolder.childNodes[cur_pos].getAttribute('numberOverlays'));
var currentOverlay = parseFloat(slideHolder.getAttribute('currentOverlay'));
if(numberOverlays==0 || currentOverlay==numberOverlays){
new_pos=cur_pos+1;
} else {
var className="Overlay"+currentOverlay;
var overlay=getElementsByClass(className,slideHolder.childNodes[cur_pos]);
for(var i=0; i<overlay.length; i++) {overlay[i].className=className+' previousOverlay';}
currentOverlay++;
slideHolder.setAttribute('currentOverlay',currentOverlay);
className="Overlay"+currentOverlay;
overlay=getElementsByClass(className,slideHolder.childNodes[cur_pos]);
for(i=0; i<overlay.length; i++) {overlay[i].className=className+' currentOverlay';}
return false;
}
break;
case "p":
var numberOverlays = parseFloat(slideHolder.childNodes[cur_pos].getAttribute('numberOverlays'));
var currentOverlay = parseFloat(slideHolder.getAttribute('currentOverlay'));
if(numberOverlays==0 || currentOverlay==0){
new_pos=cur_pos-1;
} else {
var className="Overlay"+currentOverlay;
var overlays=getElementsByClass(className,slideHolder.childNodes[cur_pos]);
for(var i=0; i<overlays.length; i++) {overlays[i].className=className+' nextOverlay';}
currentOverlay--;
className="Overlay"+currentOverlay;
overlays=getElementsByClass(className,slideHolder.childNodes[cur_pos]);
for(i=0; i<overlays.length; i++) {overlays[i].className=className+' currentOverlay';}
slideHolder.setAttribute('currentOverlay',currentOverlay);
return false;
}
break;
default:
new_pos=cur_pos+step;
}
if(slideShowCircularMode && new_pos == numberSlides) new_pos=0;
if(slideShowCircularMode && new_pos<0) new_pos=(numberSlides - 1);
if(step!=0 && new_pos>=0 && new_pos<numberSlides) {
slideHolder.childNodes[cur_pos].style.display='none';
slideHolder.childNodes[new_pos].style.display='block';
slideHolder.setAttribute('currentslide',new_pos);
var numberOverlays = parseFloat(slideHolder.childNodes[new_pos].getAttribute('numberOverlays'));
if(step=="p"){
var currentOverlay=numberOverlays;
var state=' previousOverlay';
} else {
var currentOverlay=0;
var state=' nextOverlay';
}
slideHolder.setAttribute('currentOverlay',currentOverlay);
if(numberOverlays>0) {
for(var i=1; i<=numberOverlays; i++){
var className="Overlay"+i;
var overlays=getElementsByClass(className,slideHolder.childNodes[new_pos]);
for(var j=0; j<overlays.length; j++) {overlays[j].className=className+state;}
}
if(step=="p"){
var className="Overlay"+numberOverlays;
var overlays=getElementsByClass(className,slideHolder.childNodes[new_pos]);
for(var j=0; j<overlays.length; j++) {overlays[j].className=className+' currentOverlay';}
}
}
new_pos++;
var indexNumbers = document.getElementById('indexNumbers');
indexNumbers.firstChild.data = new_pos+'/'+numberSlides;
if((new_pos==numberSlides) && !slideShowCircularMode && autoAdvance) clearInterval(autoAdvance);
return true;
}
return false;
}
function tocShowSlide(e) {
if (!e) var e = window.event;
var target = resolveTarget(e);
var slide = target.getAttribute('slideNumber');
var cur_pos = document.getElementById('slideContainer').getAttribute('currentslide');
var step = slide-cur_pos;
if(step!=0) GoToSlide(step);
showHideTOC('none');
return;
}
//Toggle the display of the table of contents
function showHideTOC(display){
var toc = document.getElementById('toc');
//Reset the input box
document.getElementById('jumpInput').value = "";
if (display == null || display.length == null){
if (toc.style.display == 'none' || toc.style.display == ''){
toc.style.display = 'block';
document.getElementById('jumpInput').focus();
} else {
toc.style.display = 'none';
}
} else {
toc.style.display = display;
if (display == 'block')
document.getElementById('jumpInput').focus();
}
}
function makeSignature(title,params){
var signature = title+store.getTiddler(title).modified;
if(params['style']) signature += params['style'];
if(params['repeat']) signature += "repeat";
if(params['slidePause'] > 0) signature += params['slidePause'];
if(params['autostart']) signature += "autostart";
if(params['clock']) signature += params['clock'];
if(params['noOverlays']) signature += "noOverlays";
return signature;
}
function padZero(x){
return (x>=10 || x<0 ? "" : "0")+x;
}
setClock=function(){
var actualTime = new Date();
var newTime = actualTime.getTime() - clockStartTime;
newTime = clockMultiplier*newTime+clockInterval+clockCorrection;
actualTime.setTime(newTime);
newTime = padZero(actualTime.getHours()) + ":" + padZero(actualTime.getMinutes())+ ":" + padZero(actualTime.getSeconds());
var clock = document.getElementById('slideClock');
clock.firstChild.nodeValue = newTime;
}
resetClock=function(){
var time = new Date(0);
if(clockStartTime>time){
var startTime = new Date();
clockStartTime=startTime.getTime();
}
}
var title;
var place;
var autoAdvance=null;
var autoStart=null;
var slideClock=null;
var noOverlays=false;
var time = 0;
var slideShowCircularMode;
var slideShowStyleSheet;
var slideShowParams;
var clockMultiplier;
var clockInterval;
var clockCorrection=0;
var clockStartTime;
var openTiddlers;
config.macros.slideShow.handler = function(aPlace,macroName,params,wikifier,paramString,tiddler){
if(tiddler instanceof Tiddler){
var lingo = config.views.wikified.slideShow;
var autostart = false;
if (!e) var e = window.event;
place = aPlace;
title = tiddler.title;
params = reparse(paramString);
var onclick = function(){config.macros.slideShow.onClickSlideShow(params);};
createTiddlyButton(aPlace,lingo.text,lingo.tooltip,onclick);
var slideShowHolder = document.getElementById('slideShowWrapper');
//If no show exist previously, create it
if(params['autostart']){
if(slideShowHolder != null){
var signature = slideShowHolder.getAttribute('showSignature');
if(signature.indexOf("autostart")==-1) autostart = true;
} else {autostart = true;}
if(autostart){
slideShowParams = params;
setTimeout(config.macros.slideShow.onClickSlideShow,100);
}
}
}
}
var disableFunction = function(e){return false;}
var enableFunction = function(e){}
config.macros.slideShow.onClickSlideShow = function(newParams) {
if(typeof(newParams)=="number") newParams=slideShowParams;
openTiddlers = new Array;
var viewer=document.getElementById('tiddlerDisplay');
for(var i=0; i<viewer.childNodes.length; i++){
var name = viewer.childNodes[i].getAttribute('tiddler');
openTiddlers.push(name);
}
document.oncontextmenu = disableFunction;
clockMultiplier = 1;
clockInterval = 0;
var startTime = new Date(0);
slideShowCircularMode = false;
time = 0;
slideShowStyleSheet = null;
if(newParams['style']){
slideShowStyleSheet = eval(newParams['style']);
}
if(newParams['repeat']){
slideShowCircularMode = true;
}
if(newParams['slidePause'] > 0){
time = newParams['slidePause'];
}
if(newParams['clock']){
clockCorrection=startTime.getTimezoneOffset()*60000;
startTime = new Date();
var clockType= eval(newParams['clock']);
if(clockType != '+') {
clockMultiplier = -1;
clockInterval = -clockType*60000;
}
}
clockStartTime=startTime.getTime();
if(newParams['noOverlays']){
noOverlays = true;
}
var contentWrapper = document.getElementById('contentWrapper');
if (contentWrapper.className != "slideShowMode"){
clearMessage();
//Attach the key and mouse listeners
document.onkeyup = keys;
document.onmouseup = clicker;
var slideShowHolder = document.getElementById('slideShowWrapper');
story.refreshTiddler(title,"SlideShowViewTemplate",true);
//If no show exist previously, create it
if(slideShowHolder == null){
createSlides(newParams);
//If there was once waiting in the background and it matches the one we just started, resume it
} else if (slideShowHolder.getAttribute('showSignature') == makeSignature(title,newParams)){
//Remove dblClick on edit function
var theTiddler = document.getElementById("tiddler"+title);
theTiddler.ondblclick = function() {};
// Grab the 'viewer' element and give it a signature so the show can be resumed if stopped
var tiddlerElements = theTiddler.childNodes;
var viewer;
for (var i = 0; i < tiddlerElements.length; i++){
if (tiddlerElements[i].className == "viewer") viewer = tiddlerElements[i];
}
theTiddler.insertBefore(slideShowHolder,viewer);
theTiddler.removeChild(viewer);
slideShowHolder.style.display = 'block';
document.getElementById("pageFooter").className = "pageFooterOff";
//If the show we started it totally new than the resumable one, create the new one and kill the resumable one
} else {
slideShowHolder.parentNode.removeChild(slideShowHolder);
createSlides(newParams);
}
slideClock=setInterval("setClock()", 1000);
if(time>0) autoAdvance=setInterval("GoToSlide(1)", time);
story.closeAllTiddlers(title);
toggleSlideStyles();
} else {
endSlideShow();
}
return ;
}
function endSlideShow(){
//Set aside show so it can be resumed later
var showHolder = document.getElementById('slideShowWrapper');
showHolder.style.display = 'none';
document.getElementById('contentWrapper').parentNode.appendChild(showHolder);
document.oncontextmenu = enableFunction;
if(autoAdvance) clearInterval(autoAdvance);
if(slideClock) clearInterval(slideClock);
story.refreshTiddler(title,null,true);
story.closeAllTiddlers();
toggleSlideStyles();
story.displayTiddlers(null,openTiddlers,DEFAULT_VIEW_TEMPLATE);
document.onmouseup = function(){};
}
function isInteger(s){
var i;
for (i = 0; i < s.length; i++){
// Check that current character is number.
var c = s.charAt(i);
if (((c < "0") || (c > "9"))) return false;
}
// All characters are numbers.
return true;
}
function jumpInputToSlide(e){
if (!e) {
e = window.event;
e.which = e.keyCode;
}
if(e.which==13){
var jumpInput= document.getElementById("jumpInput").value;
if(isInteger(jumpInput)){
var step=jumpInput-document.getElementById('slideContainer').getAttribute('currentslide')-1;
if (GoToSlide(step)){
showHideTOC('none');
}
}
}
return;
}
//Used to shorten the TOC fields
function abbreviateLabel(label){
var maxTOCLength = config.macros.slideShow.maxTOCLength;
if(label.length>maxTOCLength) {
var temp = new Array();
temp = label.split(' ');
label = temp[0];
for(var j=1; j<temp.length; j++){
if((label.length+temp[j].length)<=maxTOCLength){
label += " " + temp[j];
} else {
label += " ...";
break;
}
}
}
return label;
}
createSlides = function(newParams){
var lingo = config.views.wikified.slideShow;
//Remove dblClick on edit function
var theTiddler = document.getElementById("tiddler"+title);
theTiddler.ondblclick = function() {};
// Grab the 'viewer' element and give it a signature so the show can be resumed if stopped
var tiddlerElements = theTiddler.childNodes;
var viewer;
for (var i = 0; i < tiddlerElements.length; i++){
if (tiddlerElements[i].className == "viewer") viewer = tiddlerElements[i];
}
viewer.id = 'slideShowWrapper';
viewer.setAttribute("showSignature",makeSignature(title,newParams));
//Hide the text that comes before the first H1 element (I think I may put this into a cover page type thing)
while(viewer.childNodes.length > 0 && viewer.firstChild.nodeName.toUpperCase() != "HR" && viewer.firstChild.className!="slideSeparator") {
viewer.removeChild(viewer.firstChild);
}
//Cycle through the content and each time you hit an H1 begin a new slide div
var slideNumber = 0;
var slideHolder = document.createElement('DIV');
slideHolder.id = "slideContainer";
while(viewer.childNodes.length > 0){
//Create a new slide a append it to the slide holder
if (viewer.firstChild.nodeName.toUpperCase() == "HR" && viewer.firstChild.className=="slideSeparator"){
slideNumber++;
var slide = document.createElement('DIV');
slide.id = "slideNumber"+slideNumber;
slide.className = "slide";
if (slideNumber > 1) {
slideHolder.setAttribute('currentslide',0);
slide.style.display='none';
} else {
slide.style.display='block';
}
slideHolder.appendChild(slide);
viewer.removeChild(viewer.firstChild);
} else {
if(viewer.firstChild.nodeName=="SPAN" && viewer.firstChild.className=="" && viewer.firstChild.hasChildNodes()) {
var anchor=viewer.firstChild.nextSibling;
for (var ii=0;ii<viewer.firstChild.childNodes.length;ii++) {
var clone=viewer.firstChild.childNodes[ii].cloneNode(true);
viewer.insertBefore(clone,anchor);
}
viewer.removeChild(viewer.firstChild);
} else {
slide.appendChild(viewer.firstChild);
}
}
}
//Stick the slides back into the viewer
viewer.appendChild(slideHolder);
slideHolder.setAttribute('numberSlides',slideNumber);
//Create the navigation bar
var pagefooter = createTiddlyElement(viewer,"DIV","pageFooter","pageFooterOff");
var navigator = createTiddlyElement(pagefooter,"SPAN","navigator");
//Make it so that when the footer is hovered over the class will change to make it visible
pagefooter.onmouseover = function () {pagefooter.className = "pageFooterOn"};
pagefooter.onmouseout = function () {pagefooter.className = "pageFooterOff"};
//Create the control button for the navigation
var onClickQuit = function(){endSlideShow();};
createTiddlyButton(navigator,lingo.quit.text,lingo.quit.tooltip,onClickQuit);
createTiddlyButton(navigator,lingo.firstSlide.text,lingo.firstSlide.tooltip,first_slide);
createTiddlyButton(navigator,lingo.previousSlide.text,lingo.previousSlide.tooltip,previous_slide);
createTiddlyButton(navigator,lingo.nextSlide.text,lingo.nextSlide.tooltip,next_slide);
createTiddlyButton(navigator,lingo.lastSlide.text,lingo.lastSlide.tooltip,last_slide);
createTiddlyButton(navigator,lingo.resetClock.text,lingo.resetClock.tooltip,resetClock,"button","slideClock");
var indexNumbers = createTiddlyElement(pagefooter,"SPAN","indexNumbers","indexNumbers","1/"+slideNumber)
indexNumbers.onclick = showHideTOC;
var toc = createTiddlyElement(pagefooter,"UL","toc");
var ovl=1;
for (var i=0;i<slideHolder.childNodes.length;i++) {
if(!noOverlays) {
var ovl=1;
while(1){
var className="Overlay"+ovl;
var overlays=getElementsByClass(className,slideHolder.childNodes[i]);
if(overlays.length>0){
for(var j=0; j<overlays.length; j++) {overlays[j].className+=' nextOverlay';}
ovl++;
} else {break;}
}
}
slideHolder.childNodes[i].setAttribute("numberOverlays",ovl-1);
slideHolder.setAttribute("currentOverlay",0);
//Loop through each slide and check the header's content
var tocLabel = null;
for (var j=0;j<slideHolder.childNodes[i].childNodes.length;j++) {
var node = slideHolder.childNodes[i].childNodes[j];
if(node.nodeName=="H1" || node.nodeName=="H2" || node.nodeName=="H3" || node.nodeName=="H4") {
var htstring = node.innerHTML;
var stripped = htstring.replace(/(<([^>]+)>)/ig,"");
tocLabel = abbreviateLabel(stripped);
var tocLevel="tocLevel"+node.nodeName.charAt(1);
var tocItem = createTiddlyElement(toc,"LI",null,tocLevel);
var tocLink = createTiddlyElement(tocItem,"A",null,"tocItem",tocLabel);
tocLink.setAttribute("slideNumber",i);
tocLink.onclick=tocShowSlide;
}
}
}
//Input box to jump to s specific slide
var tocItem = createTiddlyElement(toc,"LI",null,"tocJumpItem",config.macros.slideShow.messages.gotoLabel);
var tocJumpInput = createTiddlyElement(tocItem,"INPUT","jumpInput");
tocJumpInput.type="text";
tocJumpInput.onkeyup=jumpInputToSlide;
}
var next_slide= function(e){GoToSlide(1);}
var first_slide= function(e){GoToSlide("f");}
var previous_slide= function(e){GoToSlide(-1);}
var last_slide= function(e){GoToSlide("l");}
function toggleSlideStyles(){
var contentWrapper = document.getElementById('contentWrapper');
if (contentWrapper.className == "slideShowMode"){
contentWrapper.className = "";
window.applyPageTemplate();
if(slideShowStyleSheet) changeStyleSheet();
} else{
contentWrapper.className = "slideShowMode";
window.applyPageTemplate("SlideShowPageTemplate");
if(slideShowStyleSheet) changeStyleSheet(slideShowStyleSheet);
}
}
setStylesheet("/***\n!Slide Mode Styles\n***/\n/*{{{*/\n#contentWrapper.slideShowMode #slideContainer{\n display: block;\n}\n\n#contentWrapper.slideShowMode .Comment{\n display: none;\n}\n\n#contentWrapper.slideShowMode .nextOverlay{\n visibility: hidden;\n}\n\n#contentWrapper.slideShowMode .currentOverlay{\n visibility: visible;\n}\n\n#contentWrapper.slideShowMode .previousOverlay{\n visibility: visible;\n}\n\n#jump{\n text-align: right;\n}\n\n.pageFooterOff #navigator{\n visibility: hidden;\n}\n\n.pageFooterOn #navigator{\n visibility: visible;\n}\n\n#contentWrapper.slideShowMode #slideClock{\n cursor: pointer; margin: 0 5px 0 5px; border: 1px solid #db4\n}\n\n#contentWrapper.slideShowMode,\n #contentWrapper.slideShowMode #displayArea{\n width: 100%;\n font-size: 1.5em;\n margin: 0 !important;\n padding: 0;\n}\n\n#slideContainer{\n display: none;\n}\n\n.indexNumbers{\n cursor: pointer;\n}\n\n#navigator{\n visibility: hidden;\n bottom: 0;\n}\n\n#toc{\n display: none;\n position: absolute;\n font-size: .75em;\n bottom: 2em;\n right: 0;\n background: #fff;\n border: 1px solid #000;\n text-align: left;\n}\n\nul#toc, #toc li{\n margin: 0;\n padding: 0;\n list-style: none;\n line-height: 1em;\n}\n\n.tocJumpItem{\n margin-right: 2em;\n}\n\n.tocJumpItem input{\nmargin-right: 1em;\n border: 0;\n}\n\n#toc a,\n#toc a.button{\n display: block;\n padding: .1em;\n}\n\n#toc .tocLevel1{\nfont-size: .8em;\n}\n\n#toc .tocLevel2{\n margin-left: 1em;\n font-size: .75em;\n}\n\n#toc .tocLevel3{\n margin-left: 2em;\nfont-size: .75em;\n}\n\n#toc .tocLevel4{\n margin-left: 3em;\nfont-size: .65em;\n}\n\n#toc a{\n cursor: pointer;\n}\n\nh1{\n min-height: 1em;\n}\n\n.slide h1{\n min-height: 0;\n}\n\n/* The '>' selector is ignored by IE6 and earlier so the proper rules are given */\n#pageFooter{\n position: fixed;\n bottom: 2px;\n right: 2px;\n width: 100%;\n text-align: right;\n}\n\n/* This is a hack to trick IE6 and earlier to put the navbar on the bottom of the page */\n* html #pageFooter {\n position: absolute;\n width: 100%;\n text-align: right;\n right: auto; bottom: auto;\n left: expression( ( -20 - pageFooter.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );\n top: expression( ( -10 - pageFooter.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );\n}\n\n\n\n/*}}}*/","slideShowStyles");
//}}}
!Description
This plugin turns a TiddlyWiki tiddler into a simple slide show type display. Most features that are usually found in presentation software are available. It should work in a way that does not interfere with TiddlyWiki. When you close the slide show you get back to your good old TW.
This plugin has been tested in Firefox and Internet Explorer. Let me know if something seems broken.
!Usage
To use this plugin you //must// be using TiddlyWiki 2.0. Some optional features (as the incremental display) require version 2.0.8 or higher. To install the plugin copy the tiddlers SlideShowPlugin, SlideShowPageTemplate and SlideShowViewTemplate to your TW, label the first one with the //systemConfig// tag, save the TW and refresh the browser.
To make a slide show simply drop {{{<<slideShow>>}}} at the beginning of a tiddler and use {{{--s--}}} to start each slide.
If you move your mouse over the bottom of the browser window you will see a few navigation buttons, a clock and a table of contents that shows up when you click the slide number.
Any block of text marked as {{{{{Comment{For my eyes only!}}}}}} will not be displayed in the slide show.
See these and other features in this [[SlideShowExample]].
!Incremental display
A succession of overlays (or layers) can be defined in each slide by marking blocks of text with {{{{{Overlay1{...some text...}}}}}}, {{{{{Overlay2{...some text...}}}}}}, {{{{{Overlay3{...some text...}}}}}}, ...
To costumize the way overlays are shown you can redefine the following CSS classes
*contentWrapper.slideShowMode .previousOverlay
*contentWrapper.slideShowMode .currentOverlay
*contentWrapper.slideShowMode .nextOverlay
in a ~StyleSheet. The default style simply hides the next overlays and shows the current and the previous ones as normal text.
!Slide show parameters
*The slide show can be themed by providing a ~StyleSheet ({{{<<slideShow style:'MyStyleSheet'>>}}})
*By default, there is a clock at bottom of the browser window that displays the current time. This clock can also show the presentation elapsed time with {{{<<slideShow clock:'+'>>}}} or a countdown clock with {{{<<slideShow clock:'-20'>>}}} (for 20 minutes). In these two cases, if you click on the clock display it will be restarted
*The slide show can be set to loop ({{{<<slideShow repeat>>}}})
*You can set it so each slide changes after X milliseconds ({{{<<slideShow slidePause:X>>}}}) (auto advance mode)
*Use auto start mode to begin the slideshow the moment the tiddler is opened ({{{<<slideShow autostart>>>}}})
*You can disable overlays with {{{<<slideShow noOverlays>>}}}
*These parameters can be mixed and matched in any order: {{{<<slideShow slidePause:1000 repeat>>}}} is the same as {{{<<slideShow repeat slidePause:1000>>}}}
!Slide show navigation
You can navigate through a slide show using the keyboard or the mouse. To quickly move to titled sections you can use the table of contents.
!!Mouse navigation
Left (right) clicking on a slide jumps to the next (previous) overlay. To move to the beginning of the next or previous slide you must use the navigation bar at the bottom of the browser's window. If there are no overlays defined both operations are equivalent.
!!Keyboard navigation
The following keys are defined:
*Left arrow - previous overlay
*Down arrow - previous slide
*Right arrow - next overlay
*Up arrow - next slide
*Home - first slide
*End - last slide
*Escape - exit slide show
*Spacebar - pause/resume slide show in auto advance mode
!Revision history
*1.5.1 10/11/2006
**added SlideShowPageTemplate and SlideShowViewTemplate. This way, the plugin no longer requires a standard TW layout. Thanks to Andrew Lister for the idea.
*1.5.0 18/09/2006
**fixed restoring stylesheet on exit
**changed (again!) the way how slides are separated (slide shows prepared for previous versions must be fixed)
*1.4.0 20/04/2006
**changed the way how slides are separated (slide shows prepared for previous versions must be fixed)
**now works with content included with the {{{<<tiddler>>}}} macro
**added incremental display (overlays)
**improved documentation
**assorted small fixes
*1.3.1 10/03/2006
**removed empty slide titles
**fixed wrong numberSlides when slides have div's
**fixed wrong time in Windows
*1.3.0 26/02/2006
**restore open tiddlers on exit
**fixed problem with markup in headers (should work with NestedSlidersPlugin)
**added slide comments (blocks of text in the tiddler that don't show up in the presentation)
*1.2.1 28/01/2006
**pause timed slideshow with spacebar
**added clock with 3 different modes
**fixed bugs with style and abbreviation options
**general cleanup
*1.2.0 07/01/2006
**added a resume feature
**added themes support
*1.1.5 14/12/2005
**added mouse support
**cleaned up navbar generation
*1.1.0 12/12/2005
**added support for IE
**added key listeners
*1.0.0 11/12/2005
**initial release
!Todo
*Time code is still very hackerish and unreliable.
<!--{{{-->
<div class='title' macro='view title' style='font-size: 1em;'></div>
<div class='viewer' macro='view text wikified'></div>
<!--}}}-->
The course utilizes Gilbert Strang's [[Calculus|http://ocw.mit.edu/ans7870/resources/Strang/strangtext.htm]] text under the terms of the [[MIT OpenCourseWare Creative Commons license (BY-NC-SA)|http://ocw.mit.edu/OcwWeb/web/terms/terms/index.htm]].
/***
|Name|ToggleSideBarMacro|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#ToggleSideBarMacro|
|Version|1.0|
|Requires|~TW2.x|
!Description:
Provides a button for toggling visibility of the SideBar. You can choose whether the SideBar should initially be hidden or displayed.
!Demo
<<toggleSideBar "Toggle Sidebar">>
!Usage:
{{{<<toggleSideBar>>}}} <<toggleSideBar>>
additional options:
{{{<<toggleSideBar label tooltip show/hide>>}}} where:
label = custom label for the button,
tooltip = custom tooltip for the button,
show/hide = use one or the other, determines whether the sidebar is shown at first or not.
(default is to show the sidebar)
You can add it to your tiddler toolbar, your MainMenu, or where you like really.
If you are using a horizontal MainMenu and want the button to be right aligned, put the following in your StyleSheet:
{{{ .HideSideBarButton {float:right;} }}}
!History
*23-07-06: version 1.0: completely rewritten, now works with custom stylesheets too, and easier to customize start behaviour.
*20-07-06: version 0.11
*27-04-06: version 0.1: working.
!Code
***/
//{{{
config.macros.toggleSideBar={};
config.macros.toggleSideBar.settings={
styleHide : "#sidebar { display: none;}\n"+"#contentWrapper #displayArea { margin-right: 1em;}\n"+"",
styleShow : " ",
arrow1: "«",
arrow2: "»"
};
config.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)
{
var tooltip= params[1]||'toggle sidebar';
var mode = (params[2] && params[2]=="hide")? "hide":"show";
var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;
var label= (params[0]&¶ms[0]!='.')?params[0]+" "+arrow:arrow;
var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");
if (mode == "hide")
{
(document.getElementById("sidebar")).setAttribute("toggle","hide");
setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");
}
};
config.macros.toggleSideBar.onToggleSideBar = function(){
var sidebar = document.getElementById("sidebar");
var settings = config.macros.toggleSideBar.settings;
if (sidebar.getAttribute("toggle")=='hide')
{
setStylesheet(settings.styleShow,"ToggleSideBarStyles");
sidebar.setAttribute("toggle","show");
this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);
}
else
{
setStylesheet(settings.styleHide,"ToggleSideBarStyles");
sidebar.setAttribute("toggle","hide");
this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);
}
return false;
}
setStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\n","ToggleSideBarButtonStyles");
//}}}
Please feel free to make use of these Calculus materials, with appropriate attribution.