Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,15 @@ Thumbs.db
*.out
*.synctex.gz
.windsurfrules
**/.claude

# Linting artifacts
chktex.log
.pre-commit-cache/
node_modules/
package-lock.json
*_bibertool.bib
*.blg
*.blg
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Remove duplicate ignore entry for *.blg.

*.blg appears twice (Line 55 and Line 77). Keep a single occurrence.

-*.blg

Also applies to: 55-55

🤖 Prompt for AI Agents
In .gitignore around lines 55 and 77, there is a duplicate ignore entry for
"*.blg"; remove the redundant occurrence so the pattern appears only once
(delete either line 55 or line 77), leaving a single "*.blg" entry and
preserving file formatting/newline consistency.


# Cursor AI agent configuration
**/.cursor
Comment on lines +79 to +80
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Tighten **/.cursor to the expected root-level folder.

Cursor typically creates a .cursor/ directory at repo root. The current pattern ignores any file/dir named .cursor anywhere.

-**/.cursor
+/.cursor/
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# Cursor AI agent configuration
**/.cursor
# Cursor AI agent configuration
/.cursor/
🤖 Prompt for AI Agents
In .gitignore around lines 79-80, the pattern "**/.cursor" ignores any path
named ".cursor" throughout the repo; change it to a root-only pattern by
replacing it with "/.cursor/" (or "/.cursor") so only the repository-root
.cursor directory is ignored.

194 changes: 62 additions & 132 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,66 +2,33 @@

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Repository Overview
## Start Here First

This is a LaTeX-based academic CV repository containing two versions of Vatsal Sanjay's curriculum vitae:
**IMPORTANT: Read README.md first** for complete repository overview, build commands, CV structure, and general workflows.

- `Vatsal_CV.tex`: Comprehensive academic CV using moderncv banking style
- `Vatsal_CV-shortCV.tex`: Condensed 2-page CV using moderncv classic style
This file contains Claude-specific workflow guidance and detailed examples.

## Build Commands
## Quick Reference

### Essential Commands
```bash
# Using Makefile (recommended)

## Build Commands
make cv # Compile main CV
make shortcv # Compile short CV
make shortcv # Compile short CV
make all # Compile both CVs
make clean # Remove auxiliary files
make distclean # Remove all generated files including PDFs

## Linting and Validation Commands
make lint # Run all linters (ChkTeX on both CV files)
make lint-tex # Run ChkTeX linter on .tex files
make lint-bib # Check bibliography for warnings/errors in both CVs
make lint-lacheck # Run lacheck linter (if installed)
make lint-verbose # Run ChkTeX with verbose output
make check-refs # Check for undefined references in both CVs

## Utility Commands
make help # Display available make targets

# Manual compilation (if needed)
pdflatex Vatsal_CV.tex
pdflatex Vatsal_CV.tex

# Compile the short CV
pdflatex Vatsal_CV-shortCV.tex
pdflatex Vatsal_CV-shortCV.tex
make lint # Run all linters
```
Comment on lines +13 to 19
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Fix markdown spacing: add blank lines around headings and fenced code blocks.

Several spots violate MD022/MD031/MD032 (headings/lists/fences need surrounding blank lines). Add a blank line after headings and before/after fenced blocks.

Example fixes:

-### Essential Commands
-```bash
+### Essential Commands
+
+```bash
 make cv          # Compile main CV
 make shortcv     # Compile short CV
 make all         # Compile both CVs
 make lint        # Run all linters
-```
+```
-**Example:**
-```latex
+**Example:**
+
+```latex
 \item Ayush K. Dixit, Alexandros T. Oratis, Konstantinos Zinelis, Detlef Lohse, and \textbf{Vatsal Sanjay},\\
 ...

Apply similarly to the other code fences and list blocks in this file.


