Свести файл LaTeX с помощью PowerShell - PullRequest
0 голосов
/ 25 сентября 2018

Я хотел бы создать простой сценарий 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 это регулярное выражение \\(?:input|include)\{([^}]+)\}, кажется, работает нормально.

1 Ответ

0 голосов
/ 25 сентября 2018

Вы ищете Позитивный взгляд назад и позитивный прогноз :

@'
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...