![Непрерывная граница с математической разметкой внутри разметки кода/алгоритма](https://rvso.com/image/420743/%D0%9D%D0%B5%D0%BF%D1%80%D0%B5%D1%80%D1%8B%D0%B2%D0%BD%D0%B0%D1%8F%20%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0%20%D1%81%20%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9%20%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%82%D0%BA%D0%BE%D0%B9%20%D0%B2%D0%BD%D1%83%D1%82%D1%80%D0%B8%20%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%82%D0%BA%D0%B8%20%D0%BA%D0%BE%D0%B4%D0%B0%2F%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%B0.png)
В настоящее время я столкнулся с эстетической проблемой. Границы моего раздела кода/алгоритма разделены внутрикодовой математической разметкой:
Таблица была создана с помощью следующего кода:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath, amsfonts}
\usepackage{listings}
\title{Title}
\author{Author}
\date{Date}
\begin{document}
\maketitle
\lstset{
numbers=left,
numberstyle=\small,
numbersep=8pt,
frame = single,
language=Python,
framexleftmargin=15pt
}
\begin{lstlisting}[escapeinside={(*}{*)}]
if (*$\exists s \in S \subset \mathbb{R}^2 \times \{\text{label } | \text{ label } \in \{0,1\} \}$*) with label 1:
(*$r = \underset{\text{label(s) = 1} }{\max ||s||}$*)
else:
(*$r = \underset{\text{label(s) = 0} }{\min ||s||} - 10^{-1000} $*)
return B[0, r]
\end{lstlisting}
\end{document}
Кто-нибудь знает, как сделать так, чтобы вертикальные границы были непрерывными, несмотря на математическую разметку? Или хотя бы убрать вертикальные границы?
Кстати, я работаю в Overleaf.
Спасибо!
решение1
Вы можете использовать его tcblisting
для создания рамы.
Или, чтобы удалить вертикальные границы, просто укажите frame=none
.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{tcolorbox}
\usepackage{amsmath, amssymb}
\tcbuselibrary{listings, breakable, skins}
\title{Title}
\author{Author}
\date{Date}
\newtcblisting{mylisting}{
enhanced,
breakable,
listing only,
sharp corners,
arc=0mm,
colback=white,
boxsep=1mm,
top=0mm,
bottom=0mm,
left=6mm,
right=1mm,
listing options={
numbers=left,
numberstyle=\small,
numbersep=8pt,
language=Python,
escapeinside={(*}{*)}
}
}
\begin{document}
\maketitle
\begin{mylisting}
if (*$\exists s \in S \subset \mathbb{R}^2 \times \{\text{label } | \text{ label } \in \{0,1\} \}$*) with label 1:
(*$r = \underset{\text{label(s) = 1} }{\max ||s||}$*)
else:
(*$r = \underset{\text{label(s) = 0} }{\min ||s||} - 10^{-1000} $*)
return B[0, r]
\end{mylisting}
\end{document}
решение2
Это была ошибка, listings.sty
описанная в документации под заголовком8.2
и измененный вариант MWE
:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{moreverb}
\usepackage{amsmath,amsfonts,listings}
\usepackage{mdframed}
\begin{document}
\lstset{
numbers=left,
numberstyle=\small,
numbersep=2pt,
%frame = single,
language=Python,
framexleftmargin=15pt
}
\begin{verbatimwrite}{temp.c}
if (*$\exists s \in S \subset \mathbb{R}^2 \times \{\text{label } | \text{ label } \in \{0,1\} \}$*) with label 1:
(*$r = \underset{\text{label(s) = 1} }{\max ||s||}$*)
else:
(*$r = \underset{\text{label(s) = 0} }{\min ||s||} - 10^{-1000} $*)
return B[0, r]
\end{verbatimwrite}
\begin{mdframed}
\lstinputlisting[escapeinside={(*}{*)}]{./temp.c}
\end{mdframed}
\end{document}
Выход