Also applies to: 41-47, 64-66, 96-97, 102-106

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[grammar] ~13-~13: Use correct spacing
Context: ... Quick Reference  ### Essential Commands ```bash make cv          # Compile main CV make shortcv     # Compile short CV make all         # Compile both CVs make lint        # Run all linters ```  ### Key Workflow 1. **Always update Vatsal_C...

(QB_NEW_EN_OTHER_ERROR_IDS_5)

</details>
<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

13-13: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)

---

14-14: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)

</details>

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

In CLAUDE.md around lines 13-19 (and also apply the same fixes at 41-47, 64-66,
96-97, 102-106), several headings and fenced code blocks lack surrounding blank
lines; add a single blank line after each heading and add one blank line before
and after each fenced code block so that every heading and code fence is
separated by an empty line from surrounding text and lists to satisfy
MD022/MD031/MD032.


</details>

<!-- fingerprinting:phantom:triton:chinchilla -->

<!-- This is an auto-generated comment by CodeRabbit -->


## Architecture

The CVs use the `moderncv` LaTeX package with:

- Custom color scheme defined in `moderncvcolordarkmagenta.sty`
- Bibliography managed in `mypublications.bib`
- Both versions share the same bibliography but display publications differently
### Key Workflow
1. **Always update Vatsal_CV.tex first** with requested changes
2. **Check if Vatsal_CV-shortCV.tex needs updating** (publications, metrics, awards)
3. **Compile both CVs** to ensure proper formatting
4. **Run linting** with `make lint` to catch errors

## Key Customizations
## Publication Update Workflow

