我想使用 pst-sigsys 包制作框图(如下所示:http://squobble.blogspot.com/2009/12/drawing-beautiful-block-diagrams-in_04.html)。我可以这样做并导出为 PDF 或 PS 等。
在网页上呈现区块的最佳方法是什么?我在考虑 SVG。我该如何实现呢?
答案1
您可以使用 LaTeX 创建 PSTricks 图片的 PostScript (PS) 版本(也称为 PGF/TikZ 图片的 PS 或 PDF 版本)。我建议使用该类standalone
来生成一个只包含图片而没有任何其他材料的文件。然后在支持格式以及 SVG 输出的矢量图形编辑器中导入 PS 或 PDF。我建议Inkscape它是免费的开源软件,适用于 Linux、Mac 和 MS Windows。只需加载 PS 或 PDF 文件并选择“另存为”,然后选择“纯 SVG”输出。这些文件可以用现代浏览器查看,并包含在网站中。
Inkscape 还支持命令行参数(至少我拥有的 Linux 版本),因此您可以使用以下命令将 PSTricks 转换为 SVG:
latex file.tex
dvips file.dvi
inkscape file.ps --export-plain-svg=file.svg
注意:我使用了您链接的网站中的第一个示例作为测试。我删除了环境figure
并使用了standalone
类。边界框似乎存在问题。左侧和右侧的s[n]
和e[n]
未完全包含在内。我使用border=5mm
类选项修复了这个standalone
问题。我不确定这是否是 PSTricks 的问题,或者可能是dvips
。
答案2
M. Gieseking 的dvisvgm
是从 LaTeX 输入生成 SVG 的最先进的实用程序。
与 Inkscape 不同,它不需要中间的 PostScript。此外,它是 TeXLive 和 MiKTeX 的一部分。
SVG输出:
使用以下方法从 LaTeX 输入编译为 SVG:
latex 框图 latex 框图 dvisvgm --exact --font-format=woff --zoom=-1 图表
使用标签将(静态)SVG 嵌入到 HTML 中<img>
:
<img src="https://url/of/block-diagram.svg">
文件block-diagram.tex
,取自问题中链接的页面:
\documentclass{article}
\usepackage{pst-sigsys}
\pagestyle{empty}
\begin{document}
\begin{figure}[ht]
\centering %
\begin{pspicture}[showgrid=false](0.5,-1.2)(9,1.55)
%--- Define blocks ---
\rput(0.5,0){\rnode{s}{$s[n]$}}
\dotnode[dotstyle=square*,dotscale=0.001](1.7,0){dot}
\psblock(3,.75){H1}{$H_1(z)$}
\psblock(3,-.75){H2}{$H_2(z)$}
\psblock(5.8,.75){B2}{$\hat H_2(z)$}
\psblock(5.8,-.75){B1}{$\hat H_1(z)$}
\pscircleop(7.7,0){ominus}
\rput(9,0){\rnode{e}{$e[n]$}}
%--- Connect blocks ---
\psset{style=Arrow}
\ncline[nodesepA=.15]{-}{s}{dot}
\ncangle[angleA=90,angleB=180]{dot}{H1}
\ncangle[angleA=-90,angleB=180]{dot}{H2}
\ncline{H1}{B2} \naput[npos=.5]{$x_1[n]$}
\ncline{H2}{B1} \naput[npos=.5]{$x_2[n]$}
\ncangle[angleB=90]{B2}{ominus} \naput[npos=.5]{$z_1[n]$}
\ncangle[angleB=-90]{B1}{ominus} \naput[npos=.5]{$z_2[n]$}
\ncline[nodesepB=.15]{ominus}{e}
\end{pspicture}
\end{figure}
\end{document}