42. 【IEEE論文】Control Systems 論文 LaTeX PoCをCIで完走させる|GitHub Actions 編

tags:LaTeX,IEEE,制御工学,論文執筆,GitHubActions,CI


📌 この記事の位置づけ

本記事は、以下のシリーズの続編です。

この記事では、その最終段階として、

「この LaTeX 構成を、CI(GitHub Actions)でも最後まで通す」

という PoC を記録します。


🎯 この記事でやること

本記事で扱うのは、論文の内容ではありません

これらは一切扱いません。

目的は一貫して次の一点です。

IEEE Control Systems 論文を、CI 上でも LaTeX で破綻させず完走できるか


🤔 なぜ GitHub Actions までやるのか

ローカルで PDF が通っても、次の段階で止まることが多いです。

つまり、

「人間の環境では通るが、再現できない」

状態になります。

そこで今回は、

両方で同じ LaTeX 構成が通る ことを、PoC として確認しました。


🧱 採用した方針

この CI では、以下を重視しています。

「CI が落ちたら何も分からない」状態を避ける設計です。


🧩 GitHub Actions workflow 全体

以下が、今回使用した workflow です。

name: Build LaTeX PDF (Humanoid TCST)

on:
  push:
    paths:
      - 'papers/2025_humanoid_tcst/**'
      - '.github/workflows/latex_humanoid_tcst.yml'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Compile LaTeX document
        id: compile
        uses: xu-cheng/latex-action@v2
        with:
          root_file: main.tex
          working_directory: papers/2025_humanoid_tcst
          latexmk_use_xelatex: true
          continue_on_error: false

      # --- 失敗時でもログを出力 ---
      - name: Show LaTeX logs (tail)
        if: always()
        run: |
          echo "==== list ===="
          ls -la papers/2025_humanoid_tcst || true
          echo "==== main.log (last 200 lines) ===="
          tail -n 200 papers/2025_humanoid_tcst/main.log || true
          echo "==== latexmk.log (last 200 lines) ===="
          tail -n 200 papers/2025_humanoid_tcst/latexmk.log || true

      - name: Upload PDF artifact
        if: success()
        uses: actions/upload-artifact@v4
        with:
          name: humanoid_tcst_pdf
          path: papers/2025_humanoid_tcst/main.pdf

      - name: Upload logs artifact
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: latex_logs
          path: |
            papers/2025_humanoid_tcst/*.log
            papers/2025_humanoid_tcst/*.aux
            papers/2025_humanoid_tcst/*.blg

🔍 この workflow のポイント

① XeLaTeX 前提を明示

latexmk_use_xelatex: true

を使う前提を、CI 側でも固定しています。


② 失敗してもログを必ず出す

if: always()

を使い、

必ず取得します。

CI で LaTeX が落ちた場合、
ログがないと原因特定がほぼ不可能です。


③ 成功時は PDF を artifact 化

uses: actions/upload-artifact@v4

により、

成果物として保存できます。

これは、

「この構成で CI でも完走した」

という証拠になります。


🧠 CI まで通して分かったこと

ということが、実証できました。


🧾 本シリーズのまとめ(39–42)

論文の中身は、
この土台の上で初めて安心して磨けます


🏁 おわりに

論文執筆が止まる原因は、
理論や実験ではなく 「再現できない構造」 であることが多いです。

LaTeX 構成を固め、
CI まで通しておくことで、

をまとめて排除できます。

本記事が、
IEEE Control Systems 論文を書こうとしている方の
参考になれば幸いです。


※ 本記事は LaTeX / CI 構成 PoC の記録であり、
研究成果の主張や評価を目的とするものではありません。