欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Matlab制作个人主页

发布时间:2025/3/21 编程问答 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Matlab制作个人主页 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
Matlab代码编辑器具有代码发布功能,如下图,当编辑好代码后,点击Publish按钮可以发布html网页格式的代码使用说明。
    从上面的图中可以看到,发布功能可以控制字体(黑体、斜体、等宽字体),添加链接、latex公式、列表、代码等,功能方便实用,具体可以参考帮助中的介绍,如下表所示。 RESULT IN OUTPUTEXAMPLE OF CORRESPONDING FILE MARKUP
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这个功能,可以用来制作个人主页,如下面的代码 文件名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

总结

以上是生活随笔为你收集整理的Matlab制作个人主页的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。