Matlab制作个人主页
生活随笔
收集整理的这篇文章主要介绍了
Matlab制作个人主页
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
Matlab代码编辑器具有代码发布功能,如下图,当编辑好代码后,点击Publish按钮可以发布html网页格式的代码使用说明。
从上面的图中可以看到,发布功能可以控制字体(黑体、斜体、等宽字体),添加链接、latex公式、列表、代码等,功能方便实用,具体可以参考帮助中的介绍,如下表所示。
借助Matlab这个功能,可以用来制作个人主页,如下面的代码
文件名tempweb.m:
%% *春秋* % % <<chunqiu.jpg>> % % 地址: % 安徽省 % % 博客: % <http://blog.sina.com.cn/gjchunqiu 新浪博客>, <https://chunqiu.blog.ustc.edu.cn USTC博客> % %% 教育背景 % % * 高中 % * 大学 % fprintf('<html><p align="left"><font face="Times New Roman">[<a href="#Top" target="_self">Go Top</a>]</font></p></html>\n') %% 研究兴趣 % * *视觉测量,目标跟踪* % % * *信号处理* % fprintf('<html><p align="left"><font face="Times New Roman">[<a href="#Top" target="_self">Go Top</a>]</font></p></html>\n') %% 研究项目 % % <html> % <table width="500"> % <tr> % <td>项目名称</td> % <td>项目简介</td> % <td>示例</td> % </tr> % <tr> % <td>视觉系统</td> % <td>视觉系统介绍</td> % <td><div align="center"><img src="chunqiu.jpg" width="100"></div></td> % </tr> % </table> % </html> % fprintf('<html><p align="left"><font face="Times New Roman">[<a href="#Top" target="_self">Go Top</a>]</font></p></html>\n')
发布后得到的网页如下
默认情况下,发布的网页会显示出matlab代码。为了不让这些代码显示出来,可以设置publish选项取消显示:点击Publish下的Edit Publishing Options...,设置Include code为false。
设置好后再发布,得到的结果如下,可以看到不再包含matlab代码:
另外,这些设置还可以通过代码的方式执行,如
文件名publishweb.m % 生成网页 clc clear close all %% 网页文件名 filename = 'tempweb'; % 网页发布 options.showCode = false; % options.stylesheet = 'html.xsl'; publish([filename,'.m'],options); % 查看网页效果 web(['html/', filename, '.html']) 直接运行此代码即可发布网页(非点击publish按钮)。 默认情况下,Matlab会以通用格式生成网页,第一部分为网页介绍,然后添加目录,继而依次显示后续部分,此默认格式由toolbox\matlab\codetools\private\mxdom2simplehtml.xsl文件控制,如字体大小、颜色等。 为了制作个性化的个人主页,可以修改此文件,重新调整字体大小、目录显示等,将此文件命名为html.xsl,保存在publishweb.m同目录下,修改publishweb.m文件为: % 生成网页 clc clear close all %% 网页文件名 filename = 'tempweb'; % 网页发布 options.showCode = false; options.stylesheet = 'html.xsl'; publish([filename,'.m'],options); % 查看网页效果 web(['html/', filename, '.html']) tempweb.m文件修改为: %% *春秋* % % <<chunqiu.jpg>> % % 地址: % 安徽省 % % 博客: % <http://blog.sina.com.cn/gjchunqiu 新浪博客>, <https://chunqiu.blog.ustc.edu.cn USTC博客> % %% 教育背景 % % * 高中 % * 大学 % %% 研究兴趣 % * *视觉测量,目标跟踪* % % * *信号处理* % %% 研究项目 tabledata{1,1} = '项目名称'; tabledata{1,2} = '项目简介'; tabledata{1,3} = '示例'; tabledata{2,1} = '视觉系统'; tabledata{2,2} = {'自然基金', ... '项目介绍,项目介绍,项目介绍,项目介绍,项目介绍,项目介绍。',... '<b>关键词:</b>目标跟踪'}; tabledata{2,3} = {'chunqiu.jpg', 200}; % 以指定的宽度显示图片 CreateTable(tabledata); 其中CreateTable函数为
% 使用fprintf输出创建表格 function CreateTable(tabledata) [rows, cols] = size(tabledata); fprintf('<html>\n'); fprintf('<table>\n'); % width="1300" for i = 1:rows fprintf('<tr>\n'); for j = 1:cols tempstr = ''; if ischar(tabledata{i,j}) % 如果是字符串 if (i == 1) % 如果是待显示字符串 % 第一行居中输出 tempstr = ['<div align="center">', tabledata{i,j}, '</div>']; elseif (j == 1 && i > 1) % 第一列文字加粗居中输出 tempstr = ['<div align="center"><b>' tabledata{i,j} ' </b></div>']; else % 其他文字加空格输出 tempstr = [' ' tabledata{i,j}]; end elseif iscellstr(tabledata{i,j}) % 如果是字符串元胞 tempstr = MergeCellStr(tabledata{i,j}); elseif iscell(tabledata{i,j}) % 如果是图片 if exist(['html/', tabledata{i,j}{1}],'file') == 2 % 如果图片存在 tempstr = sprintf('<div align="center"><img src="%s" width="%d"></div>', tabledata{i,j}{1}, tabledata{i,j}{2}); end end fprintf('<td>%s</td>\n', tempstr); end fprintf('</tr>\n'); end fprintf('</table>\n'); fprintf('</html>\n'); end %% 合并字符串元胞 function str = MergeCellStr(strcell) str = [' ', strcell{1}]; for i = 2:length(strcell) str = [str, '<br> ', strcell{i}]; % 为空格 end end 运行publishweb.m,得到如下效果 注意:由于修改后的xsl会自动添加[go top]置顶链接,所以可以将tempweb.m文件中不需要额外添加置顶链接。 另外,Matlab还提供了一个MATLAB Report Generator工具箱,它提供了GUI可以完成html、doc、ppt等格式的报告发布,功能强大。 html.xsl文件: <?xml version="1.0" encoding="utf-8"?> <!-- This is an XSL stylesheet which converts mscript XML files into HTML. Use the XSLT command to perform the conversion. Copyright 1984-2012 The MathWorks, Inc. --> <!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> <!ENTITY reg "®"> ]> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:mwsh="http://www.mathworks.com/namespace/mcode/v1/syntaxhighlight.dtd" exclude-result-prefixes="mwsh"> <xsl:output method="html" indent="no" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"/> <!-- encoding="GB2312" --> <xsl:strip-space elements="mwsh:code"/> <!--配置网页的标题--> <xsl:variable name="title"><!--title变量,即网页标题--> <xsl:variable name="dTitle" select="//steptitle[@style='document']"/><!--dTitle临时变量--> <xsl:choose> <xsl:when test="$dTitle"><xsl:value-of select="$dTitle"/></xsl:when><!--使用dTitle作为标题--> <xsl:otherwise><xsl:value-of select="mscript/m-file"/></xsl:otherwise><!--使用文件名作为标题--> </xsl:choose> </xsl:variable> <xsl:template match="mscript"> <html> <!-- 配置head --> <head> <!--这句话作为注释出现在生成html中--> <xsl:comment> This HTML was auto-generated from MATLAB code. To make changes, update the MATLAB code and republish this document. </xsl:comment> <!--配置html标题--> <title><xsl:value-of select="$title"/></title><!--使用title变量作为网页标题--> <meta name="generator"> <xsl:attribute name="content">MATLAB <xsl:value-of select="version"/> by GJ</xsl:attribute> </meta> <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" /> <meta name="DC.date"> <xsl:attribute name="content"><xsl:value-of select="date"/></xsl:attribute> </meta> <meta name="DC.source"> <xsl:attribute name="content"><xsl:value-of select="m-file"/>.m</xsl:attribute> </meta> <!-- 调用下面的stylesheet template --> <xsl:call-template name="stylesheet"/> </head> <!-- 配置body --> <body> <!-- 调用下面的header template,实际为空 --> <xsl:call-template name="header"/> <div class="content"> <!-- Determine if there should be an introduction section. 判断是否应该有introduction部分 --> <xsl:variable name="hasIntro" select="count(cell[@style = 'overview'])"/> <!-- If there is an introduction, display it. 如果有,显示它 --> <xsl:if test = "$hasIntro"> <h1><xsl:apply-templates select="cell[1]/steptitle"/></h1> <xsl:comment>introduction</xsl:comment> <xsl:apply-templates select="cell[1]/text"/> <!-- There can be text output if there was a parse error. --> <xsl:apply-templates select="cell[1]/mcodeoutput"/> <xsl:comment>/introduction</xsl:comment> </xsl:if> <xsl:variable name="body-cells" select="cell[not(@style = 'overview')]"/> <!-- Include contents if there are titles for any subsections. 如果每个部分都有标题,则显示目录 --> <xsl:if test="count(cell/steptitle[not(@style = 'document')])"> <xsl:call-template name="gjcontents"> <xsl:with-param name="body-cells" select="$body-cells"/> </xsl:call-template> </xsl:if> <!-- Loop over each cell 对每一个cell循环执行 --> <xsl:for-each select="$body-cells"> <!-- Title of cell --> <xsl:if test="steptitle"> <xsl:variable name="headinglevel"> <xsl:choose> <xsl:when test="steptitle[@style = 'document']">h1</xsl:when> <xsl:otherwise>h2</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:element name="{$headinglevel}"> <xsl:apply-templates select="steptitle"/> <xsl:if test="not(steptitle[@style = 'document'])"> <a> <xsl:attribute name="name"> <xsl:value-of select="position()"/> </xsl:attribute> </a> </xsl:if> </xsl:element> </xsl:if> <!-- Contents of each cell --> <xsl:apply-templates select="text"/> <xsl:apply-templates select="mcode-xmlized"/> <xsl:apply-templates select="mcodeoutput|img"/> <!-- 到顶部链接 --> [<a href="#Top" target="_self">go top</a>] <p></p> </xsl:for-each> <xsl:call-template name="footer"/> </div> <!-- 显示原始代码 --> <xsl:apply-templates select="originalCode"/> </body> </html> </xsl:template> <xsl:template name="stylesheet"> <style type="text/css"> html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent} body{line-height:1} ol,ul{list-style:none} blockquote,q{quotes:none} blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}:focus{outine:0} ins{text-decoration:none}del{text-decoration:line-through} table{border-collapse:collapse;border-spacing:0} html { min-height:100%; margin-bottom:1px; } html body { height:100%; margin:0px; font-family:Times New Roman, Arial, Helvetica, sans-serif; font-size:18px; color:#000; line-height:140%; background:#fff none; overflow-y:scroll; } html body td { vertical-align:middle; text-align:left; } h1 { padding:0px; margin:0px 0px 25px; font-family:楷体, Times New Roman, Arial, Helvetica, sans-serif; font-size:2.5em; color:#d55000; line-height:100%; font-weight:normal; } h2 { padding:0px; margin:10px 0px 8px; font-family:Times New Roman, Arial, Helvetica, sans-serif; font-size:1.2em; color:#000; font-weight:bold; line-height:140%; border-bottom:1px solid #d6d4d4; display:block; } h3 { padding:0px; margin:0px 0px 5px; font-family:Times New Roman, Arial, Helvetica, sans-serif; font-size:1.1em; color:#000; font-weight:bold; line-height:140%; } a { color:blue; text-decoration:underline; } a:hover { color:red; text-decoration:underline; }<!-- 鼠标移上去的颜色 --> a:visited { color:purple; text-decoration:underline; }<!-- 访问过的颜色 --> p { padding:0px; margin:0px 0px 5px; } img { padding:0px; margin:0px 0px 0px; border:none; } p img, pre img, tt img, li img, h1 img, h2 img { margin-bottom:0px; } ul { padding:0px; margin:0px 0px 20px 23px; list-style:square; } ul li { padding:0px; margin:0px 0px 7px 0px; } ul li ul { padding:5px 0px 0px; margin:0px 0px 7px 23px; } ul li ol li { list-style:decimal; } ol { padding:0px; margin:0px 0px 20px 0px; list-style:decimal; } ol li { padding:0px; margin:0px 0px 7px 23px; list-style-type:decimal; } ol li ol { padding:5px 0px 0px; margin:0px 0px 7px 0px; } ol li ol li { list-style-type:lower-alpha; } ol li ul { padding-top:7px; } ol li ul li { list-style:square; } .content { font-size:1.2em; line-height:140%; padding: 20px; } pre, code { font-size:20px; } tt { font-size: 1.2em; } pre { margin:-10px 0px 10px; } pre.codeinput { padding:10px; border:1px solid #d3d3d3; background:#f7f7f7; } pre.codeoutput { padding:10px 11px; margin:0px 0px 20px; color:#4c4c4c; } pre.error { color:red; } @media print { pre.codeinput, pre.codeoutput { word-wrap:break-word; width:100%; } } span.keyword { color:#0000FF } span.comment { color:#228B22 } span.string { color:#A020F0 } span.untermstring { color:#B20000 } span.syscmd { color:#B28C00 } .footer { width:auto; padding:10px 0px; margin:25px 0px 0px; border-top:1px dotted #878787; font-size:0.8em; line-height:140%; font-style:italic; color:#878787; text-align:left; float:none; } .footer p { margin:0px; } .footer a { color:#878787; } .footer a:hover { color:#878787; text-decoration:underline; } .footer a:visited { color:#878787; } table th { padding:7px 5px; text-align:left; vertical-align:middle; border: 1px solid #d6d4d4; font-weight:bold; } table td { padding:7px 5px; text-align:left; vertical-align:top; border:2px solid #C0DCC0; } </style> </xsl:template> <!-- Header 页眉 --> <xsl:template name="header"> </xsl:template> <!-- Footer 页脚 --> <xsl:template name="footer"> <p class="footer"> <xsl:value-of select="copyright"/> <!--<a href="https://chunqiu.blog.ustc.edu.cn">Published with MATLAB® R<xsl:value-of select="release"/> by GJ, <xsl:value-of select="date"/></a>--> Published with MATLAB® R<xsl:value-of select="release"/> on <xsl:value-of select="date"/> </p> </xsl:template> <!-- Matlab配置的目录 --> <xsl:template name="contents"> <xsl:param name="body-cells"/> <h2>目录</h2> <div> <ul> <xsl:for-each select="$body-cells"> <xsl:if test="./steptitle"> <li> <a> <xsl:attribute name="href">#<xsl:value-of select="position()"/></xsl:attribute><xsl:apply-templates select="steptitle"/> </a> </li> </xsl:if> </xsl:for-each> </ul> </div> </xsl:template> <!-- GJ配置的目录 --> <xsl:template name="gjcontents"> <xsl:param name="body-cells"/> <h2>目录</h2> <!-- <a><xsl:attribute name="href">Top</xsl:attribute></a> --> <xsl:for-each select="$body-cells"> <xsl:if test="./steptitle"> [<a><xsl:attribute name="href">#<xsl:value-of select="position()"/></xsl:attribute><xsl:apply-templates select="steptitle"/></a>] </xsl:if> </xsl:for-each> </xsl:template> <!-- HTML Tags in text sections --> <xsl:template match="p"> <p><xsl:apply-templates/></p> </xsl:template> <xsl:template match="ul"> <div><ul><xsl:apply-templates/></ul></div> </xsl:template> <xsl:template match="ol"> <div><ol><xsl:apply-templates/></ol></div> </xsl:template> <xsl:template match="li"> <li><xsl:apply-templates/></li> </xsl:template> <xsl:template match="pre"> <xsl:choose> <xsl:when test="@class='error'"> <pre class="error"><xsl:apply-templates/></pre> </xsl:when> <xsl:otherwise> <pre><xsl:apply-templates/></pre> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="b"> <b><xsl:apply-templates/></b> </xsl:template> <xsl:template match="i"> <i><xsl:apply-templates/></i> </xsl:template> <xsl:template match="tt"> <!-- 重定义为下划线 --> <u><xsl:apply-templates/></u> </xsl:template> <xsl:template match="a"> <a> <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute> <xsl:attribute name="target">_blank</xsl:attribute> <xsl:apply-templates/> </a> </xsl:template> <xsl:template match="html"> <xsl:value-of select="@text" disable-output-escaping="yes"/> </xsl:template> <xsl:template match="latex"/> <!-- Detecting M-Code in Comments--> <xsl:template match="text/mcode-xmlized"> <pre class="language-matlab"><xsl:apply-templates/><xsl:text><!-- g162495 --> </xsl:text></pre> </xsl:template> <!-- Code input and output --> <xsl:template match="mcode-xmlized"> <pre class="codeinput"><xsl:apply-templates/><xsl:text><!-- g162495 --> </xsl:text></pre> </xsl:template> <xsl:template match="mcodeoutput"> <xsl:choose> <xsl:when test="concat(substring(.,0,7),substring(.,string-length(.)-7,7))='<html></html>'"> <xsl:value-of select="substring(.,7,string-length(.)-14)" disable-output-escaping="yes"/> </xsl:when> <xsl:otherwise> <pre> <xsl:attribute name="class"> <xsl:value-of select="@class"/> </xsl:attribute> <xsl:apply-templates/> </pre> </xsl:otherwise> </xsl:choose> </xsl:template> <!-- Figure and model snapshots and equations --> <xsl:template match="img[@class='equation']"> <img> <xsl:attribute name="src"><xsl:value-of select="@src"/></xsl:attribute> <xsl:attribute name="alt"><xsl:value-of select="@alt"/></xsl:attribute> </img> </xsl:template> <xsl:template match="img"> <img vspace="5" hspace="5"> <xsl:attribute name="src"><xsl:value-of select="@src"/></xsl:attribute> <xsl:attribute name="alt"><xsl:value-of select="@alt"/></xsl:attribute> <xsl:text> </xsl:text> </img> </xsl:template> <!-- Stash original code in HTML for easy slurping later. 原始代码 --> <xsl:template match="originalCode"> <xsl:variable name="xcomment"> <xsl:call-template name="globalReplace"> <xsl:with-param name="outputString" select="."/> <xsl:with-param name="target" select="'--'"/> <xsl:with-param name="replacement" select="'REPLACE_WITH_DASH_DASH'"/> </xsl:call-template> </xsl:variable> <xsl:comment> ##### SOURCE BEGIN ##### <xsl:value-of select="$xcomment"/> ##### SOURCE END ##### </xsl:comment> </xsl:template> <!-- Colors for syntax-highlighted input code --> <xsl:template match="mwsh:code"> <xsl:apply-templates/> </xsl:template> <xsl:template match="mwsh:keywords"> <span class="keyword"><xsl:value-of select="."/></span> </xsl:template> <xsl:template match="mwsh:strings"> <span class="string"><xsl:value-of select="."/></span> </xsl:template> <xsl:template match="mwsh:comments"> <span class="comment"><xsl:value-of select="."/></span> </xsl:template> <xsl:template match="mwsh:unterminated_strings"> <span class="untermstring"><xsl:value-of select="."/></span> </xsl:template> <xsl:template match="mwsh:system_commands"> <span class="syscmd"><xsl:value-of select="."/></span> </xsl:template> <!-- Footer information --> <xsl:template match="copyright"> <xsl:value-of select="."/> </xsl:template> <xsl:template match="revision"> <xsl:value-of select="."/> </xsl:template> <!-- Search and replace --> <!-- From http://www.xml.com/lpt/a/2002/06/05/transforming.html --> <xsl:template name="globalReplace"> <xsl:param name="outputString"/> <xsl:param name="target"/> <xsl:param name="replacement"/> <xsl:choose> <xsl:when test="contains($outputString,$target)"> <xsl:value-of select= "concat(substring-before($outputString,$target),$replacement)"/> <xsl:call-template name="globalReplace"> <xsl:with-param name="outputString" select="substring-after($outputString,$target)"/> <xsl:with-param name="target" select="$target"/> <xsl:with-param name="replacement" select="$replacement"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$outputString"/> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>
----------------------------------- from: http://chunqiu.blog.ustc.edu.cn/?p=804
从上面的图中可以看到,发布功能可以控制字体(黑体、斜体、等宽字体),添加链接、latex公式、列表、代码等,功能方便实用,具体可以参考帮助中的介绍,如下表所示。
| Sections and Section Titles 使用%%或%%%来分章节,紧随之后的%为介绍文本 | %% SECTION TITLE % DESCRIPTIVE TEXT %%% SECTION TITLE WITHOUT SECTION BREAK % DESCRIPTIVE TEXT |
| Text Formatting _括起来的表示斜体,*括起来的黑体,|括起来的为等宽字体 文本后加(TM),则TM为上标;加(R),则为文本加R商标 | % _ITALIC TEXT_ % *BOLD TEXT* % |MONOSPACED TEXT| % Trademarks: % TEXT(TM) % TEXT(R) |
| Bulleted and Numbered Lists 以*加空格开头的为符号列表,以#加空格开头的为序号列表 | %% Bulleted List % % * BULLETED ITEM 1 % * BULLETED ITEM 2 % %% Numbered List % % # NUMBERED ITEM 1 % # NUMBERED ITEM 2 % |
| Text and Code Blocks 另起一行以两个空格开头的文本以预置格式显示 另起一行以三个空格开头的文本以代码格式显示 | %% % % PREFORMATTED % TEXT % %% MATLAB(R) Code % % for i = 1:10 % disp x % end % |
| External File Content 以<include>括起来的文件直接显示其代码内容 | % % <include>filename.m</include> % |
| External Graphics 以<<>>括起来的为添加图片 | % % <<FILENAME.PNG>> % |
| Image Snapshot snapnow为捕捉figure快照并显示 | snapnow; |
| LaTeX Equations 添加latex公式 | %% Inline Expression % $x^2+e^{\pi i}$ %% Block Equation % eπi+1=0 |
| Hyperlinks 添加网址链接或调用matlab代码执行 | % <http://www.mathworks.com MathWorks> % <matlab:FUNCTION DISPLAYED_TEXT> |
| HTML Markup 添加html内容以显示,只在发布为html网页时有效 | % % <html> % <table border=1><tr> % <td>one</td> % <td>two</td></tr></table> % </html> % |
| LaTeX Markup 添加latex内容,只在发布为latex时有效 | %% LaTeX Markup Example % <latex> % \begin{tabular}{|r|r|} % \hline $n$&$n!$\\ % \hline 1&1\\ 2&2\\ 3&6\\ % \hline % \end{tabular} % </latex> % |
默认情况下,发布的网页会显示出matlab代码。为了不让这些代码显示出来,可以设置publish选项取消显示:点击Publish下的Edit Publishing Options...,设置Include code为false。
设置好后再发布,得到的结果如下,可以看到不再包含matlab代码:
另外,这些设置还可以通过代码的方式执行,如
文件名publishweb.m % 生成网页 clc clear close all %% 网页文件名 filename = 'tempweb'; % 网页发布 options.showCode = false; % options.stylesheet = 'html.xsl'; publish([filename,'.m'],options); % 查看网页效果 web(['html/', filename, '.html']) 直接运行此代码即可发布网页(非点击publish按钮)。 默认情况下,Matlab会以通用格式生成网页,第一部分为网页介绍,然后添加目录,继而依次显示后续部分,此默认格式由toolbox\matlab\codetools\private\mxdom2simplehtml.xsl文件控制,如字体大小、颜色等。 为了制作个性化的个人主页,可以修改此文件,重新调整字体大小、目录显示等,将此文件命名为html.xsl,保存在publishweb.m同目录下,修改publishweb.m文件为: % 生成网页 clc clear close all %% 网页文件名 filename = 'tempweb'; % 网页发布 options.showCode = false; options.stylesheet = 'html.xsl'; publish([filename,'.m'],options); % 查看网页效果 web(['html/', filename, '.html']) tempweb.m文件修改为: %% *春秋* % % <<chunqiu.jpg>> % % 地址: % 安徽省 % % 博客: % <http://blog.sina.com.cn/gjchunqiu 新浪博客>, <https://chunqiu.blog.ustc.edu.cn USTC博客> % %% 教育背景 % % * 高中 % * 大学 % %% 研究兴趣 % * *视觉测量,目标跟踪* % % * *信号处理* % %% 研究项目 tabledata{1,1} = '项目名称'; tabledata{1,2} = '项目简介'; tabledata{1,3} = '示例'; tabledata{2,1} = '视觉系统'; tabledata{2,2} = {'自然基金', ... '项目介绍,项目介绍,项目介绍,项目介绍,项目介绍,项目介绍。',... '<b>关键词:</b>目标跟踪'}; tabledata{2,3} = {'chunqiu.jpg', 200}; % 以指定的宽度显示图片 CreateTable(tabledata); 其中CreateTable函数为
% 使用fprintf输出创建表格 function CreateTable(tabledata) [rows, cols] = size(tabledata); fprintf('<html>\n'); fprintf('<table>\n'); % width="1300" for i = 1:rows fprintf('<tr>\n'); for j = 1:cols tempstr = ''; if ischar(tabledata{i,j}) % 如果是字符串 if (i == 1) % 如果是待显示字符串 % 第一行居中输出 tempstr = ['<div align="center">', tabledata{i,j}, '</div>']; elseif (j == 1 && i > 1) % 第一列文字加粗居中输出 tempstr = ['<div align="center"><b>' tabledata{i,j} ' </b></div>']; else % 其他文字加空格输出 tempstr = [' ' tabledata{i,j}]; end elseif iscellstr(tabledata{i,j}) % 如果是字符串元胞 tempstr = MergeCellStr(tabledata{i,j}); elseif iscell(tabledata{i,j}) % 如果是图片 if exist(['html/', tabledata{i,j}{1}],'file') == 2 % 如果图片存在 tempstr = sprintf('<div align="center"><img src="%s" width="%d"></div>', tabledata{i,j}{1}, tabledata{i,j}{2}); end end fprintf('<td>%s</td>\n', tempstr); end fprintf('</tr>\n'); end fprintf('</table>\n'); fprintf('</html>\n'); end %% 合并字符串元胞 function str = MergeCellStr(strcell) str = [' ', strcell{1}]; for i = 2:length(strcell) str = [str, '<br> ', strcell{i}]; % 为空格 end end 运行publishweb.m,得到如下效果 注意:由于修改后的xsl会自动添加[go top]置顶链接,所以可以将tempweb.m文件中不需要额外添加置顶链接。 另外,Matlab还提供了一个MATLAB Report Generator工具箱,它提供了GUI可以完成html、doc、ppt等格式的报告发布,功能强大。 html.xsl文件: <?xml version="1.0" encoding="utf-8"?> <!-- This is an XSL stylesheet which converts mscript XML files into HTML. Use the XSLT command to perform the conversion. Copyright 1984-2012 The MathWorks, Inc. --> <!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> <!ENTITY reg "®"> ]> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:mwsh="http://www.mathworks.com/namespace/mcode/v1/syntaxhighlight.dtd" exclude-result-prefixes="mwsh"> <xsl:output method="html" indent="no" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"/> <!-- encoding="GB2312" --> <xsl:strip-space elements="mwsh:code"/> <!--配置网页的标题--> <xsl:variable name="title"><!--title变量,即网页标题--> <xsl:variable name="dTitle" select="//steptitle[@style='document']"/><!--dTitle临时变量--> <xsl:choose> <xsl:when test="$dTitle"><xsl:value-of select="$dTitle"/></xsl:when><!--使用dTitle作为标题--> <xsl:otherwise><xsl:value-of select="mscript/m-file"/></xsl:otherwise><!--使用文件名作为标题--> </xsl:choose> </xsl:variable> <xsl:template match="mscript"> <html> <!-- 配置head --> <head> <!--这句话作为注释出现在生成html中--> <xsl:comment> This HTML was auto-generated from MATLAB code. To make changes, update the MATLAB code and republish this document. </xsl:comment> <!--配置html标题--> <title><xsl:value-of select="$title"/></title><!--使用title变量作为网页标题--> <meta name="generator"> <xsl:attribute name="content">MATLAB <xsl:value-of select="version"/> by GJ</xsl:attribute> </meta> <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" /> <meta name="DC.date"> <xsl:attribute name="content"><xsl:value-of select="date"/></xsl:attribute> </meta> <meta name="DC.source"> <xsl:attribute name="content"><xsl:value-of select="m-file"/>.m</xsl:attribute> </meta> <!-- 调用下面的stylesheet template --> <xsl:call-template name="stylesheet"/> </head> <!-- 配置body --> <body> <!-- 调用下面的header template,实际为空 --> <xsl:call-template name="header"/> <div class="content"> <!-- Determine if there should be an introduction section. 判断是否应该有introduction部分 --> <xsl:variable name="hasIntro" select="count(cell[@style = 'overview'])"/> <!-- If there is an introduction, display it. 如果有,显示它 --> <xsl:if test = "$hasIntro"> <h1><xsl:apply-templates select="cell[1]/steptitle"/></h1> <xsl:comment>introduction</xsl:comment> <xsl:apply-templates select="cell[1]/text"/> <!-- There can be text output if there was a parse error. --> <xsl:apply-templates select="cell[1]/mcodeoutput"/> <xsl:comment>/introduction</xsl:comment> </xsl:if> <xsl:variable name="body-cells" select="cell[not(@style = 'overview')]"/> <!-- Include contents if there are titles for any subsections. 如果每个部分都有标题,则显示目录 --> <xsl:if test="count(cell/steptitle[not(@style = 'document')])"> <xsl:call-template name="gjcontents"> <xsl:with-param name="body-cells" select="$body-cells"/> </xsl:call-template> </xsl:if> <!-- Loop over each cell 对每一个cell循环执行 --> <xsl:for-each select="$body-cells"> <!-- Title of cell --> <xsl:if test="steptitle"> <xsl:variable name="headinglevel"> <xsl:choose> <xsl:when test="steptitle[@style = 'document']">h1</xsl:when> <xsl:otherwise>h2</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:element name="{$headinglevel}"> <xsl:apply-templates select="steptitle"/> <xsl:if test="not(steptitle[@style = 'document'])"> <a> <xsl:attribute name="name"> <xsl:value-of select="position()"/> </xsl:attribute> </a> </xsl:if> </xsl:element> </xsl:if> <!-- Contents of each cell --> <xsl:apply-templates select="text"/> <xsl:apply-templates select="mcode-xmlized"/> <xsl:apply-templates select="mcodeoutput|img"/> <!-- 到顶部链接 --> [<a href="#Top" target="_self">go top</a>] <p></p> </xsl:for-each> <xsl:call-template name="footer"/> </div> <!-- 显示原始代码 --> <xsl:apply-templates select="originalCode"/> </body> </html> </xsl:template> <xsl:template name="stylesheet"> <style type="text/css"> html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent} body{line-height:1} ol,ul{list-style:none} blockquote,q{quotes:none} blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}:focus{outine:0} ins{text-decoration:none}del{text-decoration:line-through} table{border-collapse:collapse;border-spacing:0} html { min-height:100%; margin-bottom:1px; } html body { height:100%; margin:0px; font-family:Times New Roman, Arial, Helvetica, sans-serif; font-size:18px; color:#000; line-height:140%; background:#fff none; overflow-y:scroll; } html body td { vertical-align:middle; text-align:left; } h1 { padding:0px; margin:0px 0px 25px; font-family:楷体, Times New Roman, Arial, Helvetica, sans-serif; font-size:2.5em; color:#d55000; line-height:100%; font-weight:normal; } h2 { padding:0px; margin:10px 0px 8px; font-family:Times New Roman, Arial, Helvetica, sans-serif; font-size:1.2em; color:#000; font-weight:bold; line-height:140%; border-bottom:1px solid #d6d4d4; display:block; } h3 { padding:0px; margin:0px 0px 5px; font-family:Times New Roman, Arial, Helvetica, sans-serif; font-size:1.1em; color:#000; font-weight:bold; line-height:140%; } a { color:blue; text-decoration:underline; } a:hover { color:red; text-decoration:underline; }<!-- 鼠标移上去的颜色 --> a:visited { color:purple; text-decoration:underline; }<!-- 访问过的颜色 --> p { padding:0px; margin:0px 0px 5px; } img { padding:0px; margin:0px 0px 0px; border:none; } p img, pre img, tt img, li img, h1 img, h2 img { margin-bottom:0px; } ul { padding:0px; margin:0px 0px 20px 23px; list-style:square; } ul li { padding:0px; margin:0px 0px 7px 0px; } ul li ul { padding:5px 0px 0px; margin:0px 0px 7px 23px; } ul li ol li { list-style:decimal; } ol { padding:0px; margin:0px 0px 20px 0px; list-style:decimal; } ol li { padding:0px; margin:0px 0px 7px 23px; list-style-type:decimal; } ol li ol { padding:5px 0px 0px; margin:0px 0px 7px 0px; } ol li ol li { list-style-type:lower-alpha; } ol li ul { padding-top:7px; } ol li ul li { list-style:square; } .content { font-size:1.2em; line-height:140%; padding: 20px; } pre, code { font-size:20px; } tt { font-size: 1.2em; } pre { margin:-10px 0px 10px; } pre.codeinput { padding:10px; border:1px solid #d3d3d3; background:#f7f7f7; } pre.codeoutput { padding:10px 11px; margin:0px 0px 20px; color:#4c4c4c; } pre.error { color:red; } @media print { pre.codeinput, pre.codeoutput { word-wrap:break-word; width:100%; } } span.keyword { color:#0000FF } span.comment { color:#228B22 } span.string { color:#A020F0 } span.untermstring { color:#B20000 } span.syscmd { color:#B28C00 } .footer { width:auto; padding:10px 0px; margin:25px 0px 0px; border-top:1px dotted #878787; font-size:0.8em; line-height:140%; font-style:italic; color:#878787; text-align:left; float:none; } .footer p { margin:0px; } .footer a { color:#878787; } .footer a:hover { color:#878787; text-decoration:underline; } .footer a:visited { color:#878787; } table th { padding:7px 5px; text-align:left; vertical-align:middle; border: 1px solid #d6d4d4; font-weight:bold; } table td { padding:7px 5px; text-align:left; vertical-align:top; border:2px solid #C0DCC0; } </style> </xsl:template> <!-- Header 页眉 --> <xsl:template name="header"> </xsl:template> <!-- Footer 页脚 --> <xsl:template name="footer"> <p class="footer"> <xsl:value-of select="copyright"/> <!--<a href="https://chunqiu.blog.ustc.edu.cn">Published with MATLAB® R<xsl:value-of select="release"/> by GJ, <xsl:value-of select="date"/></a>--> Published with MATLAB® R<xsl:value-of select="release"/> on <xsl:value-of select="date"/> </p> </xsl:template> <!-- Matlab配置的目录 --> <xsl:template name="contents"> <xsl:param name="body-cells"/> <h2>目录</h2> <div> <ul> <xsl:for-each select="$body-cells"> <xsl:if test="./steptitle"> <li> <a> <xsl:attribute name="href">#<xsl:value-of select="position()"/></xsl:attribute><xsl:apply-templates select="steptitle"/> </a> </li> </xsl:if> </xsl:for-each> </ul> </div> </xsl:template> <!-- GJ配置的目录 --> <xsl:template name="gjcontents"> <xsl:param name="body-cells"/> <h2>目录</h2> <!-- <a><xsl:attribute name="href">Top</xsl:attribute></a> --> <xsl:for-each select="$body-cells"> <xsl:if test="./steptitle"> [<a><xsl:attribute name="href">#<xsl:value-of select="position()"/></xsl:attribute><xsl:apply-templates select="steptitle"/></a>] </xsl:if> </xsl:for-each> </xsl:template> <!-- HTML Tags in text sections --> <xsl:template match="p"> <p><xsl:apply-templates/></p> </xsl:template> <xsl:template match="ul"> <div><ul><xsl:apply-templates/></ul></div> </xsl:template> <xsl:template match="ol"> <div><ol><xsl:apply-templates/></ol></div> </xsl:template> <xsl:template match="li"> <li><xsl:apply-templates/></li> </xsl:template> <xsl:template match="pre"> <xsl:choose> <xsl:when test="@class='error'"> <pre class="error"><xsl:apply-templates/></pre> </xsl:when> <xsl:otherwise> <pre><xsl:apply-templates/></pre> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="b"> <b><xsl:apply-templates/></b> </xsl:template> <xsl:template match="i"> <i><xsl:apply-templates/></i> </xsl:template> <xsl:template match="tt"> <!-- 重定义为下划线 --> <u><xsl:apply-templates/></u> </xsl:template> <xsl:template match="a"> <a> <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute> <xsl:attribute name="target">_blank</xsl:attribute> <xsl:apply-templates/> </a> </xsl:template> <xsl:template match="html"> <xsl:value-of select="@text" disable-output-escaping="yes"/> </xsl:template> <xsl:template match="latex"/> <!-- Detecting M-Code in Comments--> <xsl:template match="text/mcode-xmlized"> <pre class="language-matlab"><xsl:apply-templates/><xsl:text><!-- g162495 --> </xsl:text></pre> </xsl:template> <!-- Code input and output --> <xsl:template match="mcode-xmlized"> <pre class="codeinput"><xsl:apply-templates/><xsl:text><!-- g162495 --> </xsl:text></pre> </xsl:template> <xsl:template match="mcodeoutput"> <xsl:choose> <xsl:when test="concat(substring(.,0,7),substring(.,string-length(.)-7,7))='<html></html>'"> <xsl:value-of select="substring(.,7,string-length(.)-14)" disable-output-escaping="yes"/> </xsl:when> <xsl:otherwise> <pre> <xsl:attribute name="class"> <xsl:value-of select="@class"/> </xsl:attribute> <xsl:apply-templates/> </pre> </xsl:otherwise> </xsl:choose> </xsl:template> <!-- Figure and model snapshots and equations --> <xsl:template match="img[@class='equation']"> <img> <xsl:attribute name="src"><xsl:value-of select="@src"/></xsl:attribute> <xsl:attribute name="alt"><xsl:value-of select="@alt"/></xsl:attribute> </img> </xsl:template> <xsl:template match="img"> <img vspace="5" hspace="5"> <xsl:attribute name="src"><xsl:value-of select="@src"/></xsl:attribute> <xsl:attribute name="alt"><xsl:value-of select="@alt"/></xsl:attribute> <xsl:text> </xsl:text> </img> </xsl:template> <!-- Stash original code in HTML for easy slurping later. 原始代码 --> <xsl:template match="originalCode"> <xsl:variable name="xcomment"> <xsl:call-template name="globalReplace"> <xsl:with-param name="outputString" select="."/> <xsl:with-param name="target" select="'--'"/> <xsl:with-param name="replacement" select="'REPLACE_WITH_DASH_DASH'"/> </xsl:call-template> </xsl:variable> <xsl:comment> ##### SOURCE BEGIN ##### <xsl:value-of select="$xcomment"/> ##### SOURCE END ##### </xsl:comment> </xsl:template> <!-- Colors for syntax-highlighted input code --> <xsl:template match="mwsh:code"> <xsl:apply-templates/> </xsl:template> <xsl:template match="mwsh:keywords"> <span class="keyword"><xsl:value-of select="."/></span> </xsl:template> <xsl:template match="mwsh:strings"> <span class="string"><xsl:value-of select="."/></span> </xsl:template> <xsl:template match="mwsh:comments"> <span class="comment"><xsl:value-of select="."/></span> </xsl:template> <xsl:template match="mwsh:unterminated_strings"> <span class="untermstring"><xsl:value-of select="."/></span> </xsl:template> <xsl:template match="mwsh:system_commands"> <span class="syscmd"><xsl:value-of select="."/></span> </xsl:template> <!-- Footer information --> <xsl:template match="copyright"> <xsl:value-of select="."/> </xsl:template> <xsl:template match="revision"> <xsl:value-of select="."/> </xsl:template> <!-- Search and replace --> <!-- From http://www.xml.com/lpt/a/2002/06/05/transforming.html --> <xsl:template name="globalReplace"> <xsl:param name="outputString"/> <xsl:param name="target"/> <xsl:param name="replacement"/> <xsl:choose> <xsl:when test="contains($outputString,$target)"> <xsl:value-of select= "concat(substring-before($outputString,$target),$replacement)"/> <xsl:call-template name="globalReplace"> <xsl:with-param name="outputString" select="substring-after($outputString,$target)"/> <xsl:with-param name="target" select="$target"/> <xsl:with-param name="replacement" select="$replacement"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$outputString"/> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>
----------------------------------- from: http://chunqiu.blog.ustc.edu.cn/?p=804
总结
以上是生活随笔为你收集整理的Matlab制作个人主页的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 光流法 Optical Flow
- 下一篇: 利用Matlab优化工具箱求解旅行商最短