Thomas F. Sturm 教授在他的文档为了sanitize-umlaut 包我想在我的 LaTeX 文档中复制它。
我尝试通过下载以下文件重新创建原始的 sanitize-umlaut.tex 文件:Github无济于事。我遗漏了一些东西,但又不够熟悉,不知道该怎么做。
我对 Sturm 在他的文档中的多个地方创建的文本突出显示功能特别感兴趣:
如果有人足够熟悉这种类型的文字效果并且能够向我指出一段代码示例来创建这样的文本效果的话我将非常感激。
答案1
如果你查看源代码,你会看到这些块是使用名为的命令创建的\myverb
。它定义在sanitize-umlaut.dox.sty
作为
\DeclareTotalTCBox{\myverb}{ O{} v }{tile,fontupper=\ttfamily,nobeforeafter, tcbox raise base,boxsep=0.5mm,top=0pt,bottom=0pt,left=0pt,right=0pt,boxrule=0.3mm, colback=yellow!10, borderline horizontal={0.3mm}{0pt}{red!50}, #1}{#2}
这需要tcolorbox
包。如果你想更好地理解定义,你可以看看tcolorbox
手册\DeclareTotalTCBox
。
更新:
我问,在回应下面 egreg 的回答时(谢谢 egreg!),是否有一种“直接的方法来输出最终的(扩展的)LaTeX文本而不是生的乳胶代码例如,\sverb 不会打印出‘\textbf{Source} $\rightsquigarrow$ \textbf{Migration}’,而是打印出‘Source ⇝ Migration’?”
我尝试调整 egreg 的答案以输出最终的乳胶文本而不是生的乳胶代码. 而不是使用 \s动词打印出:
'\textbf{来源} $\rightsquigarrow$ \textbf{迁移}'
我做了一些调整(但没有起作用),让 \s文本打印出:
“来源 ⇝ 迁移”
我的调整包括改变'\s动词' 改为 '\s文本', '\s动词vrule' 改为 '\s文本vrule',并删除'\ttfamily“”。
\NewDocumentCommand{\stext}{O{current}v}{\mbox{%
\colorlet{current}{.}%
\color{red!50}%
\vbox{
\setlength{\fboxrule}{0pt}%
\setlength{\fboxsep}{0.6pt}%
\hrule height 0.6pt
\hbox{\colorbox{yellow!10}{\color{#1}#2}}%
\edef\tpd{\the\prevdepth}
\hrule height 0.6pt
\kern-\dimexpr0.6pt+\tpd\relax
\expandafter}\expandafter\stextvrule\expandafter{\tpd}%
}}
\newcommand{\stextvrule}[1]{\vrule width 0pt depth \dimexpr0.6pt+#1\relax\relax}
因此现在使用 \s 代替以下输出动词:
\s文本仍然打印生的乳胶代码:
当我所寻找的只是:
抱歉,我最初发帖时没有说得更具体,因为我并不欣赏这一点\我的动词用于逐字代码输出仅有的。
关于如何使用 \s 有什么想法文本打印:
将不胜感激。
答案2
当然,Thomas Sturm 会使用tcolorbox
。但是使用一些更简单(尽管级别较低)的技巧也可以实现相同的效果。
\documentclass{article}
\usepackage{xcolor}
\NewDocumentCommand{\sverb}{O{current}v}{\mbox{%
\colorlet{current}{.}%
\color{red!50}%
\vbox{
\setlength{\fboxrule}{0pt}%
\setlength{\fboxsep}{0.6pt}%
\hrule height 0.6pt
\hbox{\colorbox{yellow!10}{\color{#1}\ttfamily#2}}%
\edef\tpd{\the\prevdepth}
\hrule height 0.6pt
\kern-\dimexpr0.6pt+\tpd\relax
\expandafter}\expandafter\sverbvrule\expandafter{\tpd}%
}}
\newcommand{\sverbvrule}[1]{\vrule width 0pt depth \dimexpr0.6pt+#1\relax\relax}
\begin{document}
Some text \sverb|\usepackage[ngerman]{babel}| some text
Some text \sverb[blue!40]|abc| some text
\end{document}
可选参数用于设置逐字材料的颜色,如第二个示例所示。
这个想法是构建一个\vbox
,但我们需要精确设置其深度,以便逐字材料的基线与周围材料相同。其他一些技巧允许通过添加与 一样深的零宽度规则来掩盖我们的踪迹,而\vbox
无需备份。