Как сопоставить именованные сущности HTML с командами LaTeX?

Как сопоставить именованные сущности HTML с командами LaTeX?

В частности, я хотел бы заполнить эту таблицу:

symbol    html entity    LaTeX command
 \deg        °       \begin{alltt}\deg{alltt}

Так что у меня есть запись для каждой именованной сущности HTML, перечисленной вофициальные характеристики.

Я понимаю, что не для всех из них есть сопоставления, но чем больше, тем лучше.

Мне это нужно для проверки соответствия исходного документа, который должен быть опубликован как в HTML, так и в LaTeX; исходный документ может уже содержать именованные сущности HTML. Поэтому мне нужна таблица сопоставлений, чтобы предоставить преобразования или выдать предупреждения о соответствии для тех, которые не сопоставлены.

решение1

В ConTeXt char-ent.luaфайл содержит список всех сущностей HTML. Вы можете получить к ним доступ с помощью таблицы characters.entities. Например, следующий код выводит все сущности и их значения на экран.

\starttext
  \startluacode
      local entities = characters.entities
        for name, value in next, entities do
            print(name,value)
        end
  \stopluacode
\stoptext

Сущности не переводятся в соответствующую команду TeX, а переводятся в соответствующий символ unicode. Если вам нужно соответствующее имя TeX для символа, вы можете выполнить поиск в characters.dataтаблице (определено в char-def.lua)

\starttext
  \startluacode
      local data = characters.data
      local function context_name(value)
          value = data[value]
          if value then
              if value.contextname then
                  return value.contextname 
              elseif value.mathname then
                  return value.mathname
              elseif value.mathspec then
                  return value.mathspec[1].name
              else
                return "not defined"
              end
          else
            return "not defined"
          end
      end
      local entities = characters.entities
        for name, value in next, entities do
            print(name,value, context_name(value))
        end
  \stopluacode
\stoptext

Итоговый список:здесь. Я не знаю, следует ли LaTeX одному и тому же соглашению об именовании для всех команд.

решение2

Чтобы закрыть эту тему, мой первоначальный вопрос был о сопоставлении сущностей HTML 4.0 с LaTeX. Ответ Адитьи предоставляет возможность сопоставления гораздо более широкого диапазона именованных символьных сущностей.

Я использовал набор данных Адитьи для создания отображений только для HTML 4.0, как показано ниже. Если его нет в списке, то отображения нет (или я напутал с сокращением набора данных).

