Spaces:
Running
Running
thibaud frere
commited on
Commit
·
826819b
1
Parent(s):
a17a3bf
chore: remove unused LaTeX input files and clean up LFS tracking
Browse files- Remove entire latex-to-mdx/input directory with old LaTeX files
- Clean up 40+ unused LFS-tracked image files
- Remove obsolete LaTeX styles, fonts, and source files
- Keep only active template files and current content
This view is limited to 50 files because it contains too many changes.
See raw diff
- CHANGELOG.md +118 -0
- CONTRIBUTING.md +196 -0
- LICENSE +33 -0
- README.md +129 -1
- app/.astro/astro/content.d.ts +0 -284
- app/package.json +0 -0
- app/scripts/latex-to-mdx/input/.gitignore +0 -13
- app/scripts/latex-to-mdx/input/README.md +0 -64
- app/scripts/latex-to-mdx/input/_minted/62B8750C0ACEBDA39A95140434E540A8.highlight.minted +0 -52
- app/scripts/latex-to-mdx/input/_minted/_FAD58DE7366495DB4650CFEFAC2FCD61.index.minted +0 -10
- app/scripts/latex-to-mdx/input/_minted/colorful.style.minted +0 -100
- app/scripts/latex-to-mdx/input/fancyhdr.sty +0 -485
- app/scripts/latex-to-mdx/input/figures/ch1/ch1-lerobot-figure1.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch2/ch2-approaches.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch2/ch2-classical-limitations.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch2/ch2-cost-accessibility.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch2/ch2-planar-manipulator-floor-box.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch2/ch2-planar-manipulator-floor-shelf.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch2/ch2-planar-manipulator-floor.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch2/ch2-planar-manipulator-free.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch2/ch2-platforms.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch2/ch2-so100-to-planar-manipulator.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch3/ch3-agent-env.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch3/ch3-duck-sim-vs-real.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch3/ch3-hil-serl-examples.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch3/ch3-learning-atlas.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch3/ch3-learning-benefits.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch3/ch3-many-ducks.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch3/ch3-rl-algorithms-atlas.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch3/ch3-rl-examples.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch4/ch4-act-decoder.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch4/ch4-act-encoder.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch4/ch4-act.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch4/ch4-action-vs-observation-distribution.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch4/ch4-async-inference.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch4/ch4-bc-trajectories.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch4/ch4-diffusion-policy.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch4/ch4-diffusion-robot-actions.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch4/ch4-diffusion-vs-flowmatching.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch4/ch4-issues-with-bc.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch4/ch4-latent-variable-model.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch4/ch4-many-latents.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch4/ch4-normalizing-flows.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch4/ch4-observation-action-mapping.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch4/ch4-queues.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch4/ch4-task-effect-on-pairs.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch5/ch5-generalist-policies-timeline.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch5/ch5-ml-vs-robotics-foundation.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch5/ch5-pi0-sampling-timesteps.png +0 -3
- app/scripts/latex-to-mdx/input/figures/ch5/ch5-pi0.png +0 -3
CHANGELOG.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Changelog
|
| 2 |
+
|
| 3 |
+
All notable changes to the Research Article Template will be documented in this file.
|
| 4 |
+
|
| 5 |
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
| 6 |
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
| 7 |
+
|
| 8 |
+
## [Unreleased]
|
| 9 |
+
|
| 10 |
+
### Added
|
| 11 |
+
- Initial open source release
|
| 12 |
+
- Comprehensive documentation
|
| 13 |
+
- Contributing guidelines
|
| 14 |
+
- License file
|
| 15 |
+
|
| 16 |
+
## [1.0.0] - 2024-12-19
|
| 17 |
+
|
| 18 |
+
### Added
|
| 19 |
+
- **Core Features**:
|
| 20 |
+
- Markdown/MDX-based writing system
|
| 21 |
+
- KaTeX mathematical notation support
|
| 22 |
+
- Syntax highlighting for code blocks
|
| 23 |
+
- Academic citations with BibTeX integration
|
| 24 |
+
- Footnotes and sidenotes system
|
| 25 |
+
- Auto-generated table of contents
|
| 26 |
+
- Interactive Mermaid diagrams
|
| 27 |
+
- Plotly.js and D3.js integration
|
| 28 |
+
- HTML embed support
|
| 29 |
+
- Gradio app embedding
|
| 30 |
+
- Dataviz color palettes
|
| 31 |
+
- Image optimization
|
| 32 |
+
- SEO-friendly structure
|
| 33 |
+
- Automatic PDF export
|
| 34 |
+
- Dark/light theme toggle
|
| 35 |
+
- Mobile-responsive design
|
| 36 |
+
- LaTeX import functionality
|
| 37 |
+
- Template synchronization system
|
| 38 |
+
|
| 39 |
+
- **Components**:
|
| 40 |
+
- Figure component with captions
|
| 41 |
+
- MultiFigure for image galleries
|
| 42 |
+
- Note component with variants
|
| 43 |
+
- Quote component
|
| 44 |
+
- Accordion for collapsible content
|
| 45 |
+
- Sidenote component
|
| 46 |
+
- Table of Contents
|
| 47 |
+
- Theme Toggle
|
| 48 |
+
- HTML Embed
|
| 49 |
+
- Raw HTML support
|
| 50 |
+
- SEO component
|
| 51 |
+
- Hero section
|
| 52 |
+
- Footer
|
| 53 |
+
- Full-width and wide layouts
|
| 54 |
+
|
| 55 |
+
- **Build System**:
|
| 56 |
+
- Astro 4.10.0 integration
|
| 57 |
+
- PostCSS with custom media queries
|
| 58 |
+
- Automatic compression
|
| 59 |
+
- Docker support
|
| 60 |
+
- Nginx configuration
|
| 61 |
+
- Git LFS support
|
| 62 |
+
|
| 63 |
+
- **Scripts**:
|
| 64 |
+
- PDF export functionality
|
| 65 |
+
- LaTeX to MDX conversion
|
| 66 |
+
- Template synchronization
|
| 67 |
+
- Font SVG generation
|
| 68 |
+
- TrackIO data generation
|
| 69 |
+
|
| 70 |
+
- **Documentation**:
|
| 71 |
+
- Getting started guide
|
| 72 |
+
- Writing best practices
|
| 73 |
+
- Component reference
|
| 74 |
+
- LaTeX conversion guide
|
| 75 |
+
- Interactive examples
|
| 76 |
+
|
| 77 |
+
### Technical Details
|
| 78 |
+
- **Framework**: Astro 4.10.0
|
| 79 |
+
- **Styling**: PostCSS with custom properties
|
| 80 |
+
- **Math**: KaTeX 0.16.22
|
| 81 |
+
- **Charts**: Plotly.js 3.1.0, D3.js 7.9.0
|
| 82 |
+
- **Diagrams**: Mermaid 11.10.1
|
| 83 |
+
- **Node.js**: >=20.0.0
|
| 84 |
+
- **License**: CC-BY-4.0
|
| 85 |
+
|
| 86 |
+
### Browser Support
|
| 87 |
+
- Chrome (latest)
|
| 88 |
+
- Firefox (latest)
|
| 89 |
+
- Safari (latest)
|
| 90 |
+
- Edge (latest)
|
| 91 |
+
|
| 92 |
+
---
|
| 93 |
+
|
| 94 |
+
## Version History
|
| 95 |
+
|
| 96 |
+
- **1.0.0**: Initial stable release with full feature set
|
| 97 |
+
- **0.0.1**: Development version (pre-release)
|
| 98 |
+
|
| 99 |
+
## Migration Guide
|
| 100 |
+
|
| 101 |
+
### From 0.0.1 to 1.0.0
|
| 102 |
+
|
| 103 |
+
This is the first stable release. No breaking changes from the development version.
|
| 104 |
+
|
| 105 |
+
### Updating Your Project
|
| 106 |
+
|
| 107 |
+
Use the template synchronization system to update:
|
| 108 |
+
|
| 109 |
+
```bash
|
| 110 |
+
npm run sync:template -- --dry-run # Preview changes
|
| 111 |
+
npm run sync:template # Apply updates
|
| 112 |
+
```
|
| 113 |
+
|
| 114 |
+
## Support
|
| 115 |
+
|
| 116 |
+
- **Documentation**: [Hugging Face Space](https://huggingface.co/spaces/tfrere/research-article-template)
|
| 117 |
+
- **Issues**: [Community Discussions](https://huggingface.co/spaces/tfrere/research-article-template/discussions)
|
| 118 |
+
- **Contact**: [@tfrere](https://huggingface.co/tfrere)
|
CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Contributing to Research Article Template
|
| 2 |
+
|
| 3 |
+
Thank you for your interest in contributing to the Research Article Template! This document provides guidelines and information for contributors.
|
| 4 |
+
|
| 5 |
+
## 🤝 How to Contribute
|
| 6 |
+
|
| 7 |
+
### Reporting Issues
|
| 8 |
+
|
| 9 |
+
Before creating an issue, please:
|
| 10 |
+
1. **Search existing issues** to avoid duplicates
|
| 11 |
+
2. **Use the issue template** when available
|
| 12 |
+
3. **Provide detailed information**:
|
| 13 |
+
- Clear description of the problem
|
| 14 |
+
- Steps to reproduce
|
| 15 |
+
- Expected vs actual behavior
|
| 16 |
+
- Environment details (OS, Node.js version, browser)
|
| 17 |
+
- Screenshots if applicable
|
| 18 |
+
|
| 19 |
+
### Suggesting Features
|
| 20 |
+
|
| 21 |
+
We welcome feature suggestions! Please:
|
| 22 |
+
1. **Check existing discussions** first
|
| 23 |
+
2. **Describe the use case** clearly
|
| 24 |
+
3. **Explain the benefits** for the community
|
| 25 |
+
4. **Consider implementation complexity**
|
| 26 |
+
|
| 27 |
+
### Code Contributions
|
| 28 |
+
|
| 29 |
+
#### Getting Started
|
| 30 |
+
|
| 31 |
+
1. **Fork the repository** on Hugging Face
|
| 32 |
+
2. **Clone your fork**:
|
| 33 |
+
```bash
|
| 34 |
+
git clone [email protected]:spaces/<your-username>/research-article-template
|
| 35 |
+
cd research-article-template
|
| 36 |
+
```
|
| 37 |
+
3. **Install dependencies**:
|
| 38 |
+
```bash
|
| 39 |
+
cd app
|
| 40 |
+
npm install
|
| 41 |
+
```
|
| 42 |
+
4. **Create a feature branch**:
|
| 43 |
+
```bash
|
| 44 |
+
git checkout -b feature/your-feature-name
|
| 45 |
+
```
|
| 46 |
+
|
| 47 |
+
#### Development Workflow
|
| 48 |
+
|
| 49 |
+
1. **Make your changes** following our coding standards
|
| 50 |
+
2. **Test thoroughly**:
|
| 51 |
+
```bash
|
| 52 |
+
npm run dev # Test locally
|
| 53 |
+
npm run build # Ensure build works
|
| 54 |
+
```
|
| 55 |
+
3. **Update documentation** if needed
|
| 56 |
+
4. **Commit with clear messages**:
|
| 57 |
+
```bash
|
| 58 |
+
git commit -m "feat: add new component for interactive charts"
|
| 59 |
+
```
|
| 60 |
+
|
| 61 |
+
#### Pull Request Process
|
| 62 |
+
|
| 63 |
+
1. **Push your branch**:
|
| 64 |
+
```bash
|
| 65 |
+
git push origin feature/your-feature-name
|
| 66 |
+
```
|
| 67 |
+
2. **Create a Pull Request** with:
|
| 68 |
+
- Clear title and description
|
| 69 |
+
- Reference related issues
|
| 70 |
+
- Screenshots for UI changes
|
| 71 |
+
- Testing instructions
|
| 72 |
+
|
| 73 |
+
## 📋 Coding Standards
|
| 74 |
+
|
| 75 |
+
### Code Style
|
| 76 |
+
|
| 77 |
+
- **Use Prettier** for consistent formatting
|
| 78 |
+
- **Follow existing patterns** in the codebase
|
| 79 |
+
- **Write clear, self-documenting code**
|
| 80 |
+
- **Add comments** for complex logic
|
| 81 |
+
- **Use meaningful variable names**
|
| 82 |
+
|
| 83 |
+
### File Organization
|
| 84 |
+
|
| 85 |
+
- **Components**: Place in `src/components/`
|
| 86 |
+
- **Styles**: Use CSS modules or component-scoped styles
|
| 87 |
+
- **Assets**: Organize in `src/content/assets/`
|
| 88 |
+
- **Documentation**: Update relevant `.mdx` files
|
| 89 |
+
|
| 90 |
+
### Commit Message Format
|
| 91 |
+
|
| 92 |
+
We follow [Conventional Commits](https://www.conventionalcommits.org/):
|
| 93 |
+
|
| 94 |
+
```
|
| 95 |
+
type(scope): description
|
| 96 |
+
|
| 97 |
+
feat: add new interactive chart component
|
| 98 |
+
fix: resolve mobile layout issues
|
| 99 |
+
docs: update installation instructions
|
| 100 |
+
style: improve button hover states
|
| 101 |
+
refactor: simplify component structure
|
| 102 |
+
test: add unit tests for utility functions
|
| 103 |
+
```
|
| 104 |
+
|
| 105 |
+
**Types**: `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`
|
| 106 |
+
|
| 107 |
+
## 🧪 Testing
|
| 108 |
+
|
| 109 |
+
### Manual Testing
|
| 110 |
+
|
| 111 |
+
Before submitting:
|
| 112 |
+
- [ ] Test on different screen sizes
|
| 113 |
+
- [ ] Verify dark/light theme compatibility
|
| 114 |
+
- [ ] Check browser compatibility (Chrome, Firefox, Safari)
|
| 115 |
+
- [ ] Test with different content types
|
| 116 |
+
- [ ] Ensure accessibility standards
|
| 117 |
+
|
| 118 |
+
### Automated Testing
|
| 119 |
+
|
| 120 |
+
```bash
|
| 121 |
+
# Run build to catch errors
|
| 122 |
+
npm run build
|
| 123 |
+
|
| 124 |
+
# Test PDF export
|
| 125 |
+
npm run export:pdf
|
| 126 |
+
|
| 127 |
+
# Test LaTeX conversion
|
| 128 |
+
npm run latex:convert
|
| 129 |
+
```
|
| 130 |
+
|
| 131 |
+
## 📚 Documentation
|
| 132 |
+
|
| 133 |
+
### Writing Guidelines
|
| 134 |
+
|
| 135 |
+
- **Use clear, concise language**
|
| 136 |
+
- **Provide examples** for complex features
|
| 137 |
+
- **Include screenshots** for UI changes
|
| 138 |
+
- **Update both English content and code comments**
|
| 139 |
+
|
| 140 |
+
### Documentation Structure
|
| 141 |
+
|
| 142 |
+
- **README.md**: Project overview and quick start
|
| 143 |
+
- **CONTRIBUTING.md**: This file
|
| 144 |
+
- **Content files**: In `src/content/chapters/demo/`
|
| 145 |
+
- **Component docs**: Inline comments and examples
|
| 146 |
+
|
| 147 |
+
## 🎯 Areas for Contribution
|
| 148 |
+
|
| 149 |
+
### High Priority
|
| 150 |
+
|
| 151 |
+
- **Bug fixes** and stability improvements
|
| 152 |
+
- **Accessibility enhancements**
|
| 153 |
+
- **Mobile responsiveness**
|
| 154 |
+
- **Performance optimizations**
|
| 155 |
+
- **Documentation improvements**
|
| 156 |
+
|
| 157 |
+
### Feature Ideas
|
| 158 |
+
|
| 159 |
+
- **New interactive components**
|
| 160 |
+
- **Additional export formats**
|
| 161 |
+
- **Enhanced LaTeX import**
|
| 162 |
+
- **Theme customization**
|
| 163 |
+
- **Plugin system**
|
| 164 |
+
|
| 165 |
+
### Community
|
| 166 |
+
|
| 167 |
+
- **Answer questions** in discussions
|
| 168 |
+
- **Share examples** of your work
|
| 169 |
+
- **Write tutorials** and guides
|
| 170 |
+
- **Help with translations**
|
| 171 |
+
|
| 172 |
+
## 🚫 What Not to Contribute
|
| 173 |
+
|
| 174 |
+
- **Breaking changes** without discussion
|
| 175 |
+
- **Major architectural changes** without approval
|
| 176 |
+
- **Dependencies** that significantly increase bundle size
|
| 177 |
+
- **Features** that don't align with the project's goals
|
| 178 |
+
|
| 179 |
+
## 📞 Getting Help
|
| 180 |
+
|
| 181 |
+
- **Discussions**: [Community tab](https://huggingface.co/spaces/tfrere/research-article-template/discussions)
|
| 182 |
+
- **Issues**: [Report bugs](https://huggingface.co/spaces/tfrere/research-article-template/discussions?status=open&type=issue)
|
| 183 |
+
- **Contact**: [@tfrere](https://huggingface.co/tfrere) on Hugging Face
|
| 184 |
+
|
| 185 |
+
## 📄 License
|
| 186 |
+
|
| 187 |
+
By contributing, you agree that your contributions will be licensed under the same [CC-BY-4.0 license](LICENSE) that covers the project.
|
| 188 |
+
|
| 189 |
+
## 🙏 Recognition
|
| 190 |
+
|
| 191 |
+
Contributors will be:
|
| 192 |
+
- **Listed in acknowledgments** (if desired)
|
| 193 |
+
- **Mentioned in release notes** for significant contributions
|
| 194 |
+
- **Credited** in relevant documentation
|
| 195 |
+
|
| 196 |
+
Thank you for helping make scientific writing more accessible and interactive! 🎉
|
LICENSE
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Creative Commons Attribution 4.0 International License
|
| 2 |
+
|
| 3 |
+
Copyright (c) 2024 Thibaud Frere
|
| 4 |
+
|
| 5 |
+
This work is licensed under the Creative Commons Attribution 4.0 International License.
|
| 6 |
+
To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/
|
| 7 |
+
or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
|
| 8 |
+
|
| 9 |
+
You are free to:
|
| 10 |
+
|
| 11 |
+
Share — copy and redistribute the material in any medium or format
|
| 12 |
+
Adapt — remix, transform, and build upon the material for any purpose, even commercially.
|
| 13 |
+
|
| 14 |
+
The licensor cannot revoke these freedoms as long as you follow the license terms.
|
| 15 |
+
|
| 16 |
+
Under the following terms:
|
| 17 |
+
|
| 18 |
+
Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
|
| 19 |
+
|
| 20 |
+
No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.
|
| 21 |
+
|
| 22 |
+
Notices:
|
| 23 |
+
|
| 24 |
+
You do not have to comply with the license for elements of the material in the public domain or where your use is permitted by an applicable exception or limitation.
|
| 25 |
+
|
| 26 |
+
No warranties are given. The license may not give you all of the permissions necessary for your intended use. For example, other rights such as publicity, privacy, or moral rights may limit how you use the material.
|
| 27 |
+
|
| 28 |
+
---
|
| 29 |
+
|
| 30 |
+
For the source code and technical implementation:
|
| 31 |
+
- The source code is available at: https://huggingface.co/spaces/tfrere/research-article-template
|
| 32 |
+
- Third-party figures and assets are excluded from this license and marked in their captions
|
| 33 |
+
- Dependencies and third-party libraries maintain their respective licenses
|
README.md
CHANGED
|
@@ -8,4 +8,132 @@ pinned: false
|
|
| 8 |
header: mini
|
| 9 |
app_port: 8080
|
| 10 |
thumbnail: https://huggingface.co/spaces/tfrere/research-paper-template/thumb.jpg
|
| 11 |
-
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
header: mini
|
| 9 |
app_port: 8080
|
| 10 |
thumbnail: https://huggingface.co/spaces/tfrere/research-paper-template/thumb.jpg
|
| 11 |
+
---
|
| 12 |
+
|
| 13 |
+
# 📝 Research Article Template
|
| 14 |
+
|
| 15 |
+
[](https://creativecommons.org/licenses/by/4.0/)
|
| 16 |
+
[](https://nodejs.org/)
|
| 17 |
+
[](https://astro.build/)
|
| 18 |
+
[](https://huggingface.co/spaces/tfrere/research-article-template)
|
| 19 |
+
|
| 20 |
+
> **A modern, interactive template for scientific writing** that brings papers to life with web-native features, minimal setup, and maximum impact.
|
| 21 |
+
|
| 22 |
+
## ✨ Features
|
| 23 |
+
|
| 24 |
+
- 🎯 **Markdown-based** - Write in familiar Markdown/MDX
|
| 25 |
+
- 🧮 **KaTeX math** - Beautiful mathematical notation
|
| 26 |
+
- 🎨 **Syntax highlighting** - Code blocks with proper highlighting
|
| 27 |
+
- 📚 **Academic citations** - BibTeX integration
|
| 28 |
+
- 📝 **Footnotes & sidenotes** - Rich annotation system
|
| 29 |
+
- 📋 **Table of contents** - Auto-generated navigation
|
| 30 |
+
- 📊 **Interactive diagrams** - Mermaid, Plotly, D3.js ready
|
| 31 |
+
- 🎭 **HTML embeds** - Include any web content
|
| 32 |
+
- 🤖 **Gradio app embeds** - Interactive ML demos
|
| 33 |
+
- 🎨 **Dataviz color palettes** - Consistent visual design
|
| 34 |
+
- 🖼️ **Optimized images** - Automatic optimization
|
| 35 |
+
- ⚡ **Lightweight bundle** - Fast loading
|
| 36 |
+
- 🔍 **SEO friendly** - Search engine optimized
|
| 37 |
+
- 🏗️ **Automatic build** - CI/CD ready
|
| 38 |
+
- 📄 **PDF export** - Generate publication-ready PDFs
|
| 39 |
+
- 🌙 **Dark theme** - Modern UI with theme toggle
|
| 40 |
+
- 📱 **Mobile friendly** - Responsive design
|
| 41 |
+
- 📥 **LaTeX import** - Convert existing papers
|
| 42 |
+
- 🔄 **Template updates** - Stay current with improvements
|
| 43 |
+
|
| 44 |
+
## 🚀 Quick Start
|
| 45 |
+
|
| 46 |
+
### Option 1: Duplicate on Hugging Face (Recommended)
|
| 47 |
+
|
| 48 |
+
1. Visit **[🤗 Research Article Template](https://huggingface.co/spaces/tfrere/research-article-template)**
|
| 49 |
+
2. Click **"Duplicate this Space"**
|
| 50 |
+
3. Clone your new repository:
|
| 51 |
+
```bash
|
| 52 |
+
git clone [email protected]:spaces/<your-username>/<your-space>
|
| 53 |
+
cd <your-space>
|
| 54 |
+
```
|
| 55 |
+
|
| 56 |
+
### Option 2: Clone Directly
|
| 57 |
+
|
| 58 |
+
```bash
|
| 59 |
+
git clone https://github.com/tfrere/research-article-template.git
|
| 60 |
+
cd research-article-template
|
| 61 |
+
```
|
| 62 |
+
|
| 63 |
+
### Installation
|
| 64 |
+
|
| 65 |
+
```bash
|
| 66 |
+
# Install Node.js 20+ (use nvm for version management)
|
| 67 |
+
nvm install 20
|
| 68 |
+
nvm use 20
|
| 69 |
+
|
| 70 |
+
# Install Git LFS and pull assets
|
| 71 |
+
git lfs install
|
| 72 |
+
git lfs pull
|
| 73 |
+
|
| 74 |
+
# Install dependencies
|
| 75 |
+
cd app
|
| 76 |
+
npm install
|
| 77 |
+
|
| 78 |
+
# Start development server
|
| 79 |
+
npm run dev
|
| 80 |
+
```
|
| 81 |
+
|
| 82 |
+
Visit `http://localhost:4321` to see your site!
|
| 83 |
+
|
| 84 |
+
## 📖 Documentation
|
| 85 |
+
|
| 86 |
+
- **[Getting Started Guide](https://huggingface.co/spaces/tfrere/research-article-template)** - Complete setup instructions
|
| 87 |
+
- **[Writing Best Practices](https://huggingface.co/spaces/tfrere/research-article-template)** - Tips for effective scientific writing
|
| 88 |
+
- **[Component Reference](https://huggingface.co/spaces/tfrere/research-article-template)** - Available blocks and features
|
| 89 |
+
- **[LaTeX Conversion](https://huggingface.co/spaces/tfrere/research-article-template)** - Import existing papers
|
| 90 |
+
|
| 91 |
+
## 🎯 Who This Is For
|
| 92 |
+
|
| 93 |
+
- **Scientists** writing modern, web-native research papers
|
| 94 |
+
- **Educators** creating interactive, explorable lessons
|
| 95 |
+
- **Researchers** who want to focus on ideas, not infrastructure
|
| 96 |
+
- **Anyone** who values clear, engaging technical communication
|
| 97 |
+
|
| 98 |
+
## 🌟 Inspired by Distill
|
| 99 |
+
|
| 100 |
+
This template carries forward the spirit of [Distill](https://distill.pub/) (2016–2021), pushing interactive scientific writing even further with:
|
| 101 |
+
- Accessible, high-quality explanations
|
| 102 |
+
- Reproducible, production-ready demos
|
| 103 |
+
- Modern web technologies and best practices
|
| 104 |
+
|
| 105 |
+
## 🤝 Contributing
|
| 106 |
+
|
| 107 |
+
We welcome contributions! Please see our [Contributing Guidelines](CONTRIBUTING.md) for details.
|
| 108 |
+
|
| 109 |
+
### Ways to Contribute
|
| 110 |
+
|
| 111 |
+
- 🐛 **Report bugs** - Open an issue with detailed information
|
| 112 |
+
- 💡 **Suggest features** - Share ideas for improvements
|
| 113 |
+
- 📝 **Improve documentation** - Help others get started
|
| 114 |
+
- 🔧 **Submit code** - Fix bugs or add features
|
| 115 |
+
- 💬 **Join discussions** - Share feedback and ideas
|
| 116 |
+
|
| 117 |
+
## 📄 License
|
| 118 |
+
|
| 119 |
+
This project is licensed under the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/).
|
| 120 |
+
|
| 121 |
+
- **Diagrams and text**: CC-BY 4.0
|
| 122 |
+
- **Source code**: Available on [Hugging Face](https://huggingface.co/spaces/tfrere/research-article-template)
|
| 123 |
+
- **Third-party figures**: Excluded and marked in captions
|
| 124 |
+
|
| 125 |
+
## 🙏 Acknowledgments
|
| 126 |
+
|
| 127 |
+
- Inspired by [Distill](https://distill.pub/) and the interactive scientific writing movement
|
| 128 |
+
- Built with [Astro](https://astro.build/), [MDX](https://mdxjs.com/), and modern web technologies
|
| 129 |
+
- Community feedback and contributions from researchers worldwide
|
| 130 |
+
|
| 131 |
+
## 📞 Support
|
| 132 |
+
|
| 133 |
+
- 💬 **[Community Discussions](https://huggingface.co/spaces/tfrere/research-article-template/discussions)** - Ask questions and share ideas
|
| 134 |
+
- 🐛 **[Report Issues](https://huggingface.co/spaces/tfrere/research-article-template/discussions?status=open&type=issue)** - Bug reports and feature requests
|
| 135 |
+
- 📧 **Contact**: [@tfrere](https://huggingface.co/tfrere) on Hugging Face
|
| 136 |
+
|
| 137 |
+
---
|
| 138 |
+
|
| 139 |
+
**Made with ❤️ for the scientific community**
|
app/.astro/astro/content.d.ts
CHANGED
|
@@ -1,284 +0,0 @@
|
|
| 1 |
-
declare module 'astro:content' {
|
| 2 |
-
interface Render {
|
| 3 |
-
'.mdx': Promise<{
|
| 4 |
-
Content: import('astro').MarkdownInstance<{}>['Content'];
|
| 5 |
-
headings: import('astro').MarkdownHeading[];
|
| 6 |
-
remarkPluginFrontmatter: Record<string, any>;
|
| 7 |
-
components: import('astro').MDXInstance<{}>['components'];
|
| 8 |
-
}>;
|
| 9 |
-
}
|
| 10 |
-
}
|
| 11 |
-
|
| 12 |
-
declare module 'astro:content' {
|
| 13 |
-
interface RenderResult {
|
| 14 |
-
Content: import('astro/runtime/server/index.js').AstroComponentFactory;
|
| 15 |
-
headings: import('astro').MarkdownHeading[];
|
| 16 |
-
remarkPluginFrontmatter: Record<string, any>;
|
| 17 |
-
}
|
| 18 |
-
interface Render {
|
| 19 |
-
'.md': Promise<RenderResult>;
|
| 20 |
-
}
|
| 21 |
-
|
| 22 |
-
export interface RenderedContent {
|
| 23 |
-
html: string;
|
| 24 |
-
metadata?: {
|
| 25 |
-
imagePaths: Array<string>;
|
| 26 |
-
[key: string]: unknown;
|
| 27 |
-
};
|
| 28 |
-
}
|
| 29 |
-
}
|
| 30 |
-
|
| 31 |
-
declare module 'astro:content' {
|
| 32 |
-
type Flatten<T> = T extends { [K: string]: infer U } ? U : never;
|
| 33 |
-
|
| 34 |
-
export type CollectionKey = keyof AnyEntryMap;
|
| 35 |
-
export type CollectionEntry<C extends CollectionKey> = Flatten<AnyEntryMap[C]>;
|
| 36 |
-
|
| 37 |
-
export type ContentCollectionKey = keyof ContentEntryMap;
|
| 38 |
-
export type DataCollectionKey = keyof DataEntryMap;
|
| 39 |
-
|
| 40 |
-
type AllValuesOf<T> = T extends any ? T[keyof T] : never;
|
| 41 |
-
type ValidContentEntrySlug<C extends keyof ContentEntryMap> = AllValuesOf<
|
| 42 |
-
ContentEntryMap[C]
|
| 43 |
-
>['slug'];
|
| 44 |
-
|
| 45 |
-
/** @deprecated Use `getEntry` instead. */
|
| 46 |
-
export function getEntryBySlug<
|
| 47 |
-
C extends keyof ContentEntryMap,
|
| 48 |
-
E extends ValidContentEntrySlug<C> | (string & {}),
|
| 49 |
-
>(
|
| 50 |
-
collection: C,
|
| 51 |
-
// Note that this has to accept a regular string too, for SSR
|
| 52 |
-
entrySlug: E,
|
| 53 |
-
): E extends ValidContentEntrySlug<C>
|
| 54 |
-
? Promise<CollectionEntry<C>>
|
| 55 |
-
: Promise<CollectionEntry<C> | undefined>;
|
| 56 |
-
|
| 57 |
-
/** @deprecated Use `getEntry` instead. */
|
| 58 |
-
export function getDataEntryById<C extends keyof DataEntryMap, E extends keyof DataEntryMap[C]>(
|
| 59 |
-
collection: C,
|
| 60 |
-
entryId: E,
|
| 61 |
-
): Promise<CollectionEntry<C>>;
|
| 62 |
-
|
| 63 |
-
export function getCollection<C extends keyof AnyEntryMap, E extends CollectionEntry<C>>(
|
| 64 |
-
collection: C,
|
| 65 |
-
filter?: (entry: CollectionEntry<C>) => entry is E,
|
| 66 |
-
): Promise<E[]>;
|
| 67 |
-
export function getCollection<C extends keyof AnyEntryMap>(
|
| 68 |
-
collection: C,
|
| 69 |
-
filter?: (entry: CollectionEntry<C>) => unknown,
|
| 70 |
-
): Promise<CollectionEntry<C>[]>;
|
| 71 |
-
|
| 72 |
-
export function getEntry<
|
| 73 |
-
C extends keyof ContentEntryMap,
|
| 74 |
-
E extends ValidContentEntrySlug<C> | (string & {}),
|
| 75 |
-
>(entry: {
|
| 76 |
-
collection: C;
|
| 77 |
-
slug: E;
|
| 78 |
-
}): E extends ValidContentEntrySlug<C>
|
| 79 |
-
? Promise<CollectionEntry<C>>
|
| 80 |
-
: Promise<CollectionEntry<C> | undefined>;
|
| 81 |
-
export function getEntry<
|
| 82 |
-
C extends keyof DataEntryMap,
|
| 83 |
-
E extends keyof DataEntryMap[C] | (string & {}),
|
| 84 |
-
>(entry: {
|
| 85 |
-
collection: C;
|
| 86 |
-
id: E;
|
| 87 |
-
}): E extends keyof DataEntryMap[C]
|
| 88 |
-
? Promise<DataEntryMap[C][E]>
|
| 89 |
-
: Promise<CollectionEntry<C> | undefined>;
|
| 90 |
-
export function getEntry<
|
| 91 |
-
C extends keyof ContentEntryMap,
|
| 92 |
-
E extends ValidContentEntrySlug<C> | (string & {}),
|
| 93 |
-
>(
|
| 94 |
-
collection: C,
|
| 95 |
-
slug: E,
|
| 96 |
-
): E extends ValidContentEntrySlug<C>
|
| 97 |
-
? Promise<CollectionEntry<C>>
|
| 98 |
-
: Promise<CollectionEntry<C> | undefined>;
|
| 99 |
-
export function getEntry<
|
| 100 |
-
C extends keyof DataEntryMap,
|
| 101 |
-
E extends keyof DataEntryMap[C] | (string & {}),
|
| 102 |
-
>(
|
| 103 |
-
collection: C,
|
| 104 |
-
id: E,
|
| 105 |
-
): E extends keyof DataEntryMap[C]
|
| 106 |
-
? Promise<DataEntryMap[C][E]>
|
| 107 |
-
: Promise<CollectionEntry<C> | undefined>;
|
| 108 |
-
|
| 109 |
-
/** Resolve an array of entry references from the same collection */
|
| 110 |
-
export function getEntries<C extends keyof ContentEntryMap>(
|
| 111 |
-
entries: {
|
| 112 |
-
collection: C;
|
| 113 |
-
slug: ValidContentEntrySlug<C>;
|
| 114 |
-
}[],
|
| 115 |
-
): Promise<CollectionEntry<C>[]>;
|
| 116 |
-
export function getEntries<C extends keyof DataEntryMap>(
|
| 117 |
-
entries: {
|
| 118 |
-
collection: C;
|
| 119 |
-
id: keyof DataEntryMap[C];
|
| 120 |
-
}[],
|
| 121 |
-
): Promise<CollectionEntry<C>[]>;
|
| 122 |
-
|
| 123 |
-
export function render<C extends keyof AnyEntryMap>(
|
| 124 |
-
entry: AnyEntryMap[C][string],
|
| 125 |
-
): Promise<RenderResult>;
|
| 126 |
-
|
| 127 |
-
export function reference<C extends keyof AnyEntryMap>(
|
| 128 |
-
collection: C,
|
| 129 |
-
): import('astro/zod').ZodEffects<
|
| 130 |
-
import('astro/zod').ZodString,
|
| 131 |
-
C extends keyof ContentEntryMap
|
| 132 |
-
? {
|
| 133 |
-
collection: C;
|
| 134 |
-
slug: ValidContentEntrySlug<C>;
|
| 135 |
-
}
|
| 136 |
-
: {
|
| 137 |
-
collection: C;
|
| 138 |
-
id: keyof DataEntryMap[C];
|
| 139 |
-
}
|
| 140 |
-
>;
|
| 141 |
-
// Allow generic `string` to avoid excessive type errors in the config
|
| 142 |
-
// if `dev` is not running to update as you edit.
|
| 143 |
-
// Invalid collection names will be caught at build time.
|
| 144 |
-
export function reference<C extends string>(
|
| 145 |
-
collection: C,
|
| 146 |
-
): import('astro/zod').ZodEffects<import('astro/zod').ZodString, never>;
|
| 147 |
-
|
| 148 |
-
type ReturnTypeOrOriginal<T> = T extends (...args: any[]) => infer R ? R : T;
|
| 149 |
-
type InferEntrySchema<C extends keyof AnyEntryMap> = import('astro/zod').infer<
|
| 150 |
-
ReturnTypeOrOriginal<Required<ContentConfig['collections'][C]>['schema']>
|
| 151 |
-
>;
|
| 152 |
-
|
| 153 |
-
type ContentEntryMap = {
|
| 154 |
-
"chapters": {
|
| 155 |
-
"demo/best-pratices.mdx": {
|
| 156 |
-
id: "demo/best-pratices.mdx";
|
| 157 |
-
slug: "demo/best-pratices";
|
| 158 |
-
body: string;
|
| 159 |
-
collection: "chapters";
|
| 160 |
-
data: any
|
| 161 |
-
} & { render(): Render[".mdx"] };
|
| 162 |
-
"demo/components.mdx": {
|
| 163 |
-
id: "demo/components.mdx";
|
| 164 |
-
slug: "demo/components";
|
| 165 |
-
body: string;
|
| 166 |
-
collection: "chapters";
|
| 167 |
-
data: any
|
| 168 |
-
} & { render(): Render[".mdx"] };
|
| 169 |
-
"demo/debug-components.mdx": {
|
| 170 |
-
id: "demo/debug-components.mdx";
|
| 171 |
-
slug: "demo/debug-components";
|
| 172 |
-
body: string;
|
| 173 |
-
collection: "chapters";
|
| 174 |
-
data: any
|
| 175 |
-
} & { render(): Render[".mdx"] };
|
| 176 |
-
"demo/getting-started.mdx": {
|
| 177 |
-
id: "demo/getting-started.mdx";
|
| 178 |
-
slug: "demo/getting-started";
|
| 179 |
-
body: string;
|
| 180 |
-
collection: "chapters";
|
| 181 |
-
data: any
|
| 182 |
-
} & { render(): Render[".mdx"] };
|
| 183 |
-
"demo/greetings.mdx": {
|
| 184 |
-
id: "demo/greetings.mdx";
|
| 185 |
-
slug: "demo/greetings";
|
| 186 |
-
body: string;
|
| 187 |
-
collection: "chapters";
|
| 188 |
-
data: any
|
| 189 |
-
} & { render(): Render[".mdx"] };
|
| 190 |
-
"demo/introduction.mdx": {
|
| 191 |
-
id: "demo/introduction.mdx";
|
| 192 |
-
slug: "demo/introduction";
|
| 193 |
-
body: string;
|
| 194 |
-
collection: "chapters";
|
| 195 |
-
data: any
|
| 196 |
-
} & { render(): Render[".mdx"] };
|
| 197 |
-
"demo/latex-convertion.mdx": {
|
| 198 |
-
id: "demo/latex-convertion.mdx";
|
| 199 |
-
slug: "demo/latex-convertion";
|
| 200 |
-
body: string;
|
| 201 |
-
collection: "chapters";
|
| 202 |
-
data: any
|
| 203 |
-
} & { render(): Render[".mdx"] };
|
| 204 |
-
"demo/markdown.mdx": {
|
| 205 |
-
id: "demo/markdown.mdx";
|
| 206 |
-
slug: "demo/markdown";
|
| 207 |
-
body: string;
|
| 208 |
-
collection: "chapters";
|
| 209 |
-
data: any
|
| 210 |
-
} & { render(): Render[".mdx"] };
|
| 211 |
-
"demo/vibe-coding-charts.mdx": {
|
| 212 |
-
id: "demo/vibe-coding-charts.mdx";
|
| 213 |
-
slug: "demo/vibe-coding-charts";
|
| 214 |
-
body: string;
|
| 215 |
-
collection: "chapters";
|
| 216 |
-
data: any
|
| 217 |
-
} & { render(): Render[".mdx"] };
|
| 218 |
-
"demo/writing-your-content.mdx": {
|
| 219 |
-
id: "demo/writing-your-content.mdx";
|
| 220 |
-
slug: "demo/writing-your-content";
|
| 221 |
-
body: string;
|
| 222 |
-
collection: "chapters";
|
| 223 |
-
data: any
|
| 224 |
-
} & { render(): Render[".mdx"] };
|
| 225 |
-
"your-first-chapter.mdx": {
|
| 226 |
-
id: "your-first-chapter.mdx";
|
| 227 |
-
slug: "your-first-chapter";
|
| 228 |
-
body: string;
|
| 229 |
-
collection: "chapters";
|
| 230 |
-
data: any
|
| 231 |
-
} & { render(): Render[".mdx"] };
|
| 232 |
-
};
|
| 233 |
-
"embeds": {
|
| 234 |
-
"vibe-code-d3-embeds-directives.md": {
|
| 235 |
-
id: "vibe-code-d3-embeds-directives.md";
|
| 236 |
-
slug: "vibe-code-d3-embeds-directives";
|
| 237 |
-
body: string;
|
| 238 |
-
collection: "embeds";
|
| 239 |
-
data: any
|
| 240 |
-
} & { render(): Render[".md"] };
|
| 241 |
-
};
|
| 242 |
-
|
| 243 |
-
};
|
| 244 |
-
|
| 245 |
-
type DataEntryMap = {
|
| 246 |
-
"assets": {
|
| 247 |
-
"data/data": {
|
| 248 |
-
id: "data/data";
|
| 249 |
-
collection: "assets";
|
| 250 |
-
data: any
|
| 251 |
-
};
|
| 252 |
-
"data/font-sprite-mapping": {
|
| 253 |
-
id: "data/font-sprite-mapping";
|
| 254 |
-
collection: "assets";
|
| 255 |
-
data: any
|
| 256 |
-
};
|
| 257 |
-
"data/font_manifest": {
|
| 258 |
-
id: "data/font_manifest";
|
| 259 |
-
collection: "assets";
|
| 260 |
-
data: any
|
| 261 |
-
};
|
| 262 |
-
"data/llm_benchmarks": {
|
| 263 |
-
id: "data/llm_benchmarks";
|
| 264 |
-
collection: "assets";
|
| 265 |
-
data: any
|
| 266 |
-
};
|
| 267 |
-
"data/mnist-variant-model": {
|
| 268 |
-
id: "data/mnist-variant-model";
|
| 269 |
-
collection: "assets";
|
| 270 |
-
data: any
|
| 271 |
-
};
|
| 272 |
-
"data/typography_data": {
|
| 273 |
-
id: "data/typography_data";
|
| 274 |
-
collection: "assets";
|
| 275 |
-
data: any
|
| 276 |
-
};
|
| 277 |
-
};
|
| 278 |
-
|
| 279 |
-
};
|
| 280 |
-
|
| 281 |
-
type AnyEntryMap = ContentEntryMap & DataEntryMap;
|
| 282 |
-
|
| 283 |
-
export type ContentConfig = never;
|
| 284 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/package.json
CHANGED
|
Binary files a/app/package.json and b/app/package.json differ
|
|
|
app/scripts/latex-to-mdx/input/.gitignore
DELETED
|
@@ -1,13 +0,0 @@
|
|
| 1 |
-
.DS_store
|
| 2 |
-
|
| 3 |
-
*.aux
|
| 4 |
-
*.nav
|
| 5 |
-
*.log
|
| 6 |
-
*.snm
|
| 7 |
-
*.toc
|
| 8 |
-
*.out
|
| 9 |
-
*.vrb
|
| 10 |
-
*.blg
|
| 11 |
-
*latexmk*
|
| 12 |
-
*fls
|
| 13 |
-
*synctex*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/scripts/latex-to-mdx/input/README.md
DELETED
|
@@ -1,64 +0,0 @@
|
|
| 1 |
-
# Robot Learning: A Tutorial
|
| 2 |
-
|
| 3 |
-
Google "robot learning tutorial", and you will spend just as much time skimming through sources as actually learning about robot learning.
|
| 4 |
-
This tutorial solves this: a unified entry point to the field of robot learning, presenting the conceptual underpinnings of popular approaches in the field, as well as presenting practical examples of how to use SOTA algorithms in `lerobot`, an open-source library for full-stack robotics.
|
| 5 |
-
|
| 6 |
-
# TODO
|
| 7 |
-
|
| 8 |
-
```markdown
|
| 9 |
-
## 1. Introduction
|
| 10 |
-
- [x] 1.1 Motivation
|
| 11 |
-
- [x] 1.2 Structure of the Report
|
| 12 |
-
|
| 13 |
-
## 2. Classical Robotics
|
| 14 |
-
- [x] 2.1 Different kinds of motion
|
| 15 |
-
- [x] 2.2 Example: (Planar) Manipulation
|
| 16 |
-
- [x] 2.3.1 Adding Feedback Loops
|
| 17 |
-
- [x] 2.4 Limitations of Dynamics-based Robotics
|
| 18 |
-
|
| 19 |
-
## 3. Robot Learning
|
| 20 |
-
- [ ] 3.1 Reinforcement Learning (RL) for Robotics
|
| 21 |
-
- [ ] 3.1.1 A (Concise) Introduction to RL
|
| 22 |
-
- [ ] 3.2 Model-Free RL for Real-world Robotics
|
| 23 |
-
- [ ] 3.2.1 RL in lerobot: sample efficient, data-driven, and real-world
|
| 24 |
-
- [ ] 3.2.2 Code Example: HIL-SERL in lerobot
|
| 25 |
-
- [ ] 3.3 Limitations of RL in Real-World Robotics: Simulators and Reward Design
|
| 26 |
-
- [ ] 3.4 Behavioral Cloning (BC) for Robotics
|
| 27 |
-
- [ ] 4.1.1 Leveraging Real-World Demonstrations
|
| 28 |
-
- [ ] 4.1.2 Reward-Free Training and Betting on Data
|
| 29 |
-
|
| 30 |
-
## 4. Single-Task Policy Architectures
|
| 31 |
-
- [ ] 4.2 Action Chunking with Transformers (ACT)
|
| 32 |
-
- [ ] 4.2.1 Model Architecture and Training Objectives
|
| 33 |
-
- [ ] 4.2.2 Code Example: Use ACT in lerobot
|
| 34 |
-
- [ ] 4.3 Diffusion-Based Policy Models
|
| 35 |
-
- [ ] 4.3.1 Generative Modeling for Action Sequences
|
| 36 |
-
- [ ] 4.3.2 Code Example: Use Diffusion Policy in lerobot
|
| 37 |
-
|
| 38 |
-
## 5. Multi-task Policies: Vision-Language-Action (VLA) Models in Robotics
|
| 39 |
-
- [ ] 5.1 Multi-task Policies: Vision-Language-Action (VLA) Models in Robotics
|
| 40 |
-
- [ ] 5.1.1 Overview of Major Architectures: Pi0, SmolVLA
|
| 41 |
-
- [ ] 5.1.2 Practical Implementation: Using VLA in lerobot
|
| 42 |
-
|
| 43 |
-
## 6. Some Emerging Directions in Robot Learning
|
| 44 |
-
- [ ] 6.1 VLAs Post-Training
|
| 45 |
-
- [ ] 6.1.1 From Imitation to Refinement
|
| 46 |
-
- [ ] 6.1.2 EXPO
|
| 47 |
-
|
| 48 |
-
## 7. Conclusions
|
| 49 |
-
```
|
| 50 |
-
|
| 51 |
-
If time permits (vs current TOC):
|
| 52 |
-
|
| 53 |
-
- [ ] 3.3 Model-based RL for Robotics
|
| 54 |
-
- [ ] 3.3.1 TD-MPC
|
| 55 |
-
- [ ] 3.3.2 Code Example: Use TD-MPC in lerobot
|
| 56 |
-
- [ ] 3.5 Popular benchmarks in Robot Learning
|
| 57 |
-
|
| 58 |
-
- 4.3 Vector-Quantized Behavior Transformer (VQ-BeT)
|
| 59 |
-
- [ ] 4.3.1 Model Architecture and Training Objectives
|
| 60 |
-
- [ ] 4.3.2 Code Example: Use VQ-BeT in lerobot
|
| 61 |
-
|
| 62 |
-
- [ ] 6.1 Using World Models for Robotics
|
| 63 |
-
- [ ] 6.1.1 In the architecture: V-JEPA and V-JEPA2
|
| 64 |
-
- [ ] 6.1.2 In the simulation: GENIE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/scripts/latex-to-mdx/input/_minted/62B8750C0ACEBDA39A95140434E540A8.highlight.minted
DELETED
|
@@ -1,52 +0,0 @@
|
|
| 1 |
-
\begin{MintedVerbatim}[commandchars=\\\{\}]
|
| 2 |
-
\PYG{k+kn}{import}\PYG{+w}{ }\PYG{n+nn}{torch}
|
| 3 |
-
\PYG{k+kn}{from}\PYG{+w}{ }\PYG{n+nn}{lerobot}\PYG{n+nn}{.}\PYG{n+nn}{datasets}\PYG{n+nn}{.}\PYG{n+nn}{lerobot\PYGZus{}dataset}\PYG{+w}{ }\PYG{k+kn}{import} \PYG{n}{LeRobotDataset}
|
| 4 |
-
\PYG{k+kn}{from}\PYG{+w}{ }\PYG{n+nn}{lerobot}\PYG{n+nn}{.}\PYG{n+nn}{datasets}\PYG{n+nn}{.}\PYG{n+nn}{streaming\PYGZus{}dataset}\PYG{+w}{ }\PYG{k+kn}{import} \PYG{n}{StreamingLeRobotDataset}
|
| 5 |
-
|
| 6 |
-
\PYG{n}{delta\PYGZus{}timestamps} \PYG{o}{=} \PYG{p}{\PYGZob{}}
|
| 7 |
-
\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{observation.images.wrist\PYGZus{}camera}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{:} \PYG{p}{[}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{0.2}\PYG{p}{,} \PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{0.1}\PYG{p}{,} \PYG{l+m+mf}{0.0}\PYG{p}{]} \PYG{c+c1}{\PYGZsh{} 0.2, and 0.1 seconds *before* each frame}
|
| 8 |
-
\PYG{p}{\PYGZcb{}}
|
| 9 |
-
|
| 10 |
-
\PYG{c+c1}{\PYGZsh{} Optionally, use StreamingLeRobotDataset to avoid downloading the dataset}
|
| 11 |
-
\PYG{n}{dataset} \PYG{o}{=} \PYG{n}{LeRobotDataset}\PYG{p}{(}
|
| 12 |
-
\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{lerobot/svla\PYGZus{}so101\PYGZus{}pickplace}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{,}
|
| 13 |
-
\PYG{n}{delta\PYGZus{}timestamps}\PYG{o}{=}\PYG{n}{delta\PYGZus{}timestamps}
|
| 14 |
-
\PYG{p}{)}
|
| 15 |
-
|
| 16 |
-
\PYG{c+c1}{\PYGZsh{} Streams frames from the Hugging Face Hub without loading into memory}
|
| 17 |
-
\PYG{n}{streaming\PYGZus{}dataset} \PYG{o}{=} \PYG{n}{StreamingLeRobotDataset}\PYG{p}{(}
|
| 18 |
-
\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{lerobot/svla\PYGZus{}so101\PYGZus{}pickplace}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{,}
|
| 19 |
-
\PYG{n}{delta\PYGZus{}timestamps}\PYG{o}{=}\PYG{n}{delta\PYGZus{}timestamps}
|
| 20 |
-
\PYG{p}{)}
|
| 21 |
-
|
| 22 |
-
\PYG{c+c1}{\PYGZsh{} Get the 100th frame in the dataset by }
|
| 23 |
-
\PYG{n}{sample} \PYG{o}{=} \PYG{n}{dataset}\PYG{p}{[}\PYG{l+m+mi}{100}\PYG{p}{]}
|
| 24 |
-
\PYG{n+nb}{print}\PYG{p}{(}\PYG{n}{sample}\PYG{p}{)}
|
| 25 |
-
\PYG{c+c1}{\PYGZsh{} \PYGZob{}}
|
| 26 |
-
\PYG{c+c1}{\PYGZsh{} \PYGZsq{}observation.state\PYGZsq{}: tensor([...]), }
|
| 27 |
-
\PYG{c+c1}{\PYGZsh{} \PYGZsq{}action\PYGZsq{}: tensor([...]), }
|
| 28 |
-
\PYG{c+c1}{\PYGZsh{} \PYGZsq{}observation.images.wrist\PYGZus{}camera\PYGZsq{}: tensor([3, C, H, W]), for delta timesteps}
|
| 29 |
-
\PYG{c+c1}{\PYGZsh{} ...}
|
| 30 |
-
\PYG{c+c1}{\PYGZsh{} \PYGZcb{}}
|
| 31 |
-
|
| 32 |
-
\PYG{n}{batch\PYGZus{}size}\PYG{o}{=}\PYG{l+m+mi}{16}
|
| 33 |
-
\PYG{c+c1}{\PYGZsh{} wrap the dataset in a DataLoader to use process it batches for training purposes}
|
| 34 |
-
\PYG{n}{data\PYGZus{}loader} \PYG{o}{=} \PYG{n}{torch}\PYG{o}{.}\PYG{n}{utils}\PYG{o}{.}\PYG{n}{data}\PYG{o}{.}\PYG{n}{DataLoader}\PYG{p}{(}
|
| 35 |
-
\PYG{n}{dataset}\PYG{p}{,}
|
| 36 |
-
\PYG{n}{batch\PYGZus{}size}\PYG{o}{=}\PYG{n}{batch\PYGZus{}size}
|
| 37 |
-
\PYG{p}{)}
|
| 38 |
-
|
| 39 |
-
\PYG{c+c1}{\PYGZsh{} Iterate over the DataLoader in a training loop}
|
| 40 |
-
\PYG{n}{num\PYGZus{}epochs} \PYG{o}{=} \PYG{l+m+mi}{1}
|
| 41 |
-
\PYG{n}{device} \PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cuda}\PYG{l+s+s2}{\PYGZdq{}} \PYG{k}{if} \PYG{n}{torch}\PYG{o}{.}\PYG{n}{cuda}\PYG{o}{.}\PYG{n}{is\PYGZus{}available}\PYG{p}{(}\PYG{p}{)} \PYG{k}{else} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{cpu}\PYG{l+s+s2}{\PYGZdq{}}
|
| 42 |
-
|
| 43 |
-
\PYG{k}{for} \PYG{n}{epoch} \PYG{o+ow}{in} \PYG{n+nb}{range}\PYG{p}{(}\PYG{n}{num\PYGZus{}epochs}\PYG{p}{)}\PYG{p}{:}
|
| 44 |
-
\PYG{k}{for} \PYG{n}{batch} \PYG{o+ow}{in} \PYG{n}{data\PYGZus{}loader}\PYG{p}{:}
|
| 45 |
-
\PYG{c+c1}{\PYGZsh{} Move data to the appropriate device (e.g., GPU)}
|
| 46 |
-
\PYG{n}{observations} \PYG{o}{=} \PYG{n}{batch}\PYG{p}{[}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{observation.state}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{]}\PYG{o}{.}\PYG{n}{to}\PYG{p}{(}\PYG{n}{device}\PYG{p}{)}
|
| 47 |
-
\PYG{n}{actions} \PYG{o}{=} \PYG{n}{batch}\PYG{p}{[}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{action}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{]}\PYG{o}{.}\PYG{n}{to}\PYG{p}{(}\PYG{n}{device}\PYG{p}{)}
|
| 48 |
-
\PYG{n}{images} \PYG{o}{=} \PYG{n}{batch}\PYG{p}{[}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{observation.images.wrist\PYGZus{}camera}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{]}\PYG{o}{.}\PYG{n}{to}\PYG{p}{(}\PYG{n}{device}\PYG{p}{)}
|
| 49 |
-
|
| 50 |
-
\PYG{c+c1}{\PYGZsh{} Next, you can do amazing\PYGZus{}model.forward(batch)}
|
| 51 |
-
\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}
|
| 52 |
-
\end{MintedVerbatim}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/scripts/latex-to-mdx/input/_minted/_FAD58DE7366495DB4650CFEFAC2FCD61.index.minted
DELETED
|
@@ -1,10 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"jobname": "main",
|
| 3 |
-
"md5": "FAD58DE7366495DB4650CFEFAC2FCD61",
|
| 4 |
-
"timestamp": "20250911180655",
|
| 5 |
-
"cachefiles": [
|
| 6 |
-
"62B8750C0ACEBDA39A95140434E540A8.highlight.minted",
|
| 7 |
-
"_FAD58DE7366495DB4650CFEFAC2FCD61.index.minted",
|
| 8 |
-
"colorful.style.minted"
|
| 9 |
-
]
|
| 10 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/scripts/latex-to-mdx/input/_minted/colorful.style.minted
DELETED
|
@@ -1,100 +0,0 @@
|
|
| 1 |
-
\makeatletter
|
| 2 |
-
\def\PYG@reset{\let\PYG@it=\relax \let\PYG@bf=\relax%
|
| 3 |
-
\let\PYG@ul=\relax \let\PYG@tc=\relax%
|
| 4 |
-
\let\PYG@bc=\relax \let\PYG@ff=\relax}
|
| 5 |
-
\def\PYG@tok#1{\csname PYG@tok@#1\endcsname}
|
| 6 |
-
\def\PYG@toks#1+{\ifx\relax#1\empty\else%
|
| 7 |
-
\PYG@tok{#1}\expandafter\PYG@toks\fi}
|
| 8 |
-
\def\PYG@do#1{\PYG@bc{\PYG@tc{\PYG@ul{%
|
| 9 |
-
\PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}}
|
| 10 |
-
\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}}
|
| 11 |
-
|
| 12 |
-
\@namedef{PYG@tok@w}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
|
| 13 |
-
\@namedef{PYG@tok@c}{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
|
| 14 |
-
\@namedef{PYG@tok@cp}{\def\PYG@tc##1{\textcolor[rgb]{0.33,0.47,0.60}{##1}}}
|
| 15 |
-
\@namedef{PYG@tok@cs}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.80,0.00,0.00}{##1}}}
|
| 16 |
-
\@namedef{PYG@tok@k}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.53,0.00}{##1}}}
|
| 17 |
-
\@namedef{PYG@tok@kp}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.20,0.53}{##1}}}
|
| 18 |
-
\@namedef{PYG@tok@kt}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.20,0.20,0.60}{##1}}}
|
| 19 |
-
\@namedef{PYG@tok@o}{\def\PYG@tc##1{\textcolor[rgb]{0.20,0.20,0.20}{##1}}}
|
| 20 |
-
\@namedef{PYG@tok@ow}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.00}{##1}}}
|
| 21 |
-
\@namedef{PYG@tok@nb}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
|
| 22 |
-
\@namedef{PYG@tok@nf}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.40,0.73}{##1}}}
|
| 23 |
-
\@namedef{PYG@tok@nc}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.73,0.00,0.40}{##1}}}
|
| 24 |
-
\@namedef{PYG@tok@nn}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}}
|
| 25 |
-
\@namedef{PYG@tok@ne}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
|
| 26 |
-
\@namedef{PYG@tok@nv}{\def\PYG@tc##1{\textcolor[rgb]{0.60,0.40,0.20}{##1}}}
|
| 27 |
-
\@namedef{PYG@tok@vi}{\def\PYG@tc##1{\textcolor[rgb]{0.20,0.20,0.73}{##1}}}
|
| 28 |
-
\@namedef{PYG@tok@vc}{\def\PYG@tc##1{\textcolor[rgb]{0.20,0.40,0.60}{##1}}}
|
| 29 |
-
\@namedef{PYG@tok@vg}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.87,0.47,0.00}{##1}}}
|
| 30 |
-
\@namedef{PYG@tok@no}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.20,0.40}{##1}}}
|
| 31 |
-
\@namedef{PYG@tok@nl}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.60,0.47,0.00}{##1}}}
|
| 32 |
-
\@namedef{PYG@tok@ni}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}}
|
| 33 |
-
\@namedef{PYG@tok@na}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.80}{##1}}}
|
| 34 |
-
\@namedef{PYG@tok@nt}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.47,0.00}{##1}}}
|
| 35 |
-
\@namedef{PYG@tok@nd}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.33,0.33,0.33}{##1}}}
|
| 36 |
-
\@namedef{PYG@tok@s}{\def\PYG@bc##1{{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}}
|
| 37 |
-
\@namedef{PYG@tok@sc}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}}
|
| 38 |
-
\@namedef{PYG@tok@sd}{\def\PYG@tc##1{\textcolor[rgb]{0.87,0.27,0.13}{##1}}}
|
| 39 |
-
\@namedef{PYG@tok@si}{\def\PYG@bc##1{{\setlength{\fboxsep}{0pt}\colorbox[rgb]{0.93,0.93,0.93}{\strut ##1}}}}
|
| 40 |
-
\@namedef{PYG@tok@se}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}\def\PYG@bc##1{{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}}
|
| 41 |
-
\@namedef{PYG@tok@sr}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.00}{##1}}\def\PYG@bc##1{{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,1.00}{\strut ##1}}}}
|
| 42 |
-
\@namedef{PYG@tok@ss}{\def\PYG@tc##1{\textcolor[rgb]{0.67,0.40,0.00}{##1}}}
|
| 43 |
-
\@namedef{PYG@tok@sx}{\def\PYG@tc##1{\textcolor[rgb]{0.87,0.13,0.00}{##1}}\def\PYG@bc##1{{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}}
|
| 44 |
-
\@namedef{PYG@tok@m}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.40,0.00,0.93}{##1}}}
|
| 45 |
-
\@namedef{PYG@tok@mi}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.87}{##1}}}
|
| 46 |
-
\@namedef{PYG@tok@mf}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.40,0.00,0.93}{##1}}}
|
| 47 |
-
\@namedef{PYG@tok@mh}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.33,0.53}{##1}}}
|
| 48 |
-
\@namedef{PYG@tok@mo}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.27,0.00,0.93}{##1}}}
|
| 49 |
-
\@namedef{PYG@tok@gh}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
|
| 50 |
-
\@namedef{PYG@tok@gu}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}}
|
| 51 |
-
\@namedef{PYG@tok@gd}{\def\PYG@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}}
|
| 52 |
-
\@namedef{PYG@tok@gi}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}}
|
| 53 |
-
\@namedef{PYG@tok@gr}{\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
|
| 54 |
-
\@namedef{PYG@tok@ge}{\let\PYG@it=\textit}
|
| 55 |
-
\@namedef{PYG@tok@gs}{\let\PYG@bf=\textbf}
|
| 56 |
-
\@namedef{PYG@tok@ges}{\let\PYG@bf=\textbf\let\PYG@it=\textit}
|
| 57 |
-
\@namedef{PYG@tok@gp}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}}
|
| 58 |
-
\@namedef{PYG@tok@go}{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
|
| 59 |
-
\@namedef{PYG@tok@gt}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}}
|
| 60 |
-
\@namedef{PYG@tok@err}{\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}\def\PYG@bc##1{{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.67,0.67}{\strut ##1}}}}
|
| 61 |
-
\@namedef{PYG@tok@kc}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.53,0.00}{##1}}}
|
| 62 |
-
\@namedef{PYG@tok@kd}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.53,0.00}{##1}}}
|
| 63 |
-
\@namedef{PYG@tok@kn}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.53,0.00}{##1}}}
|
| 64 |
-
\@namedef{PYG@tok@kr}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.53,0.00}{##1}}}
|
| 65 |
-
\@namedef{PYG@tok@bp}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
|
| 66 |
-
\@namedef{PYG@tok@fm}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.40,0.73}{##1}}}
|
| 67 |
-
\@namedef{PYG@tok@vm}{\def\PYG@tc##1{\textcolor[rgb]{0.60,0.40,0.20}{##1}}}
|
| 68 |
-
\@namedef{PYG@tok@sa}{\def\PYG@bc##1{{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}}
|
| 69 |
-
\@namedef{PYG@tok@sb}{\def\PYG@bc##1{{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}}
|
| 70 |
-
\@namedef{PYG@tok@dl}{\def\PYG@bc##1{{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}}
|
| 71 |
-
\@namedef{PYG@tok@s2}{\def\PYG@bc##1{{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}}
|
| 72 |
-
\@namedef{PYG@tok@sh}{\def\PYG@bc##1{{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}}
|
| 73 |
-
\@namedef{PYG@tok@s1}{\def\PYG@bc##1{{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}}
|
| 74 |
-
\@namedef{PYG@tok@mb}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.40,0.00,0.93}{##1}}}
|
| 75 |
-
\@namedef{PYG@tok@il}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.87}{##1}}}
|
| 76 |
-
\@namedef{PYG@tok@ch}{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
|
| 77 |
-
\@namedef{PYG@tok@cm}{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
|
| 78 |
-
\@namedef{PYG@tok@cpf}{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
|
| 79 |
-
\@namedef{PYG@tok@c1}{\def\PYG@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
|
| 80 |
-
|
| 81 |
-
\def\PYGZbs{\char`\\}
|
| 82 |
-
\def\PYGZus{\char`\_}
|
| 83 |
-
\def\PYGZob{\char`\{}
|
| 84 |
-
\def\PYGZcb{\char`\}}
|
| 85 |
-
\def\PYGZca{\char`\^}
|
| 86 |
-
\def\PYGZam{\char`\&}
|
| 87 |
-
\def\PYGZlt{\char`\<}
|
| 88 |
-
\def\PYGZgt{\char`\>}
|
| 89 |
-
\def\PYGZsh{\char`\#}
|
| 90 |
-
\def\PYGZpc{\char`\%}
|
| 91 |
-
\def\PYGZdl{\char`\$}
|
| 92 |
-
\def\PYGZhy{\char`\-}
|
| 93 |
-
\def\PYGZsq{\char`\'}
|
| 94 |
-
\def\PYGZdq{\char`\"}
|
| 95 |
-
\def\PYGZti{\char`\~}
|
| 96 |
-
% for compatibility with earlier versions
|
| 97 |
-
\def\PYGZat{@}
|
| 98 |
-
\def\PYGZlb{[}
|
| 99 |
-
\def\PYGZrb{]}
|
| 100 |
-
\makeatother
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/scripts/latex-to-mdx/input/fancyhdr.sty
DELETED
|
@@ -1,485 +0,0 @@
|
|
| 1 |
-
% fancyhdr.sty version 3.2
|
| 2 |
-
% Fancy headers and footers for LaTeX.
|
| 3 |
-
% Piet van Oostrum,
|
| 4 |
-
% Dept of Computer and Information Sciences, University of Utrecht,
|
| 5 |
-
% Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands
|
| 6 |
-
% Telephone: +31 30 2532180. Email: [email protected]
|
| 7 |
-
% ========================================================================
|
| 8 |
-
% LICENCE:
|
| 9 |
-
% This file may be distributed under the terms of the LaTeX Project Public
|
| 10 |
-
% License, as described in lppl.txt in the base LaTeX distribution.
|
| 11 |
-
% Either version 1 or, at your option, any later version.
|
| 12 |
-
% ========================================================================
|
| 13 |
-
% MODIFICATION HISTORY:
|
| 14 |
-
% Sep 16, 1994
|
| 15 |
-
% version 1.4: Correction for use with \reversemargin
|
| 16 |
-
% Sep 29, 1994:
|
| 17 |
-
% version 1.5: Added the \iftopfloat, \ifbotfloat and \iffloatpage commands
|
| 18 |
-
% Oct 4, 1994:
|
| 19 |
-
% version 1.6: Reset single spacing in headers/footers for use with
|
| 20 |
-
% setspace.sty or doublespace.sty
|
| 21 |
-
% Oct 4, 1994:
|
| 22 |
-
% version 1.7: changed \let\@mkboth\markboth to
|
| 23 |
-
% \def\@mkboth{\protect\markboth} to make it more robust
|
| 24 |
-
% Dec 5, 1994:
|
| 25 |
-
% version 1.8: corrections for amsbook/amsart: define \@chapapp and (more
|
| 26 |
-
% importantly) use the \chapter/sectionmark definitions from ps@headings if
|
| 27 |
-
% they exist (which should be true for all standard classes).
|
| 28 |
-
% May 31, 1995:
|
| 29 |
-
% version 1.9: The proposed \renewcommand{\headrulewidth}{\iffloatpage...
|
| 30 |
-
% construction in the doc did not work properly with the fancyplain style.
|
| 31 |
-
% June 1, 1995:
|
| 32 |
-
% version 1.91: The definition of \@mkboth wasn't restored on subsequent
|
| 33 |
-
% \pagestyle{fancy}'s.
|
| 34 |
-
% June 1, 1995:
|
| 35 |
-
% version 1.92: The sequence \pagestyle{fancyplain} \pagestyle{plain}
|
| 36 |
-
% \pagestyle{fancy} would erroneously select the plain version.
|
| 37 |
-
% June 1, 1995:
|
| 38 |
-
% version 1.93: \fancypagestyle command added.
|
| 39 |
-
% Dec 11, 1995:
|
| 40 |
-
% version 1.94: suggested by Conrad Hughes <[email protected]>
|
| 41 |
-
% CJCH, Dec 11, 1995: added \footruleskip to allow control over footrule
|
| 42 |
-
% position (old hardcoded value of .3\normalbaselineskip is far too high
|
| 43 |
-
% when used with very small footer fonts).
|
| 44 |
-
% Jan 31, 1996:
|
| 45 |
-
% version 1.95: call \@normalsize in the reset code if that is defined,
|
| 46 |
-
% otherwise \normalsize.
|
| 47 |
-
% this is to solve a problem with ucthesis.cls, as this doesn't
|
| 48 |
-
% define \@currsize. Unfortunately for latex209 calling \normalsize doesn't
|
| 49 |
-
% work as this is optimized to do very little, so there \@normalsize should
|
| 50 |
-
% be called. Hopefully this code works for all versions of LaTeX known to
|
| 51 |
-
% mankind.
|
| 52 |
-
% April 25, 1996:
|
| 53 |
-
% version 1.96: initialize \headwidth to a magic (negative) value to catch
|
| 54 |
-
% most common cases that people change it before calling \pagestyle{fancy}.
|
| 55 |
-
% Note it can't be initialized when reading in this file, because
|
| 56 |
-
% \textwidth could be changed afterwards. This is quite probable.
|
| 57 |
-
% We also switch to \MakeUppercase rather than \uppercase and introduce a
|
| 58 |
-
% \nouppercase command for use in headers. and footers.
|
| 59 |
-
% May 3, 1996:
|
| 60 |
-
% version 1.97: Two changes:
|
| 61 |
-
% 1. Undo the change in version 1.8 (using the pagestyle{headings} defaults
|
| 62 |
-
% for the chapter and section marks. The current version of amsbook and
|
| 63 |
-
% amsart classes don't seem to need them anymore. Moreover the standard
|
| 64 |
-
% latex classes don't use \markboth if twoside isn't selected, and this is
|
| 65 |
-
% confusing as \leftmark doesn't work as expected.
|
| 66 |
-
% 2. include a call to \ps@empty in ps@@fancy. This is to solve a problem
|
| 67 |
-
% in the amsbook and amsart classes, that make global changes to \topskip,
|
| 68 |
-
% which are reset in \ps@empty. Hopefully this doesn't break other things.
|
| 69 |
-
% May 7, 1996:
|
| 70 |
-
% version 1.98:
|
| 71 |
-
% Added % after the line \def\nouppercase
|
| 72 |
-
% May 7, 1996:
|
| 73 |
-
% version 1.99: This is the alpha version of fancyhdr 2.0
|
| 74 |
-
% Introduced the new commands \fancyhead, \fancyfoot, and \fancyhf.
|
| 75 |
-
% Changed \headrulewidth, \footrulewidth, \footruleskip to
|
| 76 |
-
% macros rather than length parameters, In this way they can be
|
| 77 |
-
% conditionalized and they don't consume length registers. There is no need
|
| 78 |
-
% to have them as length registers unless you want to do calculations with
|
| 79 |
-
% them, which is unlikely. Note that this may make some uses of them
|
| 80 |
-
% incompatible (i.e. if you have a file that uses \setlength or \xxxx=)
|
| 81 |
-
% May 10, 1996:
|
| 82 |
-
% version 1.99a:
|
| 83 |
-
% Added a few more % signs
|
| 84 |
-
% May 10, 1996:
|
| 85 |
-
% version 1.99b:
|
| 86 |
-
% Changed the syntax of \f@nfor to be resistent to catcode changes of :=
|
| 87 |
-
% Removed the [1] from the defs of \lhead etc. because the parameter is
|
| 88 |
-
% consumed by the \@[xy]lhead etc. macros.
|
| 89 |
-
% June 24, 1997:
|
| 90 |
-
% version 1.99c:
|
| 91 |
-
% corrected \nouppercase to also include the protected form of \MakeUppercase
|
| 92 |
-
% \global added to manipulation of \headwidth.
|
| 93 |
-
% \iffootnote command added.
|
| 94 |
-
% Some comments added about \@fancyhead and \@fancyfoot.
|
| 95 |
-
% Aug 24, 1998
|
| 96 |
-
% version 1.99d
|
| 97 |
-
% Changed the default \ps@empty to \ps@@empty in order to allow
|
| 98 |
-
% \fancypagestyle{empty} redefinition.
|
| 99 |
-
% Oct 11, 2000
|
| 100 |
-
% version 2.0
|
| 101 |
-
% Added LPPL license clause.
|
| 102 |
-
%
|
| 103 |
-
% A check for \headheight is added. An errormessage is given (once) if the
|
| 104 |
-
% header is too large. Empty headers don't generate the error even if
|
| 105 |
-
% \headheight is very small or even 0pt.
|
| 106 |
-
% Warning added for the use of 'E' option when twoside option is not used.
|
| 107 |
-
% In this case the 'E' fields will never be used.
|
| 108 |
-
%
|
| 109 |
-
% Mar 10, 2002
|
| 110 |
-
% version 2.1beta
|
| 111 |
-
% New command: \fancyhfoffset[place]{length}
|
| 112 |
-
% defines offsets to be applied to the header/footer to let it stick into
|
| 113 |
-
% the margins (if length > 0).
|
| 114 |
-
% place is like in fancyhead, except that only E,O,L,R can be used.
|
| 115 |
-
% This replaces the old calculation based on \headwidth and the marginpar
|
| 116 |
-
% area.
|
| 117 |
-
% \headwidth will be dynamically calculated in the headers/footers when
|
| 118 |
-
% this is used.
|
| 119 |
-
%
|
| 120 |
-
% Mar 26, 2002
|
| 121 |
-
% version 2.1beta2
|
| 122 |
-
% \fancyhfoffset now also takes h,f as possible letters in the argument to
|
| 123 |
-
% allow the header and footer widths to be different.
|
| 124 |
-
% New commands \fancyheadoffset and \fancyfootoffset added comparable to
|
| 125 |
-
% \fancyhead and \fancyfoot.
|
| 126 |
-
% Errormessages and warnings have been made more informative.
|
| 127 |
-
%
|
| 128 |
-
% Dec 9, 2002
|
| 129 |
-
% version 2.1
|
| 130 |
-
% The defaults for \footrulewidth, \plainheadrulewidth and
|
| 131 |
-
% \plainfootrulewidth are changed from \z@skip to 0pt. In this way when
|
| 132 |
-
% someone inadvertantly uses \setlength to change any of these, the value
|
| 133 |
-
% of \z@skip will not be changed, rather an errormessage will be given.
|
| 134 |
-
|
| 135 |
-
% March 3, 2004
|
| 136 |
-
% Release of version 3.0
|
| 137 |
-
|
| 138 |
-
% Oct 7, 2004
|
| 139 |
-
% version 3.1
|
| 140 |
-
% Added '\endlinechar=13' to \fancy@reset to prevent problems with
|
| 141 |
-
% includegraphics in header when verbatiminput is active.
|
| 142 |
-
|
| 143 |
-
% March 22, 2005
|
| 144 |
-
% version 3.2
|
| 145 |
-
% reset \everypar (the real one) in \fancy@reset because spanish.ldf does
|
| 146 |
-
% strange things with \everypar between << and >>.
|
| 147 |
-
|
| 148 |
-
\def\ifancy@mpty#1{\def\temp@a{#1}\ifx\temp@a\@empty}
|
| 149 |
-
|
| 150 |
-
\def\fancy@def#1#2{\ifancy@mpty{#2}\fancy@gbl\def#1{\leavevmode}\else
|
| 151 |
-
\fancy@gbl\def#1{#2\strut}\fi}
|
| 152 |
-
|
| 153 |
-
\let\fancy@gbl\global
|
| 154 |
-
|
| 155 |
-
\def\@fancyerrmsg#1{%
|
| 156 |
-
\ifx\PackageError\undefined
|
| 157 |
-
\errmessage{#1}\else
|
| 158 |
-
\PackageError{Fancyhdr}{#1}{}\fi}
|
| 159 |
-
\def\@fancywarning#1{%
|
| 160 |
-
\ifx\PackageWarning\undefined
|
| 161 |
-
\errmessage{#1}\else
|
| 162 |
-
\PackageWarning{Fancyhdr}{#1}{}\fi}
|
| 163 |
-
|
| 164 |
-
% Usage: \@forc \var{charstring}{command to be executed for each char}
|
| 165 |
-
% This is similar to LaTeX's \@tfor, but expands the charstring.
|
| 166 |
-
|
| 167 |
-
\def\@forc#1#2#3{\expandafter\f@rc\expandafter#1\expandafter{#2}{#3}}
|
| 168 |
-
\def\f@rc#1#2#3{\def\temp@ty{#2}\ifx\@empty\temp@ty\else
|
| 169 |
-
\f@@rc#1#2\f@@rc{#3}\fi}
|
| 170 |
-
\def\f@@rc#1#2#3\f@@rc#4{\def#1{#2}#4\f@rc#1{#3}{#4}}
|
| 171 |
-
|
| 172 |
-
% Usage: \f@nfor\name:=list\do{body}
|
| 173 |
-
% Like LaTeX's \@for but an empty list is treated as a list with an empty
|
| 174 |
-
% element
|
| 175 |
-
|
| 176 |
-
\newcommand{\f@nfor}[3]{\edef\@fortmp{#2}%
|
| 177 |
-
\expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}}
|
| 178 |
-
|
| 179 |
-
% Usage: \def@ult \cs{defaults}{argument}
|
| 180 |
-
% sets \cs to the characters from defaults appearing in argument
|
| 181 |
-
% or defaults if it would be empty. All characters are lowercased.
|
| 182 |
-
|
| 183 |
-
\newcommand\def@ult[3]{%
|
| 184 |
-
\edef\temp@a{\lowercase{\edef\noexpand\temp@a{#3}}}\temp@a
|
| 185 |
-
\def#1{}%
|
| 186 |
-
\@forc\tmpf@ra{#2}%
|
| 187 |
-
{\expandafter\if@in\tmpf@ra\temp@a{\edef#1{#1\tmpf@ra}}{}}%
|
| 188 |
-
\ifx\@empty#1\def#1{#2}\fi}
|
| 189 |
-
%
|
| 190 |
-
% \if@in <char><set><truecase><falsecase>
|
| 191 |
-
%
|
| 192 |
-
\newcommand{\if@in}[4]{%
|
| 193 |
-
\edef\temp@a{#2}\def\temp@b##1#1##2\temp@b{\def\temp@b{##1}}%
|
| 194 |
-
\expandafter\temp@b#2#1\temp@b\ifx\temp@a\temp@b #4\else #3\fi}
|
| 195 |
-
|
| 196 |
-
\newcommand{\fancyhead}{\@ifnextchar[{\f@ncyhf\fancyhead h}%
|
| 197 |
-
{\f@ncyhf\fancyhead h[]}}
|
| 198 |
-
\newcommand{\fancyfoot}{\@ifnextchar[{\f@ncyhf\fancyfoot f}%
|
| 199 |
-
{\f@ncyhf\fancyfoot f[]}}
|
| 200 |
-
\newcommand{\fancyhf}{\@ifnextchar[{\f@ncyhf\fancyhf{}}%
|
| 201 |
-
{\f@ncyhf\fancyhf{}[]}}
|
| 202 |
-
|
| 203 |
-
% New commands for offsets added
|
| 204 |
-
|
| 205 |
-
\newcommand{\fancyheadoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyheadoffset h}%
|
| 206 |
-
{\f@ncyhfoffs\fancyheadoffset h[]}}
|
| 207 |
-
\newcommand{\fancyfootoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyfootoffset f}%
|
| 208 |
-
{\f@ncyhfoffs\fancyfootoffset f[]}}
|
| 209 |
-
\newcommand{\fancyhfoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyhfoffset{}}%
|
| 210 |
-
{\f@ncyhfoffs\fancyhfoffset{}[]}}
|
| 211 |
-
|
| 212 |
-
% The header and footer fields are stored in command sequences with
|
| 213 |
-
% names of the form: \f@ncy<x><y><z> with <x> for [eo], <y> from [lcr]
|
| 214 |
-
% and <z> from [hf].
|
| 215 |
-
|
| 216 |
-
\def\f@ncyhf#1#2[#3]#4{%
|
| 217 |
-
\def\temp@c{}%
|
| 218 |
-
\@forc\tmpf@ra{#3}%
|
| 219 |
-
{\expandafter\if@in\tmpf@ra{eolcrhf,EOLCRHF}%
|
| 220 |
-
{}{\edef\temp@c{\temp@c\tmpf@ra}}}%
|
| 221 |
-
\ifx\@empty\temp@c\else
|
| 222 |
-
\@fancyerrmsg{Illegal char `\temp@c' in \string#1 argument:
|
| 223 |
-
[#3]}%
|
| 224 |
-
\fi
|
| 225 |
-
\f@nfor\temp@c{#3}%
|
| 226 |
-
{\def@ult\f@@@eo{eo}\temp@c
|
| 227 |
-
\if@twoside\else
|
| 228 |
-
\if\f@@@eo e\@fancywarning
|
| 229 |
-
{\string#1's `E' option without twoside option is useless}\fi\fi
|
| 230 |
-
\def@ult\f@@@lcr{lcr}\temp@c
|
| 231 |
-
\def@ult\f@@@hf{hf}{#2\temp@c}%
|
| 232 |
-
\@forc\f@@eo\f@@@eo
|
| 233 |
-
{\@forc\f@@lcr\f@@@lcr
|
| 234 |
-
{\@forc\f@@hf\f@@@hf
|
| 235 |
-
{\expandafter\fancy@def\csname
|
| 236 |
-
f@ncy\f@@eo\f@@lcr\f@@hf\endcsname
|
| 237 |
-
{#4}}}}}}
|
| 238 |
-
|
| 239 |
-
\def\f@ncyhfoffs#1#2[#3]#4{%
|
| 240 |
-
\def\temp@c{}%
|
| 241 |
-
\@forc\tmpf@ra{#3}%
|
| 242 |
-
{\expandafter\if@in\tmpf@ra{eolrhf,EOLRHF}%
|
| 243 |
-
{}{\edef\temp@c{\temp@c\tmpf@ra}}}%
|
| 244 |
-
\ifx\@empty\temp@c\else
|
| 245 |
-
\@fancyerrmsg{Illegal char `\temp@c' in \string#1 argument:
|
| 246 |
-
[#3]}%
|
| 247 |
-
\fi
|
| 248 |
-
\f@nfor\temp@c{#3}%
|
| 249 |
-
{\def@ult\f@@@eo{eo}\temp@c
|
| 250 |
-
\if@twoside\else
|
| 251 |
-
\if\f@@@eo e\@fancywarning
|
| 252 |
-
{\string#1's `E' option without twoside option is useless}\fi\fi
|
| 253 |
-
\def@ult\f@@@lcr{lr}\temp@c
|
| 254 |
-
\def@ult\f@@@hf{hf}{#2\temp@c}%
|
| 255 |
-
\@forc\f@@eo\f@@@eo
|
| 256 |
-
{\@forc\f@@lcr\f@@@lcr
|
| 257 |
-
{\@forc\f@@hf\f@@@hf
|
| 258 |
-
{\expandafter\setlength\csname
|
| 259 |
-
f@ncyO@\f@@eo\f@@lcr\f@@hf\endcsname
|
| 260 |
-
{#4}}}}}%
|
| 261 |
-
\fancy@setoffs}
|
| 262 |
-
|
| 263 |
-
% Fancyheadings version 1 commands. These are more or less deprecated,
|
| 264 |
-
% but they continue to work.
|
| 265 |
-
|
| 266 |
-
\newcommand{\lhead}{\@ifnextchar[{\@xlhead}{\@ylhead}}
|
| 267 |
-
\def\@xlhead[#1]#2{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#2}}
|
| 268 |
-
\def\@ylhead#1{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#1}}
|
| 269 |
-
|
| 270 |
-
\newcommand{\chead}{\@ifnextchar[{\@xchead}{\@ychead}}
|
| 271 |
-
\def\@xchead[#1]#2{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#2}}
|
| 272 |
-
\def\@ychead#1{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#1}}
|
| 273 |
-
|
| 274 |
-
\newcommand{\rhead}{\@ifnextchar[{\@xrhead}{\@yrhead}}
|
| 275 |
-
\def\@xrhead[#1]#2{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#2}}
|
| 276 |
-
\def\@yrhead#1{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#1}}
|
| 277 |
-
|
| 278 |
-
\newcommand{\lfoot}{\@ifnextchar[{\@xlfoot}{\@ylfoot}}
|
| 279 |
-
\def\@xlfoot[#1]#2{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#2}}
|
| 280 |
-
\def\@ylfoot#1{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#1}}
|
| 281 |
-
|
| 282 |
-
\newcommand{\cfoot}{\@ifnextchar[{\@xcfoot}{\@ycfoot}}
|
| 283 |
-
\def\@xcfoot[#1]#2{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#2}}
|
| 284 |
-
\def\@ycfoot#1{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#1}}
|
| 285 |
-
|
| 286 |
-
\newcommand{\rfoot}{\@ifnextchar[{\@xrfoot}{\@yrfoot}}
|
| 287 |
-
\def\@xrfoot[#1]#2{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#2}}
|
| 288 |
-
\def\@yrfoot#1{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#1}}
|
| 289 |
-
|
| 290 |
-
\newlength{\fancy@headwidth}
|
| 291 |
-
\let\headwidth\fancy@headwidth
|
| 292 |
-
\newlength{\f@ncyO@elh}
|
| 293 |
-
\newlength{\f@ncyO@erh}
|
| 294 |
-
\newlength{\f@ncyO@olh}
|
| 295 |
-
\newlength{\f@ncyO@orh}
|
| 296 |
-
\newlength{\f@ncyO@elf}
|
| 297 |
-
\newlength{\f@ncyO@erf}
|
| 298 |
-
\newlength{\f@ncyO@olf}
|
| 299 |
-
\newlength{\f@ncyO@orf}
|
| 300 |
-
\newcommand{\headrulewidth}{0.4pt}
|
| 301 |
-
\newcommand{\footrulewidth}{0pt}
|
| 302 |
-
\newcommand{\footruleskip}{.3\normalbaselineskip}
|
| 303 |
-
|
| 304 |
-
% Fancyplain stuff shouldn't be used anymore (rather
|
| 305 |
-
% \fancypagestyle{plain} should be used), but it must be present for
|
| 306 |
-
% compatibility reasons.
|
| 307 |
-
|
| 308 |
-
\newcommand{\plainheadrulewidth}{0pt}
|
| 309 |
-
\newcommand{\plainfootrulewidth}{0pt}
|
| 310 |
-
\newif\if@fancyplain \@fancyplainfalse
|
| 311 |
-
\def\fancyplain#1#2{\if@fancyplain#1\else#2\fi}
|
| 312 |
-
|
| 313 |
-
\headwidth=-123456789sp %magic constant
|
| 314 |
-
|
| 315 |
-
% Command to reset various things in the headers:
|
| 316 |
-
% a.o. single spacing (taken from setspace.sty)
|
| 317 |
-
% and the catcode of ^^M (so that epsf files in the header work if a
|
| 318 |
-
% verbatim crosses a page boundary)
|
| 319 |
-
% It also defines a \nouppercase command that disables \uppercase and
|
| 320 |
-
% \Makeuppercase. It can only be used in the headers and footers.
|
| 321 |
-
\let\fnch@everypar\everypar% save real \everypar because of spanish.ldf
|
| 322 |
-
\def\fancy@reset{\fnch@everypar{}\restorecr\endlinechar=13
|
| 323 |
-
\def\baselinestretch{1}%
|
| 324 |
-
\def\nouppercase##1{{\let\uppercase\relax\let\MakeUppercase\relax
|
| 325 |
-
\expandafter\let\csname MakeUppercase \endcsname\relax##1}}%
|
| 326 |
-
\ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e
|
| 327 |
-
\ifx\@normalsize\undefined \normalsize % for ucthesis.cls
|
| 328 |
-
\else \@normalsize \fi
|
| 329 |
-
\else% NFSS (2.09) present
|
| 330 |
-
\@newbaseline%
|
| 331 |
-
\fi}
|
| 332 |
-
|
| 333 |
-
% Initialization of the head and foot text.
|
| 334 |
-
|
| 335 |
-
% The default values still contain \fancyplain for compatibility.
|
| 336 |
-
\fancyhf{} % clear all
|
| 337 |
-
% lefthead empty on ``plain'' pages, \rightmark on even, \leftmark on odd pages
|
| 338 |
-
% evenhead empty on ``plain'' pages, \leftmark on even, \rightmark on odd pages
|
| 339 |
-
\if@twoside
|
| 340 |
-
\fancyhead[el,or]{\fancyplain{}{\sl\rightmark}}
|
| 341 |
-
\fancyhead[er,ol]{\fancyplain{}{\sl\leftmark}}
|
| 342 |
-
\else
|
| 343 |
-
\fancyhead[l]{\fancyplain{}{\sl\rightmark}}
|
| 344 |
-
\fancyhead[r]{\fancyplain{}{\sl\leftmark}}
|
| 345 |
-
\fi
|
| 346 |
-
\fancyfoot[c]{\rm\thepage} % page number
|
| 347 |
-
|
| 348 |
-
% Use box 0 as a temp box and dimen 0 as temp dimen.
|
| 349 |
-
% This can be done, because this code will always
|
| 350 |
-
% be used inside another box, and therefore the changes are local.
|
| 351 |
-
|
| 352 |
-
\def\@fancyvbox#1#2{\setbox0\vbox{#2}\ifdim\ht0>#1\@fancywarning
|
| 353 |
-
{\string#1 is too small (\the#1): ^^J Make it at least \the\ht0.^^J
|
| 354 |
-
We now make it that large for the rest of the document.^^J
|
| 355 |
-
This may cause the page layout to be inconsistent, however\@gobble}%
|
| 356 |
-
\dimen0=#1\global\setlength{#1}{\ht0}\ht0=\dimen0\fi
|
| 357 |
-
\box0}
|
| 358 |
-
|
| 359 |
-
% Put together a header or footer given the left, center and
|
| 360 |
-
% right text, fillers at left and right and a rule.
|
| 361 |
-
% The \lap commands put the text into an hbox of zero size,
|
| 362 |
-
% so overlapping text does not generate an errormessage.
|
| 363 |
-
% These macros have 5 parameters:
|
| 364 |
-
% 1. LEFTSIDE BEARING % This determines at which side the header will stick
|
| 365 |
-
% out. When \fancyhfoffset is used this calculates \headwidth, otherwise
|
| 366 |
-
% it is \hss or \relax (after expansion).
|
| 367 |
-
% 2. \f@ncyolh, \f@ncyelh, \f@ncyolf or \f@ncyelf. This is the left component.
|
| 368 |
-
% 3. \f@ncyoch, \f@ncyech, \f@ncyocf or \f@ncyecf. This is the middle comp.
|
| 369 |
-
% 4. \f@ncyorh, \f@ncyerh, \f@ncyorf or \f@ncyerf. This is the right component.
|
| 370 |
-
% 5. RIGHTSIDE BEARING. This is always \relax or \hss (after expansion).
|
| 371 |
-
|
| 372 |
-
\def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset
|
| 373 |
-
\@fancyvbox\headheight{\hbox
|
| 374 |
-
{\rlap{\parbox[b]{\headwidth}{\raggedright#2}}\hfill
|
| 375 |
-
\parbox[b]{\headwidth}{\centering#3}\hfill
|
| 376 |
-
\llap{\parbox[b]{\headwidth}{\raggedleft#4}}}\headrule}}#5}
|
| 377 |
-
|
| 378 |
-
\def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset
|
| 379 |
-
\@fancyvbox\footskip{\footrule
|
| 380 |
-
\hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2}}\hfill
|
| 381 |
-
\parbox[t]{\headwidth}{\centering#3}\hfill
|
| 382 |
-
\llap{\parbox[t]{\headwidth}{\raggedleft#4}}}}}#5}
|
| 383 |
-
|
| 384 |
-
\def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi
|
| 385 |
-
\hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}}
|
| 386 |
-
|
| 387 |
-
\def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi
|
| 388 |
-
\vskip-\footruleskip\vskip-\footrulewidth
|
| 389 |
-
\hrule\@width\headwidth\@height\footrulewidth\vskip\footruleskip}}
|
| 390 |
-
|
| 391 |
-
\def\ps@fancy{%
|
| 392 |
-
\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%for amsbook
|
| 393 |
-
%
|
| 394 |
-
% Define \MakeUppercase for old LaTeXen.
|
| 395 |
-
% Note: we used \def rather than \let, so that \let\uppercase\relax (from
|
| 396 |
-
% the version 1 documentation) will still work.
|
| 397 |
-
%
|
| 398 |
-
\@ifundefined{MakeUppercase}{\def\MakeUppercase{\uppercase}}{}%
|
| 399 |
-
\@ifundefined{chapter}{\def\sectionmark##1{\markboth
|
| 400 |
-
{\MakeUppercase{\ifnum \c@secnumdepth>\z@
|
| 401 |
-
\thesection\hskip 1em\relax \fi ##1}}{}}%
|
| 402 |
-
\def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne
|
| 403 |
-
\thesubsection\hskip 1em\relax \fi ##1}}}%
|
| 404 |
-
{\def\chaptermark##1{\markboth {\MakeUppercase{\ifnum \c@secnumdepth>\m@ne
|
| 405 |
-
\@chapapp\ \thechapter. \ \fi ##1}}{}}%
|
| 406 |
-
\def\sectionmark##1{\markright{\MakeUppercase{\ifnum \c@secnumdepth >\z@
|
| 407 |
-
\thesection. \ \fi ##1}}}}%
|
| 408 |
-
%\csname ps@headings\endcsname % use \ps@headings defaults if they exist
|
| 409 |
-
\ps@@fancy
|
| 410 |
-
\gdef\ps@fancy{\@fancyplainfalse\ps@@fancy}%
|
| 411 |
-
% Initialize \headwidth if the user didn't
|
| 412 |
-
%
|
| 413 |
-
\ifdim\headwidth<0sp
|
| 414 |
-
%
|
| 415 |
-
% This catches the case that \headwidth hasn't been initialized and the
|
| 416 |
-
% case that the user added something to \headwidth in the expectation that
|
| 417 |
-
% it was initialized to \textwidth. We compensate this now. This loses if
|
| 418 |
-
% the user intended to multiply it by a factor. But that case is more
|
| 419 |
-
% likely done by saying something like \headwidth=1.2\textwidth.
|
| 420 |
-
% The doc says you have to change \headwidth after the first call to
|
| 421 |
-
% \pagestyle{fancy}. This code is just to catch the most common cases were
|
| 422 |
-
% that requirement is violated.
|
| 423 |
-
%
|
| 424 |
-
\global\advance\headwidth123456789sp\global\advance\headwidth\textwidth
|
| 425 |
-
\fi}
|
| 426 |
-
\def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy}
|
| 427 |
-
\def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy}
|
| 428 |
-
\let\ps@@empty\ps@empty
|
| 429 |
-
\def\ps@@fancy{%
|
| 430 |
-
\ps@@empty % This is for amsbook/amsart, which do strange things with \topskip
|
| 431 |
-
\def\@mkboth{\protect\markboth}%
|
| 432 |
-
\def\@oddhead{\@fancyhead\fancy@Oolh\f@ncyolh\f@ncyoch\f@ncyorh\fancy@Oorh}%
|
| 433 |
-
\def\@oddfoot{\@fancyfoot\fancy@Oolf\f@ncyolf\f@ncyocf\f@ncyorf\fancy@Oorf}%
|
| 434 |
-
\def\@evenhead{\@fancyhead\fancy@Oelh\f@ncyelh\f@ncyech\f@ncyerh\fancy@Oerh}%
|
| 435 |
-
\def\@evenfoot{\@fancyfoot\fancy@Oelf\f@ncyelf\f@ncyecf\f@ncyerf\fancy@Oerf}%
|
| 436 |
-
}
|
| 437 |
-
% Default definitions for compatibility mode:
|
| 438 |
-
% These cause the header/footer to take the defined \headwidth as width
|
| 439 |
-
% And to shift in the direction of the marginpar area
|
| 440 |
-
|
| 441 |
-
\def\fancy@Oolh{\if@reversemargin\hss\else\relax\fi}
|
| 442 |
-
\def\fancy@Oorh{\if@reversemargin\relax\else\hss\fi}
|
| 443 |
-
\let\fancy@Oelh\fancy@Oorh
|
| 444 |
-
\let\fancy@Oerh\fancy@Oolh
|
| 445 |
-
|
| 446 |
-
\let\fancy@Oolf\fancy@Oolh
|
| 447 |
-
\let\fancy@Oorf\fancy@Oorh
|
| 448 |
-
\let\fancy@Oelf\fancy@Oelh
|
| 449 |
-
\let\fancy@Oerf\fancy@Oerh
|
| 450 |
-
|
| 451 |
-
% New definitions for the use of \fancyhfoffset
|
| 452 |
-
% These calculate the \headwidth from \textwidth and the specified offsets.
|
| 453 |
-
|
| 454 |
-
\def\fancy@offsolh{\headwidth=\textwidth\advance\headwidth\f@ncyO@olh
|
| 455 |
-
\advance\headwidth\f@ncyO@orh\hskip-\f@ncyO@olh}
|
| 456 |
-
\def\fancy@offselh{\headwidth=\textwidth\advance\headwidth\f@ncyO@elh
|
| 457 |
-
\advance\headwidth\f@ncyO@erh\hskip-\f@ncyO@elh}
|
| 458 |
-
|
| 459 |
-
\def\fancy@offsolf{\headwidth=\textwidth\advance\headwidth\f@ncyO@olf
|
| 460 |
-
\advance\headwidth\f@ncyO@orf\hskip-\f@ncyO@olf}
|
| 461 |
-
\def\fancy@offself{\headwidth=\textwidth\advance\headwidth\f@ncyO@elf
|
| 462 |
-
\advance\headwidth\f@ncyO@erf\hskip-\f@ncyO@elf}
|
| 463 |
-
|
| 464 |
-
\def\fancy@setoffs{%
|
| 465 |
-
% Just in case \let\headwidth\textwidth was used
|
| 466 |
-
\fancy@gbl\let\headwidth\fancy@headwidth
|
| 467 |
-
\fancy@gbl\let\fancy@Oolh\fancy@offsolh
|
| 468 |
-
\fancy@gbl\let\fancy@Oelh\fancy@offselh
|
| 469 |
-
\fancy@gbl\let\fancy@Oorh\hss
|
| 470 |
-
\fancy@gbl\let\fancy@Oerh\hss
|
| 471 |
-
\fancy@gbl\let\fancy@Oolf\fancy@offsolf
|
| 472 |
-
\fancy@gbl\let\fancy@Oelf\fancy@offself
|
| 473 |
-
\fancy@gbl\let\fancy@Oorf\hss
|
| 474 |
-
\fancy@gbl\let\fancy@Oerf\hss}
|
| 475 |
-
|
| 476 |
-
\newif\iffootnote
|
| 477 |
-
\let\latex@makecol\@makecol
|
| 478 |
-
\def\@makecol{\ifvoid\footins\footnotetrue\else\footnotefalse\fi
|
| 479 |
-
\let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol}
|
| 480 |
-
\def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi}
|
| 481 |
-
\def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi}
|
| 482 |
-
\def\iffloatpage#1#2{\if@fcolmade #1\else #2\fi}
|
| 483 |
-
|
| 484 |
-
\newcommand{\fancypagestyle}[2]{%
|
| 485 |
-
\@namedef{ps@#1}{\let\fancy@gbl\relax#2\relax\ps@fancy}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/scripts/latex-to-mdx/input/figures/ch1/ch1-lerobot-figure1.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch2/ch2-approaches.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch2/ch2-classical-limitations.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch2/ch2-cost-accessibility.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch2/ch2-planar-manipulator-floor-box.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch2/ch2-planar-manipulator-floor-shelf.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch2/ch2-planar-manipulator-floor.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch2/ch2-planar-manipulator-free.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch2/ch2-platforms.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch2/ch2-so100-to-planar-manipulator.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch3/ch3-agent-env.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch3/ch3-duck-sim-vs-real.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch3/ch3-hil-serl-examples.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch3/ch3-learning-atlas.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch3/ch3-learning-benefits.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch3/ch3-many-ducks.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch3/ch3-rl-algorithms-atlas.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch3/ch3-rl-examples.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch4/ch4-act-decoder.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch4/ch4-act-encoder.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch4/ch4-act.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch4/ch4-action-vs-observation-distribution.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch4/ch4-async-inference.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch4/ch4-bc-trajectories.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch4/ch4-diffusion-policy.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch4/ch4-diffusion-robot-actions.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch4/ch4-diffusion-vs-flowmatching.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch4/ch4-issues-with-bc.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch4/ch4-latent-variable-model.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch4/ch4-many-latents.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch4/ch4-normalizing-flows.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch4/ch4-observation-action-mapping.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch4/ch4-queues.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch4/ch4-task-effect-on-pairs.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch5/ch5-generalist-policies-timeline.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch5/ch5-ml-vs-robotics-foundation.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch5/ch5-pi0-sampling-timesteps.png
DELETED
Git LFS Details
|
app/scripts/latex-to-mdx/input/figures/ch5/ch5-pi0.png
DELETED
Git LFS Details
|