0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerShellを使用してTeXファイル内のバックスラッシュをスラッシュに置換する

Last updated at Posted at 2024-05-22

めんどくさい!! スラッシュ・バックスラッシュ問題

あれ? latexのコンパイルエラーが出た。ああ,画像パスを置換し忘れてた。
もう自動出来ないのか?
調べたところなかった為,自作しました。

初めに

この記事では、PowerShellを使用してTeXファイル内のバックスラッシュをスラッシュに置換するスクリプトを作成する方法を紹介します。TeXファイル内のバックスラッシュを置換することは、特にLaTeX文書でグラフィックスパスを変更する必要がある場合に便利です。

スクリプトの作成

まず、PowerShellスクリプトを作成します。以下は、convert_backslash_to_slash.ps1というスクリプトの内容です。

param (
    [Parameter(Mandatory=$true)]
    [string]$texFilePath
)

# .tex 拡張子を追加する
$texFilePath += ".tex"

# ファイルの内容を読み込む
$texCode = Get-Content -Path $texFilePath -Raw

# \includegraphics の場合の置換
$includeGraphicsPattern = '\\includegraphics\s*(\[[^\]]*\])?\s*{([^}]+)}'
$texCode = [System.Text.RegularExpressions.Regex]::Replace($texCode, $includeGraphicsPattern, { param($m) "`\includegraphics$($m.Groups[1].Value)`{$($m.Groups[2].Value -replace '\\', '/')}" })

# \includesvg の場合の置換
$includeSvgPattern = '\\includesvg\s*(\[[^\]]*\])?\s*{"([^}]+)"}'
$texCode = [System.Text.RegularExpressions.Regex]::Replace($texCode, $includeSvgPattern, { param($m) "`\includesvg$($m.Groups[1].Value)`{$($m.Groups[2].Value -replace '\\', '/')}" })

# 変換後の内容を書き戻す
Set-Content -Path $texFilePath -Value $texCode -Encoding UTF8

このスクリプトは、指定されたTeXファイルのパスを引数として受け取り、バックスラッシュをスラッシュに置換します。

VSCode設定

setting.jsonに以下を追加します。convert_backslash_to_slash.ps1のパスを設定してください。

"latex-workshop.latex.tools": [
    {
        "name": "convert_backslash_to_slash",
        "command": "powershell",
        "args": [
        "-NoProfile",
        "-ExecutionPolicy",
        "Bypass",
        "-File",
        "convert_backslash_to_slash.ps1",
        "%DOCFILE%"
        ]
    }
],
"latex-workshop.latex.recipes": [
    {
        "name": "LuaLaTeX_PS",
        "tools": [
        "convert_backslash_to_slash",
        "Latexmk (LuaLaTeX)" 
        ],
    },
],
"[latex]": {
    "files.encoding": "utf8bom"
}

これでコンパイルをLuaLaTeX_PSで行えば,自動的に画像パスだけを置換してくれます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?