Пожалуйста, смотрите комментарии — эта таблица имеет ценность только в ConTeXt.

    HTML 4.0 / LaTeX
    Aacute  /  Aacute
    aacute  /  aacute
    Acirc  /  Acircumflex
    acirc  /  acircumflex
    acute  /  textacute
    AElig  /  AEligature
    aelig  /  aeligature
    Agrave  /  Agrave
    agrave  /  agrave
    alefsym  /  aleph
    Alpha  /  greekAlpha
    alpha  /  greekalpha
    and  /  wedge
    ang  /  angle
    Aring  /  Aring
    aring  /  aring
    asymp  /  approx
    Atilde  /  Atilde
    atilde  /  atilde
    Auml  /  Adiaeresis
    auml  /  adiaeresis
    bdquo  /  quotedblbase
    Beta  /  greekBeta
    beta  /  greekbeta
    brvbar  /  textbrokenbar
    bull  /  textbullet
    cap  /  cap
    Ccedil  /  Ccedilla
    ccedil  /  ccedilla
    cedil  /  textcedilla
    cent  /  textcent
    Chi  /  greekChi
    chi  /  greekchi
    circ  /  textcircumflex
    clubs  /  clubsuit
    cong  /  approxEq
    copy  /  copyright
    crarr  /  carriagereturn
    cup  /  cup
    curren  /  textcurrency
    dagger  /  textdag
    Dagger  /  textddag
    darr  /  downarrow
    dArr  /  Downarrow
    deg  /  textdegree
    Delta  /  greekDelta
    delta  /  greekdelta
    diams  /  blacklozenge
    divide  /  textdiv
    Eacute  /  Eacute
    eacute  /  eacute
    Ecirc  /  Ecircumflex
    ecirc  /  ecircumflex
    Egrave  /  Egrave
    egrave  /  egrave
    empty  /  emptyset
    emsp  /  emspace
    ensp  /  enspace
    Epsilon  /  greekEpsilon
    epsilon  /  greekepsilon
    equiv  /  equiv
    Eta  /  greekEta
    eta  /  greeketa
    ETH  /  Eth
    eth  /  eth
    Euml  /  Ediaeresis
    euml  /  ediaeresis
    exist  /  exists
    fnof  /  fhook
    forall  /  forall
    frac12  /  onehalf
    frac14  /  onequarter
    frac34  /  threequarter
    frasl  /  textfraction
    Gamma  /  greekGamma
    gamma  /  greekgamma
    ge  /  geq
    gt  /  gt
    harr  /  leftrightarrow
    hArr  /  Leftrightarrow
    hellip  /  textellipsis
    Iacute  /  Iacute
    iacute  /  iacute
    Icirc  /  Icircumflex
    icirc  /  icircumflex
    iexcl  /  exclamdown
    Igrave  /  Igrave
    igrave  /  igrave
    image  /  Im
    infin  /  infty
    int  /  intop
    Iota  /  greekIota
    iota  /  greekiota
    iquest  /  questiondown
    isin  /  in
    Iuml  /  Idiaeresis
    iuml  /  idiaeresis
    Kappa  /  greekKappa
    kappa  /  greekkappa
    Lambda  /  greekLambda
    lambda  /  greeklambda
    lang  /  langle
    laquo  /  leftguillemot
    larr  /  leftarrow
    lArr  /  Leftarrow
    lceil  /  lceiling
    ldquo  /  quotedblleft
    le  /  leq
    lfloor  /  lfloor
    lowast  /  ast
    loz  /  lozenge
    lsaquo  /  guilsingleleft
    lsquo  /  quoteleft
    lt  /  lt
    macr  /  textmacron
    mdash  /  emdash
    micro  /  textmu
    middot  /  periodcentered
    Mu  /  greekMu
    mu  /  greekmu
    nbsp  /  nobreakspace
    ndash  /  endash
    ne  /  neq
    ni  /  ni
    not  /  textlognot
    notin  /  nin
    nsub  /  nsubset
    Ntilde  /  Ntilde
    ntilde  /  ntilde
    Nu  /  greekNu
    nu  /  greeknu
    Oacute  /  Oacute
    oacute  /  oacute
    Ocirc  /  Ocircumflex
    ocirc  /  ocircumflex
    OElig  /  OEligature
    oelig  /  oeligature
    Ograve  /  Ograve
    ograve  /  ograve
    Omega  /  greekOmega
    omega  /  greekomega
    Omicron  /  greekOmicron
    omicron  /  greekomicron
    oplus  /  oplus
    or  /  vee
    ordf  /  ordfeminine
    ordm  /  ordmasculine
    Oslash  /  Ostroke
    oslash  /  ostroke
    Otilde  /  Otilde
    otilde  /  otilde
    otimes  /  otimes
    Ouml  /  Odiaeresis
    ouml  /  odiaeresis
    para  /  paragraphmark
    part  /  partial
    permil  /  perthousand
    perp  /  bot
    Phi  /  greekPhi
    phi  /  greekphi
    Pi  /  greekPi
    pi  /  greekpi
    piv  /  greekpialt
    plusmn  /  textpm
    pound  /  textsterling
    prime  /  prime
    Prime  /  doubleprime
    prod  /  prod
    prop  /  propto
    Psi  /  greekPsi
    psi  /  greekpsi
    radic  /  surd
    rang  /  rangle
    raquo  /  rightguillemot
    rarr  /  rightarrow
    rArr  /  Rightarrow
    rceil  /  rceiling
    rdquo  /  quotedblright
    real  /  Re
    reg  /  registered
    rfloor  /  rfloor
    Rho  /  greekRho
    rho  /  greekrho
    rsaquo  /  guilsingleright
    rsquo  /  quoteright
    sbquo  /  quotesinglebase
    Scaron  /  Scaron
    scaron  /  scaron
    sdot  /  cdot
    sect  /  sectionmark
    shy  /  softhyphen
    Sigma  /  greekSigma
    sigma  /  greeksigma
    sigmaf  /  greekfinalsigma
    sim  /  sim
    spades  /  spadesuit
    sub  /  subset
    sube  /  subseteq
    sum  /  sum
    sup  /  supset
    sup1  /  onesuperior
    sup2  /  twosuperior
    sup3  /  threesuperior
    supe  /  supseteq
    szlig  /  ssharp
    Tau  /  greekTau
    tau  /  greektau
    there4  /  therefore
    Theta  /  greekTheta
    theta  /  greektheta
    thetasym  /  greekthetaalt
    thinsp  /  breakablethinspace
    THORN  /  Thorn
    thorn  /  thorn
    tilde  /  texttilde
    times  /  textmultiply
    trade  /  trademark
    Uacute  /  Uacute
    uacute  /  uacute
    uarr  /  uparrow
    uArr  /  Uparrow
    Ucirc  /  Ucircumflex
    ucirc  /  ucircumflex
    Ugrave  /  Ugrave
    ugrave  /  ugrave
    uml  /  textdiaeresis
    Upsilon  /  greekUpsilon
    upsilon  /  greekupsilon
    Uuml  /  Udiaeresis
    uuml  /  udiaeresis
    weierp  /  wp
    Xi  /  greekXi
    xi  /  greekxi
    Yacute  /  Yacute
    yacute  /  yacute
    yen  /  textyen
    yuml  /  ydiaeresis
    Yuml  /  Ydiaeresis
    Zeta  /  greekZeta
    zeta  /  greekzeta
    zwj  /  zwj
    zwnj  /  zwnj

решение3

Вот диаграмма:Символьные сущности ISO и их эквиваленты LATEXВидар Бронкен Гундерсен и Руне Матисен. Исходный материал здесь:http://www.bitjungle.com/isoent/- включая большой XML-файл с сопоставлениями между различными форматами.

Те же люди превратили это в программу на Perl, доступную здесь:http://llg.cubic.org/docs/ent2latex.html(отэтот ответкКак найти символ или определить математический символ или знак?.)

А вот еще один список:http://www.w3.org/Math/characters/unicode.xml, и те же данные, скомпилированные в Python:https://gist.github.com/piquadrat/798549

решение4

Что-то вроде этого должно охватывать наиболее распространенные случаи.

\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{array,booktabs}
\newcommand{\entity}[2]{#1 & \ & \verb}

\begin{document}

\begin{tabular}{l>{\ttfamily}ll}
\toprule
Symbol &\multicolumn{1}{l}{HTML entity} & \LaTeX\ command \\
\midrule
\entity{\'e}{eacute}|\'e| \\
\entity{\TH}{THORN}|\TH| \\
\bottomrule
\end{tabular}

\end{document}

Связанный контент