PGFPlots:使用十六进制浮点数

PGFPlots:使用十六进制浮点数

我正在使用otfprofile命令从一些数据生成包含 PGFPlots 的 LaTeX 文件。不幸的是,程序输出十六进制浮点符号(例如0x1.ap+6),lualatex(版本 0.95.0)和 pdflatex(版本 3.14159265-2.6-1.40.17)都无法识别。

我该如何解决这个问题?

编辑:

\documentclass[a4paper,10pt]{article}
\nonstopmode
\usepackage{amssymb}
\usepackage{longtable}
\usepackage{ifthen}
\usepackage{pgfplots}
\usepackage[linkcolor=red,pagecolor=red,pdfborder={1 1 1}]{hyperref}
\pgfplotsset{compat=1.4}

\textwidth=16.1cm \textheight=27.0cm \topmargin=-1.8cm
\oddsidemargin=0.1cm \evensidemargin=0.1cm \footskip=45pt

\begin{document}

\begin{tikzpicture}
\begin{axis}[
  width=0x1p+4cm, height=0x1p+3cm,
  axis x line=bottom,x axis line style={-,line width=1pt},
  axis y line=left,y axis line style={-,line width=1pt},
  enlarge y limits={value=0.02,upper},
  ymin=0,ymajorgrids,xminorgrids,minor x tick num=1,
title=P2P Number of Messages (average)
,ylabel={},
x tick label style={rotate=90,anchor=east,font=\ttfamily \footnotesize},
tick align=outside,
tick style={line cap=round,line width=0.5pt,color=black,
      major tick length=4pt,minor tick length=8pt},
major x tick style={line width=1, color=white},
scaled y ticks=true,
bar width=8pt,
minor grid style={color=gray, line width=0.5pt, dashed},
xmin=-0.5,
xmax=15.5,
xtick={0,...,15},
xticklabels={
},]
\addplot[ybar, draw=black, mark=none, fill=red, xshift=-4]
  coordinates{
(0,0x1.38p+8)};
\addplot[ybar, draw=black, mark=none, fill=blue, xshift=4]
  coordinates{
(0,0x1.ap+6)};
\end{axis}
\end{tikzpicture}

\end{document}

这是几张图之一。错误消息:

Package PGF Math Error: Unknown operator `.' or `.3' (in '0x1.38p+8'). (0,0x1.38p+8)};

该符号类似于1.3e+31.3 * 10^3,只是采用十六进制数。

答案1

感谢您的意见。

我用一个小的 Python 程序解决了这个问题,该程序将所有出现的十六进制数转换为十进制表示。结果编译时没有任何进一步的错误。

如果有人遇到类似的问题,这里是代码:

#!/usr/bin/env python

import sys, re

resultFile = open(sys.argv[1].split('.')[0] + "_processed.tex", "w")
for row in open(sys.argv[1]):
    resultFile.write( re.sub('0x[0-9a-fA-F]+\.?[0-9a-fA-F]*p[+-][0-9]+', lambda m: str(float.fromhex(m.group())), row) )

用法:python <scriptname> <file>,输出存储在<file>_processed.tex

相关内容