使用SAS中的ODS HTML,我想创建标题的锚点,以便我可以从表格中引用这些锚点。
目前我已经能够在表格中创建引用:
proc sql;
select '<a href="#'||m.anchor_text||'">'||m.anchor_text||'</a>'
from matrix m;
quit;
在HTML浏览器输出中将显示为HTML文件的内部链接:
anchor1 <-- this is a href link to anchor1
anchor2 <-- this is a href link to anchor2
当我现在尝试创建实际数据表的锚点时:
title "<a name='anchor1'></a>Data on matrix1";
proc sql;
select * from matrix1;
quit;
标题不会将文本包装成锚点,而是显示完整的HTML代码:
<a name='anchor1'></a>Data on matrix1
(matrix1 data here)
如果我查看HTML代码,我可以看到标题字符被翻译为可在HTML中显示:
<a name='anchor1'></a>Data on matrix1
但是如何在proc sql查询的标题中创建这样的HTML锚点,即将HTML标记嵌入到标题中?
答案 0 :(得分:3)
您可以在此处选择一些选项,具体取决于您最常用的选项。
首先,您可以进入模板,并为每个标题元素的模板添加prehtml
和/或posthtml
条目。这意味着每次使用Title1时,您都会获得相同的锚标记(直到您重新proc template
为止)。如果您希望title#
始终拥有相同的锚,尽管有时会有可变文本,这将非常有用。
其次,您可以使用raw
样式选项。 ^{raw <a href="#anchor1"></a>}
,假设您ods escapechar
为^
。我相信你也可以使用^R/HTML{..}
。请参阅文档和Cynthia Zender的经典论文Funny Stuff in My Code。如果每个标题都需要不同的锚点,那么这是更好的选择(因为您每次都可以指定它,但每次都需要指定它)。
第三,你可以使用第一个选项和一个宏变量,我相信(类似于你之前的contentitem的方式)定义了锚的值。这在理论上是更多的&#39;但可能是三者中最好的。
答案 1 :(得分:3)
在所有ODS HTML绑定输出中,您可以将HTML包装在<div>...</div>
中,以确保SAS将其呈现为正确的HTML。
要创建锚点,请使用<a name='anchorname'></a>
,所以:
title "<div><a name='anchor1'></a></div>" ;
并在页面的其他地方引用它:
Title "<div><a href='#anchor1'>Go to Anchor 1</a></div>" ;
答案 2 :(得分:2)
编辑:以下内容并未完全解决原始问题(我误解了),但对某些人可能仍然有用。正如Joe在评论中指出的那样,看起来SAS在如何处理title
语句中的HTML锚标签方面有不同的方法。乔的回答是正确的。
我认为你的title语句中的锚标记语法不正确。这对我来说很好:
ods html;
title "<a href='dkjfkjdf.html'>Hello</html>";
proc print data=sashelp.class;
run;
ods html close;
我相信您需要的是将您的文字移动到锚标记内(并使用引号),如下所示:
title '<a href="#anchor1">Data on matrix1</a>';