[
  {
    "objectID": "index.html",
    "href": "index.html",
    "title": "Louis Lacoste",
    "section": "",
    "text": "Français\nI’m a PhD student in Applied Mathematics at MIA Paris-Saclay under supervision of Julie Aubert, Pierre Barbillon and Sophie Donnet.\nWill update later"
  },
  {
    "objectID": "index.html#quotes",
    "href": "index.html#quotes",
    "title": "Louis Lacoste",
    "section": "Quotes",
    "text": "Quotes\n\n“Il faut être mou du critère”, P. B. 2025\n\n\n“Non mais les arbres tu les dessines mal !”, P. B. 2026\n\n\n“Louis c’est un geek”, paroles rapportées de S. D. 2026\n\n\n“Après tout je suis ta demi grande soeur par la mère”, B. B. 2026"
  },
  {
    "objectID": "index.html#pierres-puns",
    "href": "index.html#pierres-puns",
    "title": "Louis Lacoste",
    "section": "Pierre’s puns",
    "text": "Pierre’s puns\n\nOn va de K-Rib en SIA. 2026"
  },
  {
    "objectID": "biblio.html",
    "href": "biblio.html",
    "title": "Bibliography",
    "section": "",
    "text": "Français"
  },
  {
    "objectID": "posts.html",
    "href": "posts.html",
    "title": "Posts",
    "section": "",
    "text": "Français \n\n\n\n\n\n\n\n\n\nFaire une CI LaTeX avec GitLab\n\n\n\nci\n\n\nintégration continue\n\n\ngit\n\n\nGitLab\n\n\nLaTeX\n\n\nfrench\n\n\nfrançais\n\n\n\n\n\n\n\nLouis Lacoste\n\n\nSep 23, 2025\n\n\n\n\n\n\n\n\nNo matching items"
  },
  {
    "objectID": "posts/ci-gitlab-latex.html",
    "href": "posts/ci-gitlab-latex.html",
    "title": "Faire une CI LaTeX avec GitLab",
    "section": "",
    "text": "Français"
  },
  {
    "objectID": "posts/ci-gitlab-latex.html#the-compilation-phase-build_tex",
    "href": "posts/ci-gitlab-latex.html#the-compilation-phase-build_tex",
    "title": "Faire une CI LaTeX avec GitLab",
    "section": "The compilation phase build_tex",
    "text": "The compilation phase build_tex\nLet’s detail the build_tex step:\n\nbuild_tex:\n  stage: build\n  image: danteev/texlive:latest # texlive plus inkscape and others\n  script:\n    - |\n      for FILE_NAME in $FILE_NAMES\n      do\n        echo \"Compiling ${FILE_NAME}\"\n        pdflatex --shell-escape ${FILE_NAME}.tex\n        if test -f ${FILE_NAME}.bcf; then\n          echo \"Found ${FILE_NAME}.bcf, running biber\"\n          biber ${FILE_NAME}\n        fi\n        pdflatex --shell-escape ${FILE_NAME}.tex\n      done\n  after_script:\n    - |\n      for FILE_NAME in $FILE_NAMES\n      do\n        echo \"============================================\"\n        cat ${FILE_NAME}.log\n        echo \"============================================\"\n      done\n\n  artifacts:\n    paths:\n      - \"*.pdf\"\n\nFirst, we declare stage: build to qualify the step we’re performing here. There are 3 possible stages: build, test, deploy (GitLab documentation). Here we choose build since this is the compilation of our project.\nNext, we load a docker image that contains the texlive tools.\nFinally, the script directive defines in bash the sequence of steps we perform to compile the project.\n\n\n\n\n\n\nConditional execution of biber\n\n\n\nNote that we haven’t included extensions in FILE_NAMES so that we can detect here the bcf files characteristic of the bibliography.\n\n\nFinally, we use the after_script directive to display the compilation log files in the CI logs.\nLastly, artifacts specifies that the artifacts we want to keep from the CI are all PDFs at the root of the repository"
  },
  {
    "objectID": "posts/ci-gitlab-latex.html#the-deployment-phase-deploy",
    "href": "posts/ci-gitlab-latex.html#the-deployment-phase-deploy",
    "title": "Faire une CI LaTeX avec GitLab",
    "section": "The deployment phase deploy",
    "text": "The deployment phase deploy\n\ndeploy:\n  stage: deploy\n  image:\n    name: alpine/git:${GIT_VERSION}\n    entrypoint: [\"\"]\n\n  before_script:\n    # Clone le repo dans un dossier temporaire\n    - git clone \"https://${GITLAB_USERNAME}:${GITLAB_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git\" \"${CI_COMMIT_SHA}\"\n\n    # Configure l’identité git\n    - git config --global user.email \"${GIT_USER_EMAIL:-$GITLAB_USER_EMAIL}\"\n    - git config --global user.name \"${GIT_USER_NAME:-$GITLAB_USER_NAME}\"\n\n  script:\n    # Déplace les PDFs compilés dans le repo cloné\n    - mv *.pdf \"${CI_COMMIT_SHA}/\"\n    - cd \"${CI_COMMIT_SHA}\"\n\n    # Crée une branche orpheline (vierge, sans historique ni fichiers)\n    - git checkout --orphan \"${PDF_BRANCH}\"\n    - git reset --hard\n\n    # Ajoute uniquement les PDF\n    - git add -f *.pdf\n\n    # Vérifie s’il y a des changements et push\n    - |\n      CHANGES=$(git status --porcelain | wc -l)\n      if [ \"$CHANGES\" -gt \"0\" ]; then\n        git commit -m \"${COMMIT_MESSAGE:-Updating PDF files}\"\n        git push --force origin \"${PDF_BRANCH}\" -o ci.skip\n      else\n        echo \"No PDF changes to commit\"\n      fi\n\nFinally, we deploy our PDFs. For this, we load a lightweight Alpine Linux image with the Git version selected in the variables.\nWith the before_script directive, we clone the repository.\n\n\n\n\n\n\nTo create the GitLab token\n\n\n\nNote in the git clone that we use a GITLAB_TOKEN variable, which must be created beforehand and declared in the repository.\nTo do this:\n\nGo to your repository settings.\n\n\n\n\nIn the left menus, expand “Settings” and go to “Access tokens”\n\n\n\nHere add a new token.\n\n\n\n\nClick on “Add new token”\n\n\n\nConfigure the read_repository and write_repository permissions to be able to clone and push our files. Then click on “Create project access token”.\n\n\n\nYour token is now displayed, copy it as it will not be displayed again.\nNow go to CI/CD settings.\n\n\n\nNow create the variable by clicking on “Add variable”, name it GITLAB_TOKEN, in “value” add the copied token.\n\n\n\nThe rest of the script moves the PDFs to the cloned repository, creates the publication branch and adds the pdfs.\nYou should now have a CI for compiling and publishing PDFs! Now you can reference your PDFs in your README.md by entering a link like:\nhttps://mygitlab.com/myusername/myrepo/-/raw/mypdf.pdf\nwhich allows you to display the compilation output directly in the browser. 😄"
  },
  {
    "objectID": "interests.html",
    "href": "interests.html",
    "title": "Personal interests",
    "section": "",
    "text": "Français"
  },
  {
    "objectID": "interests.html#tech-and-homelab",
    "href": "interests.html#tech-and-homelab",
    "title": "Personal interests",
    "section": "Tech and homelab",
    "text": "Tech and homelab\nI enjoy tech subjects and homelab related subjects."
  },
  {
    "objectID": "interests.html#microbiology",
    "href": "interests.html#microbiology",
    "title": "Personal interests",
    "section": "Microbiology",
    "text": "Microbiology\nOne thing that I particularly love is microbiology and the creature that intrigue me the most is Physarum Polycephalum\n\n\n\nPhysarum Polycephalum, the Blob"
  },
  {
    "objectID": "publications.html",
    "href": "publications.html",
    "title": "Publications",
    "section": "",
    "text": "Français"
  },
  {
    "objectID": "teaching.html",
    "href": "teaching.html",
    "title": "Teaching",
    "section": "",
    "text": "Français \n\n2025-2026\n\nTeaching assistant in Statistics (33 hours) for first-year students at AgroParisTech.\nTeaching assistant in “Data Science: Statistical Learning” (9 hours) for second-year students at AgroParisTech\n\n\n\n2024-2025\n\nTeaching assistant in Statistics (33 hours) for first-year students at AgroParisTech.\nTeaching assistant in “Data Science: Statistical Learning” (16.5 hours) for second-year students at AgroParisTech\nTeaching assistant in “Computer science: programming and database” (6 hours) for first-year students at AgroParisTech"
  }
]