Exam Shuffler Helper
A VS Code extension that provides comprehensive support for LaTeX exam templates with special markup tags for exam shuffling and randomization.
Features
🎨 Syntax Highlighting
Beautiful syntax highlighting for all exam markup tags:
- Settings block (
%{#setting}...%{/setting})
- Question blocks (
%{#q}...%{/q})
- Option blocks (
%{#o}...%{/o})
- Instructions block (
%{#instructions}...%{/instructions})
- Preamble block (
%{#preamble}...%{/preamble})
- Special tags (
%{#fixed}, %{#fixed-options:X}, %{#separate-page})
⚡ Code Snippets
Powerful snippets to speed up exam creation:
| Prefix |
Description |
examfull |
Complete exam template with all structure |
examsetting |
Exam settings block |
examinstructions |
Instructions block |
exampreamble |
Preamble block for custom packages |
exammc |
Multiple choice question (4 options) |
exammc5 |
Multiple choice question (5 options) |
examfixed |
Fixed position question |
examfixedopt |
Question with fixed option order |
examseparate |
Question on separate page |
examimg |
Question with image layout |
examq |
Question block |
examo |
Option block |
✅ Real-time Validation
- Validates matching opening/closing tags
- Checks that all
%{#q} tags are properly closed with %{/q}
- Checks that all
%{#o} tags are properly closed with %{/o}
- Checks that all
%{#setting} tags are properly closed with %{/setting}
- Validates
%{#fixed-options:X} to ensure the answer letter corresponds to an actual option
- Shows helpful error messages with precise locations
🔍 Auto-completion
Smart auto-completion for setting parameters inside %{#setting} blocks:
- university, department, term, coursecode
- examname, examdate, timeallowed
- numberofvestions, groups, examtype
- code_name, code_numbering, includeCoverPage
- paper_size, seed
Installation
From VS Code Marketplace
- Open VS Code
- Go to Extensions (Ctrl+Shift+X)
- Search for "Exam Shuffler Helper"
- Click Install
From VSIX File
- Download the
.vsix file from Releases
- In VS Code: Extensions → ... → Install from VSIX
- Select the downloaded
.vsix file
Usage
Quick Start
- Create a new
.tex file
- Type
examfull and press Tab
- Fill in your exam details
- Add questions using snippets like
exammc5
Example: Creating a Question
Type exammc5 and press Tab to get:
% ============================================================
% question 1
%=============================================================
\item
%{#q}
Question text
%{/q}
\begin{enumerate}
\item
%{#o}
Correct answer
%{/o}
\item
%{#o}
Wrong answer
%{/o}
\item
%{#o}
Wrong answer
%{/o}
\item
%{#o}
Wrong answer
%{/o}
\item
%{#o}
Wrong answer
%{/o}
\end{enumerate}
\questionseparator
Tag Reference
Settings Block
%{#setting}
% university=Your University Name
% department=Department Name
% coursecode=MATH 101
% examname=Midterm Exam
% numberofvestions=10
%{/setting}
Question Block
%{#q}
What is the derivative of f(x) = x^2?
%{/q}
Option Block
%{#o}
f'(x) = 2x
%{/o}
Fixed Position Question
\item
%{#fixed}
%{#q}
Write your student ID
%{/q}
Fixed Options (Answer = C)
\item
%{#fixed-options:C}
%{#q}
Which is correct?
%{/q}
Separate Page Question
\item
%{#separate-page}
%{#q}
Complex problem requiring lots of space
%{/q}
Configuration
Access settings via: File → Preferences → Settings → Search "Exam Shuffler"
- Validate Tags: Enable/disable tag matching validation (default:
true)
- Validate Fixed Options: Enable/disable fixed-options letter validation (default:
true)
Requirements
- VS Code 1.80.0 or higher
- LaTeX workshop or similar LaTeX extension (recommended for full LaTeX support)
Known Issues
- Validation is file-scoped (doesn't check across multiple files)
- Large files (>10,000 lines) may experience slight performance delays
Release Notes
0.1.0 - Initial Release
- Syntax highlighting for all exam markup tags
- 11 code snippets for rapid exam creation
- Real-time tag validation
- Fixed-options letter validation
- Auto-completion for settings parameters
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature)
- Commit your changes (
git commit -m 'Add some amazing feature')
- Push to the branch (
git push origin feature/amazing-feature)
- Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
If you encounter any issues or have suggestions, please open an issue on GitHub.
Author
Mohammed - Mathematics Professor at KFUPM
Acknowledgments
- Built for educators creating randomized exams
- Perfect for maintaining academic integrity
- Designed for mathematics and STEM courses
Enjoy creating better exams! 🎓