使用PowerShell展平LaTeX文件

时间:2018-09-25 13:36:14

标签: powershell latex

我想制作一个简单的PowerShell脚本,该脚本:

  1. 获取输入的.tex文件
  2. 用文件内容本身替换\input{my_folder/my_file}的出现
  3. 输出一个新文件

我的第一步是匹配不同的文件名以便导入它们,尽管以下代码不仅输出文件名,还输出\include{file1}\include{file2}等。

$ms = Get-Content ms.tex -Raw
$environment = "input"

$inputs = $ms | Select-String "\\(?:input|include)\{([^}]+)\}" -AllMatches | Foreach {$_.matches}

Write-Host $inputs

我认为使用括号会创建一个匹配的组,但是失败了,您能不能向我解释为什么以及仅获取文件名而不是完全匹配的正确方法是什么?

在regex101上,此regexp \\(?:input|include)\{([^}]+)\}似乎可以正常工作。

1 个答案:

答案 0 :(得分:3)

您正在寻找Positive lookbehind and positive lookahead

@'
Some line
\input{my_folder/my_file}
Other line
'@ | Select-String '(?<=\\input{)[^}]+(?=})' -AllMatches | Foreach {$_.matches}

结果

Groups   : {0}
Success  : True
Name     : 0
Captures : {0}
Index    : 18
Length   : 17
Value    : my_folder/my_file