我正在写这份关于 Ising 模型的计算模拟的报告。我展示的是晶格配置样本,它们只是“+”和“-”的数组。这样做是为了可视化不同的“磁畴”,这意味着我真的希望“+”和“-”彼此突出。所以我想知道是否有一种自动的方法让 LaTeX 着色,或者更好地突出显示逐字中的某个字符。我实际上目前正在使用从外部文本文件导入它逐字输入从包中幻想VRB所以我的代码是:
\documentclass[a4paper,11pt]{article}
\usepackage{fancyvrb}
\usepackage{graphicx}
\usepackage{caption,subcaption}
\usepackage{relsize}
% redefine \VerbatimInput
\RecustomVerbatimCommand{\VerbatimInput}{VerbatimInput}%
{fontsize=\relsize{-3}
}
\begin{document}
\begin{figure}[!ht]
\centering
\begin{subfigure}{0.5\textwidth}
\centering
\VerbatimInput{\detokenize{j0.2000_B0.0000_sweeps500_avaft100}}
\caption{$\frac{J}{kT}=0.2$}
\end{subfigure}
\end{figure}
\end{document}
我正在使用 XeLaTeX 进行编译。网格文件是:
- - + - + - - - + - + - - - - - + + + + + - + + + - + + + -
+ - - + + - - - + + - + - + + + - - + + + + + + - + + - - +
- + - - - + - - + - + + + + + - + - + - - + - + - + + - + -
+ - + - - - + + + + - + - + + - + + + - + + - - + + - + + +
+ - + + + + + + + + - - + + - + + + + - + + + + + + + + + -
- - - + + + + - - + - - + - - - + + - - - - + - - - + + + -
- - - + - - - - - - + - + - - + + - - + + - + + + + + - - +
+ + - - - - - - + + + - - - + - - + - - - + + + - + - - + -
+ - - + + + - + + + - - + - - + - + - + + + - - - - - - - +
- + - - + - + + - + + - + - - - - - - + - - + - - + + + + +
- - - - - - - + + - - - + + - - + + - - - + - + - + - - - +
+ + + + + + - - + + + - + - - + - + - + + + + - - + + - + +
- + - + - + - + + + - + + - - - + + + + + - + - + - + - + -
- - + + + - - + + + + + - - - + + + - - - - - + - + + + - -
+ + + + - + + - - - + - - + + - - - + + - + + - + - + - - -
- + - + + + + + + - + - + + + + - - - + + + - + - + + - - +
+ + + + + - + + - - + + - - - + + + - + + - - + + + - - - -
+ + + + + - - + + + - - - - - + + + - + + + + + + - + - - +
- + - + + + + + - - - + + - + - + - - - + - - + + - - - - -
- - + - - + - + + + + + - - - - - - + + - + + + + - - + + +
+ - + + - - + + + - - + + - + + - - - + + - - + + + - + + +
+ - - + + - - - + - + - + + + + + - - - + + - - - - + + - -
- + + + - + + + + + - - + - + + + - + + - - + + + + + + + +
- + + + + + - + - + - - - - - + + + + + - - - - + - + + - +
- + + - - + + + - + - - + + - + + + - + - - + - + - + + + +
- - - - - - + - + + + + + + - - + + - + + + + + - - - + + -
- - + - - - + - - + - - - + - + - - + - - + + + - - + + + -
- - + - - - - - - + - - + + - + - + + - - + + - - + - - + +
- - - - + - - - - + - - - + - - - + - - - + + + - + + - - +
+ + - - - - - + + + - + - + - + - + - + - + + + + - + - - +
答案1
您可以使用defineactive
赋予角色不同的属性(参见文档的第 20 和 21 页fancyvrb
);使用颜色的示例:
\documentclass[a4paper,11pt]{article}
\usepackage{fancyvrb}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{caption,subcaption}
\usepackage{relsize}
\usepackage{filecontents}
\begin{filecontents*}{j0.2000_B0.0000_sweeps500_avaft100}
- - + - + - - - + - + - - - - - + + + + + - + + + - + + + -
+ - - + + - - - + + - + - + + + - - + + + + + + - + + - - +
- + - - - + - - + - + + + + + - + - + - - + - + - + + - + -
+ - + - - - + + + + - + - + + - + + + - + + - - + + - + + +
+ - + + + + + + + + - - + + - + + + + - + + + + + + + + + -
- - - + + + + - - + - - + - - - + + - - - - + - - - + + + -
- - - + - - - - - - + - + - - + + - - + + - + + + + + - - +
+ + - - - - - - + + + - - - + - - + - - - + + + - + - - + -
+ - - + + + - + + + - - + - - + - + - + + + - - - - - - - +
- + - - + - + + - + + - + - - - - - - + - - + - - + + + + +
- - - - - - - + + - - - + + - - + + - - - + - + - + - - - +
+ + + + + + - - + + + - + - - + - + - + + + + - - + + - + +
- + - + - + - + + + - + + - - - + + + + + - + - + - + - + -
- - + + + - - + + + + + - - - + + + - - - - - + - + + + - -
+ + + + - + + - - - + - - + + - - - + + - + + - + - + - - -
- + - + + + + + + - + - + + + + - - - + + + - + - + + - - +
+ + + + + - + + - - + + - - - + + + - + + - - + + + - - - -
+ + + + + - - + + + - - - - - + + + - + + + + + + - + - - +
- + - + + + + + - - - + + - + - + - - - + - - + + - - - - -
- - + - - + - + + + + + - - - - - - + + - + + + + - - + + +
+ - + + - - + + + - - + + - + + - - - + + - - + + + - + + +
+ - - + + - - - + - + - + + + + + - - - + + - - - - + + - -
- + + + - + + + + + - - + - + + + - + + - - + + + + + + + +
- + + + + + - + - + - - - - - + + + + + - - - - + - + + - +
- + + - - + + + - + - - + + - + + + - + - - + - + - + + + +
- - - - - - + - + + + + + + - - + + - + + + + + - - - + + -
- - + - - - + - - + - - - + - + - - + - - + + + - - + + + -
- - + - - - - - - + - - + + - + - + + - - + + - - + - - + +
- - - - + - - - - + - - - + - - - + - - - + + + - + + - - +
+ + - - - - - + + + - + - + - + - + - + - + + + + - + - - +
\end{filecontents*}
% redefine \VerbatimInput
\RecustomVerbatimCommand{\VerbatimInput}{VerbatimInput}%
{fontsize=\relsize{-3}
}
\def\SumSign{\char43}
\def\MinusSign{\char45}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}{0.5\textwidth}
\centering
\catcode`+=\active
\catcode`-=\active
\VerbatimInput[
defineactive=%
\def+{\color{blue}\SumSign}
\def-{\color{red}\MinusSign}]{\detokenize{j0.2000_B0.0000_sweeps500_avaft100}}
\caption{$\frac{J}{kT}=0.2$}
\end{subfigure}
\end{figure}
\end{document}
另一个选择是:
\documentclass[a4paper,11pt]{article}
\usepackage{fancyvrb}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{caption,subcaption}
\usepackage{relsize}
\usepackage{filecontents}
\begin{filecontents*}{j0.2000_B0.0000_sweeps500_avaft100}
--+-+---+-+-----+++++-+++-+++-
+--++---++-+-+++--++++++-++--+
-+---+--+-+++++-+-+--+-+-++-+-
+-+---++++-+-++-+++-++--++-+++
+-++++++++--++-++++-+++++++++-
---++++--+--+---++----+---+++-
---+------+-+--++--++-+++++--+
++------+++---+--+---+++-+--+-
+--+++-+++--+--+-+-+++-------+
-+--+-++-++-+------+--+--+++++
-------++---++--++---+-+-+---+
++++++--+++-+--+-+-++++--++-++
-+-+-+-+++-++---+++++-+-+-+-+-
--+++--+++++---+++-----+-+++--
++++-++---+--++---++-++-+-+---
-+-++++++-+-++++---+++-+-++--+
+++++-++--++---+++-++--+++----
+++++--+++-----+++-++++++-+--+
-+-+++++---++-+-+---+--++-----
--+--+-+++++------++-++++--+++
+-++--+++--++-++---++--+++-+++
+--++---+-+-+++++---++----++--
-+++-+++++--+-+++-++--++++++++
-+++++-+-+-----+++++----+-++-+
-++--+++-+--++-+++-+--+-+-++++
------+-++++++--++-+++++---++-
--+---+--+---+-+--+--+++--+++-
--+------+--++-+-++--++--+--++
----+----+---+---+---+++-++--+
++-----+++-+-+-+-+-+-++++-+--+
\end{filecontents*}
% redefine \VerbatimInput
\RecustomVerbatimCommand{\VerbatimInput}{VerbatimInput}%
{fontsize=\relsize{-3}
}
\def\SumSign{\char43}
\def\MinusSign{\char45}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}{0.75\textwidth}
\centering
\catcode`+=\active
\catcode`-=\active
\setlength\fboxsep{2pt}
\offinterlineskip
\VerbatimInput[
defineactive=%
\def+{\colorbox{red!70!black}{\textcolor{white}{\SumSign}}}
\def-{\colorbox{cyan}{\textcolor{black}{\MinusSign}}}]{\detokenize{j0.2000_B0.0000_sweeps500_avaft100}}
\caption{$\frac{J}{kT}=0.2$}
\end{subfigure}
\end{figure}
\end{document}
并在埃格尔,这是一个使用环境的版本:
\documentclass[a4paper,11pt]{article}
\usepackage{fancyvrb}
\usepackage{xcolor}
\usepackage{subcaption}
\usepackage{relsize}
% redefine \VerbatimInput
\RecustomVerbatimCommand{\VerbatimInput}{VerbatimInput}%
{fontsize=\relsize{-3}
}
\def\SumSign{\char43}
\def\MinusSign{\char45}
\makeatletter
\newenvironment{MyVerb}
{
\def\verbatim@nolig@list{\do\`\do\<\do\>\do\,\do\'}
\catcode`+=\active
\catcode`-=\active
\setlength\fboxsep{2pt}
\offinterlineskip
\VerbatimEnvironment
\begin{Verbatim}
}
{\end{Verbatim}}
\makeatother
\begin{document}
\begin{figure}[!ht]
\centering
\begin{subfigure}{0.75\textwidth}
\begin{MyVerb}[defineactive=%
\def+{\colorbox{red!70!black}{\textcolor{white}{\SumSign}}}
\def-{\colorbox{cyan}{\textcolor{black}{\MinusSign}}}]
--+-+---+-+-----+++++-+++-+++-
+--++---++-+-+++--++++++-++--+
-+---+--+-+++++-+-+--+-+-++-+-
+-+---++++-+-++-+++-++--++-+++
+-++++++++--++-++++-+++++++++-
---++++--+--+---++----+---+++-
---+------+-+--++--++-+++++--+
++------+++---+--+---+++-+--+-
+--+++-+++--+--+-+-+++-------+
-+--+-++-++-+------+--+--+++++
-------++---++--++---+-+-+---+
++++++--+++-+--+-+-++++--++-++
-+-+-+-+++-++---+++++-+-+-+-+-
--+++--+++++---+++-----+-+++--
++++-++---+--++---++-++-+-+---
-+-++++++-+-++++---+++-+-++--+
+++++-++--++---+++-++--+++----
+++++--+++-----+++-++++++-+--+
-+-+++++---++-+-+---+--++-----
--+--+-+++++------++-++++--+++
+-++--+++--++-++---++--+++-+++
+--++---+-+-+++++---++----++--
-+++-+++++--+-+++-++--++++++++
-+++++-+-+-----+++++----+-++-+
-++--+++-+--++-+++-+--+-+-++++
------+-++++++--++-+++++---++-
--+---+--+---+-+--+--+++--+++-
--+------+--++-+-++--++--+--++
----+----+---+---+---+++-++--+
++-----+++-+-+-+-+-+-++++-+--+
\end{MyVerb}
\caption{$\frac{J}{kT}=0.2$}
\end{subfigure}
\end{figure}
\end{document}
答案2
不需要任何包,除了与当前任务无关的和xcolor
。subcaption
relsize
\activeplus
我给出了两个例子,在第二个例子中,\activeminus
和的定义\specialinputfont
发生了变化,但定义可能应该是唯一的并放在序言中。
\documentclass[a4paper,11pt]{article}
\usepackage{xcolor}
\usepackage{caption,subcaption}
\usepackage{relsize}
\usepackage{filecontents}
\begin{filecontents*}{j0.2000_B0.0000_sweeps500_avaft100}
--+-+---+-+-----+++++-+++-+++-
+--++---++-+-+++--++++++-++--+
-+---+--+-+++++-+-+--+-+-++-+-
+-+---++++-+-++-+++-++--++-+++
+-++++++++--++-++++-+++++++++-
---++++--+--+---++----+---+++-
---+------+-+--++--++-+++++--+
++------+++---+--+---+++-+--+-
+--+++-+++--+--+-+-+++-------+
-+--+-++-++-+------+--+--+++++
-------++---++--++---+-+-+---+
++++++--+++-+--+-+-++++--++-++
-+-+-+-+++-++---+++++-+-+-+-+-
--+++--+++++---+++-----+-+++--
++++-++---+--++---++-++-+-+---
-+-++++++-+-++++---+++-+-++--+
+++++-++--++---+++-++--+++----
+++++--+++-----+++-++++++-+--+
-+-+++++---++-+-+---+--++-----
--+--+-+++++------++-++++--+++
+-++--+++--++-++---++--+++-+++
+--++---+-+-+++++---++----++--
-+++-+++++--+-+++-++--++++++++
-+++++-+-+-----+++++----+-++-+
-++--+++-+--++-+++-+--+-+-++++
------+-++++++--++-+++++---++-
--+---+--+---+-+--+--+++--+++-
--+------+--++-+-++--++--+--++
----+----+---+---+---+++-++--+
++-----+++-+-+-+-+-+-++++-+--+
\end{filecontents*}
\newcommand{\specialinput}[1]{%
\begingroup
\activateplus
\activateminus
\par\addvspace{\topsep}
\specialinputfont\obeylines
\input{#1}%
\par\addvspace{\topsep}
\endgroup
}
\newcommand{\activateplus}{%
\begingroup\lccode`~=`+\lowercase{\endgroup\let~}\activeplus
\catcode`+=\active
}
\newcommand{\activateminus}{%
\begingroup\lccode`~=`-\lowercase{\endgroup\let~}\activeminus
\catcode`-=\active
}
%%% change here the definitions
\newcommand{\specialinputfont}{\ttfamily\relsize{-3}}
\newcommand{\activeplus}{\textcolor{blue}{+}}
\newcommand{\activeminus}{\textcolor{red}{-}}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}{0.48\textwidth}
\centering
\specialinput{j0.2000_B0.0000_sweeps500_avaft100}
\caption{$\frac{J}{kT}=0.2$}
\end{subfigure}\hfill
\begin{subfigure}{0.48\textwidth}
\centering
%%% change the definitions to make another example
\setlength{\fboxsep}{1pt}
\renewcommand{\activeplus}{\colorbox{red!70!black}{\textcolor{white}{+}}}
\renewcommand{\activeminus}{\colorbox{cyan}{\textcolor{black}{-}}}
\renewcommand{\specialinputfont}{\ttfamily\relsize{-3}\offinterlineskip}
\specialinput{j0.2000_B0.0000_sweeps500_avaft100}
\caption{$\frac{J}{kT}=0.2$}
\end{subfigure}%
\end{figure}
\end{document}
答案3
在这里,我使用主动字符表示加号和减号,并使用verbatimbox
包裹将物品放入盒子中,然后可以在图形中调用。可以使用和打开或关闭主动编码\colorsymon
符号\colorsymoff
。
\documentclass[a4paper,11pt]{article}
\usepackage{verbatimbox}
\usepackage{xcolor}
\let\svplus+
\let\svminus-
\catcode`+=\active
\catcode`-=\active
\def\colorsymon{%
\catcode`+=\active\def+{\textcolor{red}{\ttfamily\svplus}}%
\catcode`-=\active\def-{\textcolor{cyan!40}{\ttfamily\svminus}}%
}
\def\colorsymoff{%
\catcode`+=12\let+\svplus%
\catcode`-=12\let-\svminus%
}
\catcode`+=12
\catcode`-=12
\begin{document}
\colorsymon
\begin{verbbox}[\colorsymon]
- - + - + - - - + - + - - - - - + + + + + - + + + - + + + -
+ - - + + - - - + + - + - + + + - - + + + + + + - + + - - +
- + - - - + - - + - + + + + + - + - + - - + - + - + + - + -
+ - + - - - + + + + - + - + + - + + + - + + - - + + - + + +
+ - + + + + + + + + - - + + - + + + + - + + + + + + + + + -
- - - + + + + - - + - - + - - - + + - - - - + - - - + + + -
- - - + - - - - - - + - + - - + + - - + + - + + + + + - - +
+ + - - - - - - + + + - - - + - - + - - - + + + - + - - + -
+ - - + + + - + + + - - + - - + - + - + + + - - - - - - - +
- + - - + - + + - + + - + - - - - - - + - - + - - + + + + +
- - - - - - - + + - - - + + - - + + - - - + - + - + - - - +
+ + + + + + - - + + + - + - - + - + - + + + + - - + + - + +
- + - + - + - + + + - + + - - - + + + + + - + - + - + - + -
- - + + + - - + + + + + - - - + + + - - - - - + - + + + - -
+ + + + - + + - - - + - - + + - - - + + - + + - + - + - - -
- + - + + + + + + - + - + + + + - - - + + + - + - + + - - +
+ + + + + - + + - - + + - - - + + + - + + - - + + + - - - -
+ + + + + - - + + + - - - - - + + + - + + + + + + - + - - +
- + - + + + + + - - - + + - + - + - - - + - - + + - - - - -
- - + - - + - + + + + + - - - - - - + + - + + + + - - + + +
+ - + + - - + + + - - + + - + + - - - + + - - + + + - + + +
+ - - + + - - - + - + - + + + + + - - - + + - - - - + + - -
- + + + - + + + + + - - + - + + + - + + - - + + + + + + + +
- + + + + + - + - + - - - - - + + + + + - - - - + - + + - +
- + + - - + + + - + - - + + - + + + - + - - + - + - + + + +
- - - - - - + - + + + + + + - - + + - + + + + + - - - + + -
- - + - - - + - - + - - - + - + - - + - - + + + - - + + + -
- - + - - - - - - + - - + + - + - + + - - + + - - + - - + +
- - - - + - - - - + - - - + - - - + - - - + + + - + + - - +
+ + - - - - - + + + - + - + - + - + - + - + + + + - + - - +
\end{verbbox}
\colorsymoff
\begin{figure}[!ht]
\centering
\centering
\theverbbox
\caption{$\frac{J}{kT}=0.2$}
\end{figure}
\begin{figure}[!ht]
\centering
\centering
\colorsymon
\verbfilebox[\colorsymon]{plusminus}
\theverbbox
\colorsymoff
\caption{$\frac{J}{kT}=0.2$}
\end{figure}
\end{document}
并输入文件plusminus.tex:
并获得全彩色效果...(编辑以减少代码大小)
\documentclass[a4paper,11pt]{article}
\usepackage{verbatimbox}
\usepackage{xcolor}
%ACTIVE PLUS AND MINUS SIGNS
\let\svplus+
\let\svminus-
\catcode`+=\active
\catcode`-=\active
\def\colorsymon{%
\catcode`+=\active\def+{\usebox{\myplus}}%
\catcode`-=\active\def-{\usebox{\myminus}}%
}
\def\colorsymoff{%
\catcode`+=12\let+\svplus%
\catcode`-=12\let-\svminus%
}
\catcode`+=12
\catcode`-=12
% DEFINE \myplus AND \myminus IN LITTLE BOXES
\def\mysize{\scriptsize}
\fboxrule=0pt\fboxsep=0pt\relax
\newsavebox\myplus\newsavebox\myminus
\savebox{\myplus}{\colorbox{cyan}{\mysize\makebox[\baselineskip]{\strut\textcolor{black}{\ttfamily+}}}}
\savebox{\myminus}{\colorbox{red}{\mysize\makebox[\baselineskip]{\strut\textcolor{white}{\ttfamily-}}}}
\begin{document}
\colorsymon
\begin{verbbox}[\mysize\colorsymon]
--+-+---+-+-----+++++-+++-+++-
+--++---++-+-+++--++++++-++--+
-+---+--+-+++++-+-+--+-+-++-+-
+-+---++++-+-++-+++-++--++-+++
+-++++++++--++-++++-+++++++++-
---++++--+--+---++----+---+++-
---+------+-+--++--++-+++++--+
++------+++---+--+---+++-+--+-
+--+++-+++--+--+-+-+++-------+
-+--+-++-++-+------+--+--+++++
-------++---++--++---+-+-+---+
++++++--+++-+--+-+-++++--++-++
-+-+-+-+++-++---+++++-+-+-+-+-
--+++--+++++---+++-----+-+++--
++++-++---+--++---++-++-+-+---
-+-++++++-+-++++---+++-+-++--+
+++++-++--++---+++-++--+++----
+++++--+++-----+++-++++++-+--+
-+-+++++---++-+-+---+--++-----
--+--+-+++++------++-++++--+++
+-++--+++--++-++---++--+++-+++
+--++---+-+-+++++---++----++--
-+++-+++++--+-+++-++--++++++++
-+++++-+-+-----+++++----+-++-+
-++--+++-+--++-+++-+--+-+-++++
------+-++++++--++-+++++---++-
--+---+--+---+-+--+--+++--+++-
--+------+--++-+-++--++--+--++
----+----+---+---+---+++-++--+
++-----+++-+-+-+-+-+-++++-+--+
\end{verbbox}
\colorsymoff
\begin{figure}[!ht]
\centering
\centering
\theverbbox
\caption{$\frac{J}{kT}=0.2$}
\end{figure}
\end{document}