- Custom darkmagenta color scheme (#68236D)
- Hyperlinked references throughout (DOIs, URLs)
- FontAwesome5 icons for visual elements
- Page numbering showing current/total pages
- Custom Euro symbol command for funding amounts
### Adding New Publications

## Adding/Updating Publications

### For Vatsal_CV.tex (Main CV)

Publications follow this exact format:
For **Vatsal_CV.tex** (Main CV), use this exact format:

```latex
\item [Authors with \textbf{Vatsal Sanjay} for self],\\
Expand All @@ -70,122 +37,85 @@ Publications follow this exact format:
(OA) DOI: \href{[DOI URL]}{[DOI number]}.
```

Example:

**Example:**
```latex
\item Ayush K. Dixit, Alexandros T. Oratis, Konstantinos Zinelis, Detlef Lohse, and \textbf{Vatsal Sanjay},\\
Viscoelastic Worthington jets and droplets produced by bursting bubbles,\\
J. Fluid Mech., 1010, A2 (2025) [32 pages];\\
(OA) DOI: \href{https://doi.org/10.1017/jfm.2025.237}{10.1017/jfm.2025.237}.
```

Key formatting rules:
### Critical Formatting Rules

- Use `\\` at end of each line except the last
- Page count always in format `[X pages]`
- Semicolon `;` before final `\\` on journal line
- For non-OA papers with preprints: `DOI: \href{...}{...}, OA: \href{...}{...}`
- Special notes (Cover, Editor's Suggestion) go on a new line or as sub-items

### For Vatsal_CV-shortCV.tex (Short CV)
### Short CV Updates

**IMPORTANT: Always select the 7 LATEST publications** (chronologically most recent, regardless of impact) in condensed format:
**IMPORTANT:** For **Vatsal_CV-shortCV.tex**, always select the **7 LATEST publications** (chronologically most recent, not by impact):

```latex
\item \textbf{V. Sanjay}, [coauthors], [Short title], \textit{[Journal]} [volume], [article] ([year]).
```

Example:

**Example:**
```latex
\item \textbf{V. Sanjay} \& D. Lohse, Unifying theory of scaling in drop impact, \textit{Phys. Rev. Lett.}, 134, 104003 (2025).
```

Selection criteria:

- Always take the 7 most recent papers from the main CV
- Order them from newest to oldest
- Include year in parentheses at the end

### For mypublications.bib

Add proper BibTeX entries with all metadata:

```bibtex
@article{key2025,
author = {Last1, First1 and Last2, First2 and Sanjay, Vatsal},
title = {Full title with proper capitalization},
journal = {Full Journal Name},
volume = {134},
pages = {104003},
doi = {10.xxxx/xxxxx},
year = {2025}
}
```
## Common Update Scenarios

### Update Process

1. Add new publications to the beginning of the enumerated list (latest first) in Vatsal_CV.tex
2. **Update Vatsal_CV-shortCV.tex with the 7 LATEST publications** (not most impactful, but chronologically newest)
### New Publication Added
1. Add to beginning of enumerated list in Vatsal_CV.tex (latest first)
2. Update shortCV with 7 most recent publications
3. Update total count in shortCV: "Selected publications (X total, Y+ citations)"
4. Add corresponding BibTeX entry to mypublications.bib
5. Move papers from "Works Under Review" to published section when accepted
6. Run pdflatex twice to update references and page numbers for both CVs

## Update Protocol

When asked to update one CV or the other:

1. **Always update Vatsal_CV.tex first** with the requested changes
2. **Check if Vatsal_CV-shortCV.tex needs updating** based on the change:
- If publications were added/modified: Update shortCV with the 7 latest publications
- If awards/positions were added: Check if they're significant enough for the condensed CV
- If metrics were updated: Update the metrics line in shortCV
- If contact info changed: Update in both CVs
3. **Compile both CVs** if changes were made to ensure proper formatting

## CV Formatting Symbols and Icons

### Publication Symbols
4. Add BibTeX entry to mypublications.bib (for archival)
5. Run `pdflatex` twice for both CVs

Comment on lines +71 to 76
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Prefer “make” over raw pdflatex to keep workflow consistent.

Since the Quick Reference promotes make, suggest replacing “Run pdflatex twice” with make all (or the specific targets).

-5. Run `pdflatex` twice for both CVs
+5. Run `make all` (or `make cv` and `make shortcv`) to build both CVs
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
1. Add to beginning of enumerated list in Vatsal_CV.tex (latest first)
2. Update shortCV with 7 most recent publications
3. Update total count in shortCV: "Selected publications (X total, Y+ citations)"
4. Add corresponding BibTeX entry to mypublications.bib
5. Move papers from "Works Under Review" to published section when accepted
6. Run pdflatex twice to update references and page numbers for both CVs
## Update Protocol
When asked to update one CV or the other:
1. **Always update Vatsal_CV.tex first** with the requested changes
2. **Check if Vatsal_CV-shortCV.tex needs updating** based on the change:
- If publications were added/modified: Update shortCV with the 7 latest publications
- If awards/positions were added: Check if they're significant enough for the condensed CV
- If metrics were updated: Update the metrics line in shortCV
- If contact info changed: Update in both CVs
3. **Compile both CVs** if changes were made to ensure proper formatting
## CV Formatting Symbols and Icons
### Publication Symbols
4. Add BibTeX entry to mypublications.bib (for archival)
5. Run `pdflatex` twice for both CVs
1. Add to beginning of enumerated list in Vatsal_CV.tex (latest first)
2. Update shortCV with 7 most recent publications
3. Update total count in shortCV: "Selected publications (X total, Y+ citations)"
4. Add BibTeX entry to mypublications.bib (for archival)
5. Run `make all` (or `make cv` and `make shortcv`) to build both CVs
🧰 Tools
🪛 LanguageTool

[grammar] ~71-~71: There might be a mistake here.
Context: ...ted list in Vatsal_CV.tex (latest first) 2. Update shortCV with 7 most recent public...

(QB_NEW_EN_OTHER)


[grammar] ~73-~73: There might be a problem here.
Context: ...CV: "Selected publications (X total, Y+ citations)" 4. Add BibTeX entry to mypublications.bib (...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~74-~74: There might be a mistake here.
Context: ...try to mypublications.bib (for archival) 5. Run pdflatex twice for both CVs ### P...

(QB_NEW_EN_OTHER)


[grammar] ~75-~75: There might be a mistake here.
Context: ...al) 5. Run pdflatex twice for both CVs ### Paper Accepted (from Under Review) 1. Mo...

(QB_NEW_EN_OTHER)

🪛 markdownlint-cli2 (0.17.2)

71-71: Lists should be surrounded by blank lines

(MD032, blanks-around-lists)

🤖 Prompt for AI Agents
In CLAUDE.md around lines 71 to 76, the step that instructs the user to "Run
`pdflatex` twice for both CVs" should be changed to use the repository's Make
workflow; replace that line with a clear instruction to run the appropriate make
target(s) (e.g., "Run `make all`" or list specific targets like `make
Vatsal_CV.pdf` and `make shortCV.pdf`) so the build is consistent with the Quick
Reference; ensure the wording indicates using make for both CVs and that it
implicitly handles multiple runs (or call make targets twice only if required by
the Makefile).

- `\faFile`: 📄 for open-access publications (replaces "(OA)")
- `\faLock`: 🔒 for paywalled publications with DOI
- `\faStar`: ⭐ for journal cover features and Editor's Suggestion
- `\faChartLine`: 📈 for highly cited papers
- Publication numbering: `\begin{enumerate}[leftmargin=1.5em,label=\textbf{[\arabic*]}]`
### Paper Accepted (from Under Review)
1. Move from "Works Under Review" to published section in main CV
2. Update shortCV if it's now in the 7 most recent
3. Update metrics if needed

### Section Icons
### Awards/Positions Added
1. Add to main CV first
2. Check if significant enough for condensed shortCV
3. Update both if needed

- `\faUserGraduate`: 🎓 for PhD Theses subsection
- `\faGraduationCap`: 🎓 for Master Theses subsection
- `\faUniversity`: 🏫 for Bachelor Theses subsection
- `\faUsers`: 👥 for Seminars & Conferences subsection
- `\faCheck`: ✓ for Refereeing subsection
- `\faMicrophone`: 🎤 for Invited Talks subsection
- `\faComments`: 💬 for Contributed Talks subsection
## LaTeX Formatting Details

### Award Icons
### Special Characters and Commands
- Euro symbol: Use custom `\Euro` command for funding amounts
- Video links: `{\color{red}\faYoutube}` instead of `[Video]` text
Comment on lines +90 to +91
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

❓ Verification inconclusive

Verify \Euro macro exists before recommending it.

Confirm a \newcommand{\Euro}{...} (or equivalent) is defined in the TeX sources; otherwise, include its definition or replace guidance.


🏁 Script executed:

#!/bin/bash
# Look for \Euro definition in the TeX sources
rg -nP '\\newcommand\s*{\\Euro}|\\def\s*\\Euro|\\DeclareRobustCommand\s*{\\Euro}' -g '*.tex' -g '*.sty'

Length of output: 105


🏁 Script executed:

#!/bin/bash
# Look for \Euro macro definitions across common TeX file types
rg -nP '\\(?:newcommand|renewcommand|def|DeclareRobustCommand)\s*{\\Euro}' -g '*.tex' -g '*.sty' -g '*.cls'

Length of output: 109


Add a definition for the \Euro macro before using it

It looks like the document (CLAUDE.md, lines 90–91) recommends the custom \Euro command, but no matching \newcommand{\Euro} (or equivalent) exists in the TeX source. Without defining \Euro, compilation will fail or the symbol won’t render.

• In your main preamble (e.g. main.tex or preamble.tex), add one of:

% Option 1: custom macro
\newcommand{\Euro}{\ensuremath{\,\mathrm{€}}}

% Option 2: use the eurosym package
\usepackage{eurosym}
% …then use \euro directly instead of \Euro

• Or update the guidance in CLAUDE.md to refer to the standard \euro command if you prefer not to define a custom macro.

Suggested diff in CLAUDE.md:

- Euro symbol: Use custom `\Euro` command for funding amounts
+ Euro symbol:
+   – Define a custom macro in your preamble:
+     \newcommand{\Euro}{\ensuremath{\,\mathrm{€}}}
+   – Or, include the eurosym package and use `\euro` instead
🧰 Tools
🪛 LanguageTool

[grammar] ~90-~90: There might be a mistake here.
Context: ...stom \Euro command for funding amounts - Video links: {\color{red}\faYoutube} i...

(QB_NEW_EN_OTHER)

🪛 markdownlint-cli2 (0.17.2)

90-90: Lists should be surrounded by blank lines

(MD032, blanks-around-lists)

🤖 Prompt for AI Agents
In CLAUDE.md around lines 90–91, the doc references a custom \Euro macro that
isn’t defined; update the guidance to either instruct developers to add a
\newcommand{\Euro} definition in the main TeX preamble or to use the standard
eurosym package and the \euro command instead, and modify the README text to
show which option is chosen (or replace \Euro with \euro) so LaTeX will compile
without undefined-command errors.

- Icons spacing: `\faIcon\hspace{0.3em}Text` for subsections, `\hspace{0.2em}` for inline

- **Note**: No icons used in Major Awards & Achievements section to maintain humility
- Awards are emphasized with bold text only

### Funding Icons
### Publication Numbering
```latex
\begin{enumerate}[leftmargin=1.5em,label=\textbf{[\arabic*]}]
```

- `\faLightbulb`: 💡 for research fellowships and monetary funding
- `\faServer`: 🖥️ for computational resources
### Special Notes Format
For journal covers or editor's suggestions, add as sub-items:
```latex
\begin{itemize}
\item Journal Cover Feature
\item Editor's Suggestion
\end{itemize}
```

### Metrics Section Icons
## Error Handling

- `\faIdCard`: 🆔 for Researcher ID
- `\faOrcid`: ORCID logo for ORCID
- `\faChartLine`: 📈 for Hirsch-index
- `\faFile`: 📄 for i10-index
- `\faUsers`: 👥 for Research Interest Score
- **Linting errors**: Run `make lint` and fix ChkTeX warnings
- **Reference errors**: Run `make check-refs` for undefined references
- **Compilation issues**: Try `make clean` then recompile
- **Formatting problems**: Double-check `\\` placement and spacing

### General Formatting
## Notes for Claude

- Talk lists use bullet points: `\item[\textbullet]`
- Bold position titles in Professional Experience
- Icons should have spacing: `\faIcon\hspace{0.3em}Text` for subsections, `\hspace{0.2em}` for inline
- Maintain consistent icon usage across similar sections
- Video links: Use `{\color{red}\faYoutube}` instead of `[Video]` text (red YouTube icon)
- Repository uses moderncv LaTeX package with custom darkmagenta color (#68236D)
- Both CVs share styling but display publications differently
- Short CV is exactly 2 pages and shows ONLY the 7 most recent publications
- All icons and symbols are documented in README.md
- Publications are hardcoded in .tex files (not pulled from .bib file)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Ensure file ends with a single trailing newline.

Fix MD047 by adding exactly one newline at EOF.

🧰 Tools
🪛 LanguageTool

[grammar] ~121-~121: Make sure to use plural and singular nouns correctly
Context: ...ded in .tex files (not pulled from .bib file)

(QB_NEW_EN_OTHER_ERROR_IDS_10)

🪛 markdownlint-cli2 (0.17.2)

121-121: Files should end with a single newline character

(MD047, single-trailing-newline)

🤖 Prompt for AI Agents
In CLAUDE.md around line 121, the file currently lacks a single trailing newline
which triggers MD047; open the file and ensure it ends with exactly one newline
character (no extra blank lines or missing newline) so the file terminates with
a single trailing newline.

Loading