![以非逐字格式在文本上方和下方添加行(不是方框)(类似于逐字)](https://linux22.com/image/452444/%E4%BB%A5%E9%9D%9E%E9%80%90%E5%AD%97%E6%A0%BC%E5%BC%8F%E5%9C%A8%E6%96%87%E6%9C%AC%E4%B8%8A%E6%96%B9%E5%92%8C%E4%B8%8B%E6%96%B9%E6%B7%BB%E5%8A%A0%E8%A1%8C%EF%BC%88%E4%B8%8D%E6%98%AF%E6%96%B9%E6%A1%86%EF%BC%89%EF%BC%88%E7%B1%BB%E4%BC%BC%E4%BA%8E%E9%80%90%E5%AD%97%EF%BC%89.png)
这是上一个问题的后续问题问题在 SE 上,有人建议我创建一个新问题。
问题:如何在上方和下方添加线条(不是方框)非逐字 文本同时保留对所有传统 LaTeX 的访问权限文本属性包括但不限于字体系列、字体形状(包括斜体、粗体等)、文本颜色等。
这将包括控制上下线(一起或单独)属性的能力,包括但不限于线厚度,分离(上方和/或下方,一起或单独)文本中的行,颜色)线路(一起或分开,单一或渐进),以及填充颜色(单一或渐进)在字里行间。
我审阅过的众多 SE 问题和答案确实不是符合我要寻找的标准。
我已经能够通过以下方式满足上述一些要求:逐字和幻想VRB在以下 MWE 中:
\documentclass[varwidth]{article}
\usepackage{fancyvrb}
\usepackage{varwidth}
\usepackage{verbatim}
\usepackage{xcolor}
\begin{document}
{\centering
\begin{varwidth}{0.33\linewidth}
\begin{Verbatim}[commandchars=\\\{\}, fontfamily=courier, fontshape=it, numbers=none, frame=lines, framerule=0.7mm, framesep=3mm, rulecolor=\color{red}, fillcolor=\color{yellow}]
\textbf{Source} \textrightarrow \textbf{Migration}
\end{Verbatim}
\end{varwidth}
\par}
\end{document}
结果是:
然而,如果我尝试替代$\rightsquigarrow$为了\textrightarrow,我收到以下 LaTeX 错误:
Undefined control sequence.
<argument> Source $\rightsquigarrow
$ Migration
l.12 Source $\rightsquigarrow$ Migration
因此由于某种原因,我尝试插入等效于内联方程的内容导致错误。
另外,我尝试填补空白在使用上述方法时,两行之间的填充(例如 fillcolor=\color{yellow})会失败逐字和幻想VRB代码。
正如上文所述问题在 SE 上,我试图重现 Thomas F. Sturm 博士的sanitize-umlaut 包为了逐字 文本:
但对于简单、普通的非逐字 文本(例如 \textbf{},$<equation>$
等等)。
我正在寻找一种方式来呈现文本采用 Sturm 文档中的格式(如上所示)没有我在使用过程中遇到的限制逐字基于代码。
(特别感谢 egreg 和 Marcel Krüger 的帮助!)
谢谢阅读。
答案1
尝试这个
\documentclass[varwidth]{article}
\usepackage{fancyvrb}
\usepackage{amssymb}
\usepackage{varwidth}
\usepackage{verbatim}
\usepackage{xcolor}
\begin{document}
{\centering
\begin{varwidth}{0.33\linewidth}
\begin{Verbatim}[commandchars=\\\{\}, codes={\catcode`\$=3},fontfamily=courier, fontshape=it, numbers=none, frame=lines, framerule=0.7mm, framesep=3mm, rulecolor=\color{red}, fillcolor=\color{yellow}]
\textbf{Source} $\rightsquigarrow$ \textbf{Migration}
\end{Verbatim}
\end{varwidth}
\par}
\end{document}
我做了两个更改,首先是我加载了\usepackage{amssymb}
提供\rightsquigarrow
符号的程序。其次是我通过调用启用了数学模式codes={\catcode`$=3}
,如 fancyvrb 文档(Catcode 字符部分 4.1.17)中所述:
实际上,再次阅读你的问题:如果你不想使用逐字,为什么要使用fancyvrb
使用? 如果你只想画一个带有线条和颜色的框,可以使用类似mdframed
而是。例如(我尽力重现了您列出的框架设置。)
\documentclass[varwidth]{article}
\usepackage{xcolor}
\usepackage{mdframed}
\usepackage{amssymb}
\usepackage{varwidth}
\begin{document}
{\centering
\begin{varwidth}{0.33\linewidth}
\begin{mdframed}[skipabove=3mm,skipbelow=3mm,linecolor=red,backgroundcolor=yellow,linewidth=0.7mm,leftline=false,rightline=false]
\textbf{A} $\rightsquigarrow$ \textsc{b}
\end{mdframed}
\end{varwidth}
\par}
\end{document}
产生
看了你之前的问题和链接的参考文件,你似乎想用它来创建一个内联突出显示效果?在这种情况下,你应该使用tcolorbox
。
\documentclass{article}
\usepackage{amssymb}
\usepackage[skins]{tcolorbox}
\newtcbox{\myhl}{nobeforeafter,tcbox raise base,toprule=2pt, bottomrule=2pt, leftrule=0pt, rightrule=0pt, top=1mm,bottom=1mm,
right=1pt,left=1pt,arc=0pt,boxsep=0pt,
colframe=red,colback=yellow!10!white}
\MakeRobust\myhl
\begin{document}
Some text before \myhl{\textbf{A} $\rightsquigarrow$ \textsc{b}} some text after
\end{document}
这使
来自 OP 的更新:我从一开始就寻找的最新图像:
太棒了!谢谢 Willie Wong!!