ラッパーラテックスファイルでコンパイルしたtikzタイミング図がいくつかあります。このラッパーは、latex パッケージ スタンドアロンを使用して、pdf および png ファイルを生成します。これらすべてのラッパー ファイルを保存して、1 つだけ置き換えたいと思います。さらに、ファイル名のリストを PowerShell 関数にパイプして、一般的なラッパー ファイルである各波形 tex ファイルを処理したいと考えています。
詳細:
Waveform.tex
\input{...}
マクロ内にプレースホルダーを持つラッパー tex ファイルです。このプレースホルダーは、PowerShell スクリプトに置き換えられます。
\documentclass[convert={density=600,size=2000x800,outext=.png}]{standalone}
\usepackage[utf8]{inputenc} % UTF-8 tex file input incoding
\usepackage[T1]{fontenc} % Type1 font encoding
\usepackage[ngerman]{babel} % new german writing rules; must be loaded before microtype
\usepackage{courier} % set courier font as default for teletype writer (texttt, ttfamily, ...)
\usepackage[usenames,svgnames,table]{xcolor} % load colors and color-names
\usepackage{pgf} % primitive drawing library
\usepackage{tikz} % PGF frontend, drawing macros
\usepackage{tikz-timing} % spezial TikZ library for waveform/timing diagrams
\usetikztiminglibrary{nicetabs} % sublibrary for better looking timingtables
\begin{document}
\input{%%WaveformFile%%}
%\input{IICController} % uncomment this if timing-diagram is a fixed file name
\end{document}
IICController.tex は波形の例です。
%
\tikztimingmetachar{A}[1]{#1{Z[black]};}
%
\begin{tikztimingtable}[
timing/table/header/.style={font=\bf},
timing/wscale=2,
timing/nice tabs,
]
Master\_BusRequest & L H H 4H 4H 4H 4H L \\
Master\_BusGrant & L L H 4H 4H 4H 4H L \\
Master\_BusAbort & L L L 4L 4L 4L 4L L \\
Master\_WP\_Valid & L L L 4H 4H 4H 4H L \\
Master\_WP\_Data & A A A 4D{Phy Adr + R/W} 4D{Reg Adr} 4D{D0.0} 4D{D0.1} A \\
Master\_WP\_Last & L L L 4L 4L 4L 4H L \\
Master\_WP\_Ack & L L L 3LH 3LH 3LH 3LH L \\
\extracode
\tableheader{Signalname}{Signalverlauf}
\tablerules
\begin{background}[shift={(0.1,0)},help lines]
\vertlines{0,2,...,40}
\end{background}
\end{tikztimingtable}
そして最後に、これが私の PowerShell スクリプトです。
function Compile-Waveform
{ [CmdletBinding()]Param(
[Parameter(
Mandatory=$True,
Position=0,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[String[]]$InputFiles
)
Begin
{ $WrapperFile = "Waveform.tex"
$WrapperContent = Get-Content -Path $WrapperFile -Encoding ASCII -Raw
}
Process
{ #Write-Host "WrapperContent" -ForegroundColor Green
#Write-Host $WrapperContent -ForegroundColor Gray
#Write-Host ""
foreach($InputFile in $InputFiles)
{ Write-Host "processing file: '$Inputfile'" -ForegroundColor Yellow
$OutputFile = [String]$InputFile.Replace(".tex", ".png")
$Temp = $WrapperContent -replace "%%WaveformFile%%",$InputFile
#Write-Host "Temp" -ForegroundColor Green
#Write-Host $Temp -ForegroundColor Gray
#Write-Host ""
Write-Output $Temp | & 'C:\Program Files\MiKTeX 2.9\miktex\bin\x64\pdflatex.exe' -shell-escape -time-statistics -synctex=1 -interaction=nonstopmode
}
}
}
スクリプトの使用方法
のフォルダに移動しますIICController.tex
。*.ps1 ファイルをソースし、最後に見つかったすべての波形ファイルを PowerShell 関数にパイプします。
cd d:\temp\waveform
. compile.ps1
dir IICController.tex | Compile-Waveform
これで、pdflatex はエラー ログを出力します。
processing file: 'D:\git\SATAController\doc\Waveforms\Simple.tex'
This is pdfTeX, Version 3.14159265-2.6-1.40.15 (MiKTeX 2.9 64-bit)
**entering extended mode
LaTeX2e <2014/05/01>
Babel <3.9l> and hyphenation patterns for 68 languages loaded.
! Emergency stop.
<*> ...600,size=2000x800,outext=.png}]{standalone}
! ==> Fatal error occurred, no output PDF file produced!
Transcript written on texput.log.
gross execution time: 26 ms
user mode: 0 ms, kernel mode: 15 ms, total: 15
puttex.log
コンソール出力と同じ内容です。
何が起こっているのか誰にも分かりますか?
PowerShell で固定ファイル名 (2 行目を参照) で Wavefom.tex を実行すると\input
、すべて正常に動作します。